1. Performance e Drupal
Come individuare i colli di bottiglia della vostra
applicazione (ed evitare che ne abbia in futuro)
2. Chi sono
Vincenzo Di Biaggio
@vincenzodb
Software Developer @SparkFabrik - Milano
FB: https://www.facebook.com/sparkfabrik/
Software: https://github.com/vincenzodibiaggio
Videogiochi: http://steamcommunity.com/id/vincenzodb/
Foto: https://500px.com/vincenzodb
Musica: http://www.last.fm/it/user/vincenzodb
3. - Il cliente chiama perchè il sito è lento
- Una volta chiusa la chiamata, l’intero ufficio si riunisce per pregare tenendosi per
mano
- Dopo N ore ci si rende conto che si può migliorare la situazione SE si riesce ad
identificare il problema
- Identificato il problema, si scrive del codice migliore
Il problema
4. Identificare e circoscrivere il problema / 1
- OGGI diamo per scontato che server e infrastruttura siano
adeguati per sopportare il carico
- Le cache sono attive? Anche quelle di views? E quelle dei
blocchi?
- CSS e Js vengono aggregati?
- Le immagini vengono gestite con degli opportuni image styles?
- Moduli come update_status o inerenti lo sviluppo (es. devel) sono
disattivati?
5. Sì, è risposta a tutte le domande?
Ora potete iniziare a pregare sul serio
6. Identificare e circoscrivere il problema / 2
- Disattivazione dei blocchi comuni a molte pagine
- Controllo risorse esterne
- Eliminare i dati superflui (field nelle query, field nelle view, ecc)
7. Principali colli di bottiglia
- Non utilizzare molti entity_load (node_load, taxonomy_term_load,
ecc.)
- Preferire sempre node_load_multiple
- Se possibile, rimpiazzare i _load con delle query
- Usare il caching di views al meglio
- Utilizzare le differenze tra il caching dei risultati e del rendered output a nostro
vantaggio
- Staticizzare i dati necessari frequentemente
8. Trovare i colli di bottiglia
La parola chiave è profilare.
Profilare quanto l’applicazione usa il database
Profilare quante volte effettuiamo operazioni identiche
Testare il carico dell’applicazione sui server
Testare l’ottimizzazione del Front End