SlideShare ist ein Scribd-Unternehmen logo
1 von 12
Performance e Drupal
Come individuare i colli di bottiglia della vostra
applicazione (ed evitare che ne abbia in futuro)
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
- 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
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?
Sì, è risposta a tutte le domande?
Ora potete iniziare a pregare sul serio
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)
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
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
DEMO
Links
DSC Profiling: https://gitlab.sparkfabrik.com/vincenzo.dibiaggio/dsc-
profiling
YSlow: http://yslow.org/
Google Page Speed: https://developers.google.com/speed/pagespeed/
Developer Toolbar del vostro browser, tab ‘Network’
Extended Statusbar per Firefox
Hints su ottimizzazione delle view:
https://www.silviogutierrez.com/blog/optimizing-drupal-views-right-way/
High Performance Drupal (libro): https://www.drupal.org/node/2119971
Grazie
Vincenzo Di Biaggio
@vincenzodb
Software Developer @SparkFabrik - Milano
FB: https://www.facebook.com/sparkfabrik/

Weitere ähnliche Inhalte

Andere mochten auch

Sprenger genser 001-234
Sprenger genser 001-234Sprenger genser 001-234
Sprenger genser 001-234
Kristin Gjerde
 

Andere mochten auch (20)

Dn12_u3_a6_sgaa
Dn12_u3_a6_sgaaDn12_u3_a6_sgaa
Dn12_u3_a6_sgaa
 
Dn 12 u3_act17_sgaa
Dn 12 u3_act17_sgaaDn 12 u3_act17_sgaa
Dn 12 u3_act17_sgaa
 
Deber deontologia
Deber deontologiaDeber deontologia
Deber deontologia
 
Plan Nacional del Buen Vivir 2013-2017
Plan Nacional del Buen Vivir 2013-2017Plan Nacional del Buen Vivir 2013-2017
Plan Nacional del Buen Vivir 2013-2017
 
сзао платные парковки благоустройство2016
сзао платные парковки благоустройство2016сзао платные парковки благоустройство2016
сзао платные парковки благоустройство2016
 
Políticas y lineamientos
Políticas y lineamientosPolíticas y lineamientos
Políticas y lineamientos
 
Dn 12 u3_act25_sgaa
Dn 12 u3_act25_sgaaDn 12 u3_act25_sgaa
Dn 12 u3_act25_sgaa
 
One Large Data Lake, Hold the Hype
One Large Data Lake, Hold the HypeOne Large Data Lake, Hold the Hype
One Large Data Lake, Hold the Hype
 
Yuly base de datos
Yuly base de datosYuly base de datos
Yuly base de datos
 
The Furture of Direct Mail/Marketing
The Furture of Direct Mail/MarketingThe Furture of Direct Mail/Marketing
The Furture of Direct Mail/Marketing
 
Políticas y lineamientos
Políticas y lineamientosPolíticas y lineamientos
Políticas y lineamientos
 
Peer To Peer (ReDEs)
Peer To Peer (ReDEs)Peer To Peer (ReDEs)
Peer To Peer (ReDEs)
 
Dn 12 u3_act23_sgaa
Dn 12 u3_act23_sgaaDn 12 u3_act23_sgaa
Dn 12 u3_act23_sgaa
 
Sprenger genser 001-234
Sprenger genser 001-234Sprenger genser 001-234
Sprenger genser 001-234
 
Virtual Financial ! Powerful Business Finance
Virtual Financial ! Powerful Business FinanceVirtual Financial ! Powerful Business Finance
Virtual Financial ! Powerful Business Finance
 
Dn 12 u3_act9
Dn 12 u3_act9Dn 12 u3_act9
Dn 12 u3_act9
 
Políticas y lineamientos
Políticas y lineamientosPolíticas y lineamientos
Políticas y lineamientos
 
Plan de investigación en la modalidad de proyecto
Plan de investigación en la modalidad de proyectoPlan de investigación en la modalidad de proyecto
Plan de investigación en la modalidad de proyecto
 
Dn12_u3_a8_sgaa
Dn12_u3_a8_sgaaDn12_u3_a8_sgaa
Dn12_u3_a8_sgaa
 
Dn 12 u3_act22_sgaa
Dn 12 u3_act22_sgaaDn 12 u3_act22_sgaa
Dn 12 u3_act22_sgaa
 

Ähnlich wie Performance e Drupal

Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTML
Sinergia Totale
 
Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...
Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...
Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...
ciakana
 
Be02 portare la nostra applicazione su azure
Be02   portare la nostra applicazione su azureBe02   portare la nostra applicazione su azure
Be02 portare la nostra applicazione su azure
DotNetCampus
 
... thinking about Microformats!
... thinking about Microformats!... thinking about Microformats!
... thinking about Microformats!
Stefano Fago
 

Ähnlich wie Performance e Drupal (20)

Working between the clouds
Working between the cloudsWorking between the clouds
Working between the clouds
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizio
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTML
 
Working between the clouds (versione completa)
Working between the clouds (versione completa)Working between the clouds (versione completa)
Working between the clouds (versione completa)
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...
 
Applicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore RomeoApplicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore Romeo
 
Wp app studio_new
Wp app studio_newWp app studio_new
Wp app studio_new
 
Help Framakey WebApps
Help Framakey WebAppsHelp Framakey WebApps
Help Framakey WebApps
 
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018
Technical SEO Audit Checklist - Giovanni Sacheli Search Marketing Connect 2018
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web App
 
Enterprise ASP.NET Web Forms 4.0
Enterprise ASP.NET Web Forms 4.0Enterprise ASP.NET Web Forms 4.0
Enterprise ASP.NET Web Forms 4.0
 
Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...
Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...
Progettazione e realizzazione di un nodo di elaborazione per il rilevamento d...
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
 
SMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA ItalySMAU Milano 2014 GAE 24/10/2014 - IWA Italy
SMAU Milano 2014 GAE 24/10/2014 - IWA Italy
 
Stanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveStanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al Prgressive
 
I linguaggi del web - seconda edizione (3° giornata)
I linguaggi del web - seconda edizione (3° giornata)I linguaggi del web - seconda edizione (3° giornata)
I linguaggi del web - seconda edizione (3° giornata)
 
Be02 portare la nostra applicazione su azure
Be02   portare la nostra applicazione su azureBe02   portare la nostra applicazione su azure
Be02 portare la nostra applicazione su azure
 
Come mettere in sicurezza le applicazioni legacy, un approccio pragmatico
Come mettere in sicurezza le applicazioni legacy, un approccio pragmaticoCome mettere in sicurezza le applicazioni legacy, un approccio pragmatico
Come mettere in sicurezza le applicazioni legacy, un approccio pragmatico
 
... thinking about Microformats!
... thinking about Microformats!... thinking about Microformats!
... thinking about Microformats!
 

Performance e Drupal

  • 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
  • 10.
  • 11. Links DSC Profiling: https://gitlab.sparkfabrik.com/vincenzo.dibiaggio/dsc- profiling YSlow: http://yslow.org/ Google Page Speed: https://developers.google.com/speed/pagespeed/ Developer Toolbar del vostro browser, tab ‘Network’ Extended Statusbar per Firefox Hints su ottimizzazione delle view: https://www.silviogutierrez.com/blog/optimizing-drupal-views-right-way/ High Performance Drupal (libro): https://www.drupal.org/node/2119971
  • 12. Grazie Vincenzo Di Biaggio @vincenzodb Software Developer @SparkFabrik - Milano FB: https://www.facebook.com/sparkfabrik/