SlideShare a Scribd company logo
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/

More Related Content

Viewers also liked

Dn12_u3_a6_sgaa
Dn12_u3_a6_sgaaDn12_u3_a6_sgaa
Dn12_u3_a6_sgaa
Aaron Alexis Soto Gomez
 
Dn 12 u3_act17_sgaa
Dn 12 u3_act17_sgaaDn 12 u3_act17_sgaa
Dn 12 u3_act17_sgaa
Aaron Alexis Soto Gomez
 
Deber deontologia
Deber deontologiaDeber deontologia
Deber deontologia
stevronal
 
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
Isabel Carpio
 
сзао платные парковки благоустройство2016
сзао платные парковки благоустройство2016сзао платные парковки благоустройство2016
сзао платные парковки благоустройство2016
Дмитрий Шардик
 
Políticas y lineamientos
Políticas y lineamientosPolíticas y lineamientos
Políticas y lineamientos
Isabel Carpio
 
Dn 12 u3_act25_sgaa
Dn 12 u3_act25_sgaaDn 12 u3_act25_sgaa
Dn 12 u3_act25_sgaa
Aaron Alexis Soto Gomez
 
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
Koverse, Inc.
 
Yuly base de datos
Yuly base de datosYuly base de datos
Yuly base de datos
juanmanuel_29
 
The Furture of Direct Mail/Marketing
The Furture of Direct Mail/MarketingThe Furture of Direct Mail/Marketing
The Furture of Direct Mail/Marketing
Hans Smellinckx
 
Políticas y lineamientos
Políticas y lineamientosPolíticas y lineamientos
Políticas y lineamientos
Isabel Carpio
 
Peer To Peer (ReDEs)
Peer To Peer (ReDEs)Peer To Peer (ReDEs)
Peer To Peer (ReDEs)
Aaron Alexis Soto Gomez
 
Dn 12 u3_act23_sgaa
Dn 12 u3_act23_sgaaDn 12 u3_act23_sgaa
Dn 12 u3_act23_sgaa
Aaron Alexis Soto Gomez
 
Sprenger genser 001-234
Sprenger genser 001-234Sprenger genser 001-234
Sprenger genser 001-234Kristin Gjerde
 
Virtual Financial ! Powerful Business Finance
Virtual Financial ! Powerful Business FinanceVirtual Financial ! Powerful Business Finance
Virtual Financial ! Powerful Business Finance
Virtual Financial Group
 
Dn 12 u3_act9
Dn 12 u3_act9Dn 12 u3_act9
Políticas y lineamientos
Políticas y lineamientosPolíticas y lineamientos
Políticas y lineamientos
Isabel Carpio
 
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
Isabel Carpio
 
Dn12_u3_a8_sgaa
Dn12_u3_a8_sgaaDn12_u3_a8_sgaa
Dn12_u3_a8_sgaa
Aaron Alexis Soto Gomez
 
Dn 12 u3_act22_sgaa
Dn 12 u3_act22_sgaaDn 12 u3_act22_sgaa
Dn 12 u3_act22_sgaa
Aaron Alexis Soto Gomez
 

Viewers also liked (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
 

Similar to Performance e Drupal

Working between the clouds
Working between the cloudsWorking between the clouds
Working between the clouds
Davide Cerbo
 
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
MongoDB
 
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 HTMLSinergia Totale
 
Working between the clouds (versione completa)
Working between the clouds (versione completa)Working between the clouds (versione completa)
Working between the clouds (versione completa)
Davide Cerbo
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
Andrea Dottor
 
Impara React sfruttando le tecnologie più recenti (Eduard Capanu).pptx
Impara React sfruttando le tecnologie più recenti (Eduard Capanu).pptxImpara React sfruttando le tecnologie più recenti (Eduard Capanu).pptx
Impara React sfruttando le tecnologie più recenti (Eduard Capanu).pptx
EduardCapanu
 
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...
MariaDB plc
 
Applicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore RomeoApplicazioni HTML5 Superveloci - Salvatore Romeo
Applicazioni HTML5 Superveloci - Salvatore Romeo
marcocasario
 
Wp app studio_new
Wp app studio_newWp app studio_new
Wp app studio_new
Piero Sbressa
 
Help Framakey WebApps
Help Framakey WebAppsHelp Framakey WebApps
Help Framakey WebApps
roberto marcolin
 
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
Giovanni Sacheli
 
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
dotnetcode
 
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
Codemotion
 
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
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
dotnetcode
 
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
Paolo Dadda
 
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
Commit University
 
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)
Diego La Monica
 
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 azureDotNetCampus
 
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
Antonio Parata
 

Similar to 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
 
Impara React sfruttando le tecnologie più recenti (Eduard Capanu).pptx
Impara React sfruttando le tecnologie più recenti (Eduard Capanu).pptxImpara React sfruttando le tecnologie più recenti (Eduard Capanu).pptx
Impara React sfruttando le tecnologie più recenti (Eduard Capanu).pptx
 
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
 

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/