SlideShare uma empresa Scribd logo
1 de 60
Optimering av Wordpress
Erik Torsner, Load Impact <erik@loadimpact.com>
Bakgrund
• Bakgrund – varför titta på problemet ?
  • Mer än 22 miljoner bloggar kör Wordpress
  • Oändligt med plugins – kvaliteten varierar
  • Wordpress ”kan allt”
  • Många Wordpressbloggar har problem
• Varför har Wordpress prestandaproblem?
  • Det är ju PHP... en request = en process
  • Oändligt med plugins – kvaliteten varierar
  • Wordpress ”kan allt”
Mäta prestanda med lasttest




 • Prestanda för en användare !=
 prestanda för många användare
Kort om WP-prestanda
• WP har OK databasindex per default – passar bra för mindre siter
• Många plugins som ändrar databasen beter sig ganska städat,
vettiga index osv.
• WP förbrukar dock en del minne. Ca 16 Mb 'out of the box'
   • Många populära plugins ökar på minnesförbrukningen
   aggressivt
   • T.ex All-in-one-SEO,Post-Plugin Library och Similar Posts
   lägger på ca 1Mb vardera
   • WPML – lägger på massvis. Upp till 70 Mb per request
• I många av våra tester visar det sig att det är minnet som är den
trånga resursen i en Wordpressinstallation
Plugins påverkar prestanda




Svarstider med 50 samtidiga användare på en server
                  med 1 GB RAM
Slut på minne (WPML)




 • Funkar helt OK upp till ca 40 användare
 • Vid 50 användare är minnet på servern slut
Hur förbättra prestanda?
  Steg 1: Minimera resurser
  • Databas
          • Är inblandad i alla requests. Har den rätt
            inställingar, tillräckligt med minne osv?
  • Minne
          • Trång resurs för många WP-installationer
          • Lägg en memory_get_peak_usage() i din footer
  • CPU
          • Klassisk flaskhals. Dock troligen inte särskilt
            vanlig orsak till dålig WP-prestanda.
Hur förbättra prestanda?
  Steg 2: Cacha
  • Cacha inte förrän du vet varför du har
  prestandaproblem. Fixa inte en fuktskada med spackel
  och färg...
  • Fundera igenom potentiella nackdelar först
         • Fungerar dina andra plugin?
  • Det finns (minst) ett tiotal cache-plugin till Wp 2.9.1
          • Hyper cache, W3 Total cache, WP Super cache,
            WP Cache, WP Widget cache, DB cache, DB
            cache reloaded, 1 Blog cacher.....
          • Vi har testat 5st ordentligt
Cache plugins




Svarstider med 50 samtidiga användare på en
server med 1 GB RAM
Hur fungerar W3TC?
• Gör allt rätt
   • Komprimerar HTML med gzip
   • Minifierar scrips och stylesheets
   • Bakar ihop flera requests till en enda, t.ex för script
   • Lägger bilder och annan media på CDN
• Kortsluter PHP-stacken
   • Aggressiv cache som får Apache att serva HTML
   utan att behöva dra igång PHP
• Cachar ”allt annat” på disk eller via memcached.
• Stödjer även opcode cachening via bl.a APC
Mer läsning
Om databasoptimering
• http://www.mysqlperformanceblog.com/
Om cachemoduler för Wordpress
• http://www.tutorial9.net/web-tutorials/wordpress-caching-whats-the-best-caching-plugin/
• http://loadimpact.com/blog/tag/wordpress
Om minne för Wordpress
• http://lildude.co.uk/wordpress-is-a-memory-hog
• http://wordpress.org/extend/plugins/tpc-memory-usage/
• http://webjawns.com/2009/08/eaccelerator-reduces-wordpress-memory-usage/
Verktyg för test och mätning
 Ragnar Lönn, Load Impact <ragnar@loadimpact.com>
2008
Laddtiden för landningssidan räknas in
      i AdWords quality score
2008
Laddtiden för landningssidan räknas in
      i AdWords quality score

  Snabbare websida = fler besökare
hittar din sajt via AdWords-annonser
2009
              sänker laddtiden för
sin sida från 7 till 2 sekunder
2009
              sänker laddtiden för
sin sida från 7 till 2 sekunder
   •   +25% page views
2009
              sänker laddtiden för
sin sida från 7 till 2 sekunder
   •   +25% page views

   •   +7-12% intäkter
2009
              sänker laddtiden för
sin sida från 7 till 2 sekunder
   •   +25% page views

   •   +7-12% intäkter

   •   -50% infrastrukturkostnad
2010
Google adds page load time to
     pagerank algorithm
2010
  Google adds page load time to
       pagerank algorithm

  Snabbare websida = fler besökare
hittar din sajt när de söker på Google
Sidanalys
Firebug - http://getfirebug.com/
Sidanalys
Firebug - http://getfirebug.com/
       ySlow - http://developer.yahoo.com/yslow/
ySlow
ySlow
Sidanalys
Firebug - http://getfirebug.com/
       ySlow - http://developer.yahoo.com/yslow/
Sidanalys
Firebug - http://getfirebug.com/
       ySlow - http://developer.yahoo.com/yslow/
       Pagespeed - http://code.google.com/
                 speed/page-speed/
Pagespeed
Extern sidanalys
Extern sidanalys
Pingdom tools, originalet
   http://pingdom.com/tools
Extern sidanalys
Pingdom tools, originalet
   http://pingdom.com/tools


                              • Klarar ej CSS
                              parsning/cascading

                              • Endast från en
                              geografisk punkt
Extern sidanalys
Load Impact Page analyzer
http://loadimpact.com/pageanalyzer.php
Extern sidanalys
Load Impact Page analyzer
http://loadimpact.com/pageanalyzer.php


                                         • Emulerar en mängd
                                         olika klienter

                                         • Simulerar
                                         begränsad bandbredd

                                         • Endast från en
                                         geografisk punkt
Extern sidanalys
Webpagetest.org PageTest
     http://webpagetest.org
Extern sidanalys
Webpagetest.org PageTest
     http://webpagetest.org


                              • Äkta browsers =
                              100%-ig emulering

                              • Screenshots &
                              video från rendrering

                              • Endast IE7/IE8
Extern sidanalys
Webpagetest.org PageTest
     http://webpagetest.org
Extern sidanalys
Webpagetest.org PageTest
     http://webpagetest.org


                              • Jämför rendreringstid för
                              olika sidor
Extern sidanalys
Browsershots.org
http://browsershots.org


                          • Äkta browsers =
                          100%-ig emulering

                          • Screenshots från
                          många olika OS &
                          browsers
Lasttest
   The Grinder
http://grinder.sourceforge.net/
Lasttest
            The Grinder
        http://grinder.sourceforge.net/


• Javabaserad
• Scriptas i Java eller Python (Jython)
• Inspelningsmöjligheter
• Enkelt API
• Aktiv användarbas
• Inget medföljande GUI för konfiguration eller
resultatvisning
Lasttest
OpenSTA
http://opensta.org/
Lasttest
OpenSTA
http://opensta.org/



     • Windowsbaserad (MFC VC++ Win32),
     CORBA
     • Scriptas i eget scriptspråk (SCL)
     • Inbyggt GUI för konfig/visualisering av
     resultat

     • Tidigare versioner har haft
     stabilitetsproblem
Lasttest
          ApacheBench (ab)
http://httpd.apache.org/docs/2.2/programs/ab.html.org/
Lasttest
          ApacheBench (ab)
http://httpd.apache.org/docs/2.2/programs/ab.html.org/



    • Enkel, kommandoradsbaserad applikation
    • Inkluderad i Apache-distributionen
    • Inga scriptmöjligheter
Lasttest online
   Load Impact
   http://loadimpact.com
Lasttest online
   Load Impact
   http://loadimpact.com


                           • Användarvänligt
                           gränssnitt
                           • Gratis för mindre
                           lasttester
                           • Browseroberoende
                           inspelning mha
                           proxylösning
Lasttest online
  Browsermob
   http://browsermob.com
Lasttest online
  Browsermob
   http://browsermob.com


                       • Inspelning med Firefox
                       & Selenium
                       • Lasttest med äkta eller
                       emulerade webläsare

                       • Stöder enbart Firefox
                       för inspelning/
                       uppspelning
Lasttest online
   Loadstorm
   http://loadstorm.com
Lasttest online
   Loadstorm
   http://loadstorm.com


                          • Ingen
                          inspelningsfunktionalitet
Tack för oss
Ragnar Lönn, Load Impact <ragnar@loadimpact.com>
 Erik Torsner, Load Impact <erik@loadimpact.com>
Bonus-slides
OPTIMERA STHLM! Loadimpact
OPTIMERA STHLM! Loadimpact
OPTIMERA STHLM! Loadimpact
OPTIMERA STHLM! Loadimpact
OPTIMERA STHLM! Loadimpact
OPTIMERA STHLM! Loadimpact
OPTIMERA STHLM! Loadimpact

Mais conteúdo relacionado

Destaque (6)

OPTIMERA STHLM! Henrik Nordström
OPTIMERA STHLM! Henrik NordströmOPTIMERA STHLM! Henrik Nordström
OPTIMERA STHLM! Henrik Nordström
 
Optimera STHLM 2011 - Tobias Järlund, Aftonbladet
Optimera STHLM 2011 - Tobias Järlund, AftonbladetOptimera STHLM 2011 - Tobias Järlund, Aftonbladet
Optimera STHLM 2011 - Tobias Järlund, Aftonbladet
 
Optimera STHLM 2011 - Mikael Berggren, Spotify
Optimera STHLM 2011 - Mikael Berggren, SpotifyOptimera STHLM 2011 - Mikael Berggren, Spotify
Optimera STHLM 2011 - Mikael Berggren, Spotify
 
OPTIMERA STHLM! Martin Källström
OPTIMERA STHLM! Martin KällströmOPTIMERA STHLM! Martin Källström
OPTIMERA STHLM! Martin Källström
 
OPTIMERA STHLM! Fleecelabs
OPTIMERA STHLM! FleecelabsOPTIMERA STHLM! Fleecelabs
OPTIMERA STHLM! Fleecelabs
 
OPTIMERA STHLM! Måns Jonasson
OPTIMERA STHLM! Måns JonassonOPTIMERA STHLM! Måns Jonasson
OPTIMERA STHLM! Måns Jonasson
 

Semelhante a OPTIMERA STHLM! Loadimpact

Webboptimering 25 min
Webboptimering 25 minWebboptimering 25 min
Webboptimering 25 min
Fredrik Wendt
 
Virtualenv och Buildout med Django
Virtualenv och Buildout med DjangoVirtualenv och Buildout med Django
Virtualenv och Buildout med Django
Jonas Nockert
 

Semelhante a OPTIMERA STHLM! Loadimpact (20)

VT2018 - DA355A - LocalStorage & Bootstrap
VT2018 - DA355A - LocalStorage & BootstrapVT2018 - DA355A - LocalStorage & Bootstrap
VT2018 - DA355A - LocalStorage & Bootstrap
 
Webboptimering 25 min
Webboptimering 25 minWebboptimering 25 min
Webboptimering 25 min
 
Mindre och snabbare – Cache tips for WordPress developers
Mindre och snabbare – Cache tips for WordPress developersMindre och snabbare – Cache tips for WordPress developers
Mindre och snabbare – Cache tips for WordPress developers
 
jQuery & Ajax
jQuery & AjaxjQuery & Ajax
jQuery & Ajax
 
VT24 - jQuery & Ajax - Flerplattformsapplikationer med webbtekniker
VT24 - jQuery & Ajax - Flerplattformsapplikationer med webbteknikerVT24 - jQuery & Ajax - Flerplattformsapplikationer med webbtekniker
VT24 - jQuery & Ajax - Flerplattformsapplikationer med webbtekniker
 
HT19 - DA354A - Webbprogrammering med bottle
HT19 - DA354A - Webbprogrammering med bottleHT19 - DA354A - Webbprogrammering med bottle
HT19 - DA354A - Webbprogrammering med bottle
 
HT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med PythonHT23 - DA354A - Webbprogrammering med Python
HT23 - DA354A - Webbprogrammering med Python
 
VT2019 - DA355A - jQuery och Ajax
VT2019 - DA355A - jQuery och AjaxVT2019 - DA355A - jQuery och Ajax
VT2019 - DA355A - jQuery och Ajax
 
HT18 - DA354A - Bottle web app
HT18 - DA354A - Bottle web appHT18 - DA354A - Bottle web app
HT18 - DA354A - Bottle web app
 
HT17 - DA354A - Webbapplikation
HT17 - DA354A - WebbapplikationHT17 - DA354A - Webbapplikation
HT17 - DA354A - Webbapplikation
 
VT2018 - DA355A - Phonegap, react, vue.js
VT2018 - DA355A - Phonegap, react, vue.jsVT2018 - DA355A - Phonegap, react, vue.js
VT2018 - DA355A - Phonegap, react, vue.js
 
WebSockets för applikationstestare
WebSockets för applikationstestareWebSockets för applikationstestare
WebSockets för applikationstestare
 
HT15, DA354A - Introduktion till Webbprogrammering - Bottle
HT15, DA354A - Introduktion till Webbprogrammering - BottleHT15, DA354A - Introduktion till Webbprogrammering - Bottle
HT15, DA354A - Introduktion till Webbprogrammering - Bottle
 
Alfresco administration stockholm meetup
Alfresco administration stockholm meetupAlfresco administration stockholm meetup
Alfresco administration stockholm meetup
 
Metodik - Versionshantering, pakethantering, paketering och testning
Metodik - Versionshantering, pakethantering, paketering och testningMetodik - Versionshantering, pakethantering, paketering och testning
Metodik - Versionshantering, pakethantering, paketering och testning
 
HT15, DA354A - Introduktion till Webbprogrammering - Bottle (2)
HT15, DA354A - Introduktion till Webbprogrammering - Bottle (2)HT15, DA354A - Introduktion till Webbprogrammering - Bottle (2)
HT15, DA354A - Introduktion till Webbprogrammering - Bottle (2)
 
HT23 - DA106A - Introduktion till JavaScript
HT23 - DA106A - Introduktion till JavaScriptHT23 - DA106A - Introduktion till JavaScript
HT23 - DA106A - Introduktion till JavaScript
 
Xpages för utvecklare
Xpages för utvecklareXpages för utvecklare
Xpages för utvecklare
 
LocalStorage
LocalStorageLocalStorage
LocalStorage
 
Virtualenv och Buildout med Django
Virtualenv och Buildout med DjangoVirtualenv och Buildout med Django
Virtualenv och Buildout med Django
 

Mais de .SE (Stiftelsen för Internetinfrastruktur)

Mais de .SE (Stiftelsen för Internetinfrastruktur) (12)

Optimera STHLM 2011 - Patrik Wallström, .SE
Optimera STHLM 2011 - Patrik Wallström, .SEOptimera STHLM 2011 - Patrik Wallström, .SE
Optimera STHLM 2011 - Patrik Wallström, .SE
 
Optimera STHLM 2011 - Måns Jonasson
Optimera STHLM 2011 - Måns JonassonOptimera STHLM 2011 - Måns Jonasson
Optimera STHLM 2011 - Måns Jonasson
 
Tobbe Eklöv
Tobbe EklövTobbe Eklöv
Tobbe Eklöv
 
Kurtis Lindqvist
Kurtis LindqvistKurtis Lindqvist
Kurtis Lindqvist
 
Kjell Leknes
Kjell LeknesKjell Leknes
Kjell Leknes
 
Claes Tagemark
Claes TagemarkClaes Tagemark
Claes Tagemark
 
Anders Örtengren
Anders ÖrtengrenAnders Örtengren
Anders Örtengren
 
OPTIMERA STHLM! Jacob Hansson
OPTIMERA STHLM! Jacob HanssonOPTIMERA STHLM! Jacob Hansson
OPTIMERA STHLM! Jacob Hansson
 
OPTIMERA STHLM! Isac Lagerblad
OPTIMERA STHLM! Isac LagerbladOPTIMERA STHLM! Isac Lagerblad
OPTIMERA STHLM! Isac Lagerblad
 
OPTIMERA STHLM! Daniel Stenberg
OPTIMERA STHLM! Daniel StenbergOPTIMERA STHLM! Daniel Stenberg
OPTIMERA STHLM! Daniel Stenberg
 
OPTIMERA STHLM! Stefan Pettersson
OPTIMERA STHLM! Stefan PetterssonOPTIMERA STHLM! Stefan Pettersson
OPTIMERA STHLM! Stefan Pettersson
 
OPTIMERA STHLM! Patrik Wallström
OPTIMERA STHLM! Patrik WallströmOPTIMERA STHLM! Patrik Wallström
OPTIMERA STHLM! Patrik Wallström
 

OPTIMERA STHLM! Loadimpact

  • 1. Optimering av Wordpress Erik Torsner, Load Impact <erik@loadimpact.com>
  • 2. Bakgrund • Bakgrund – varför titta på problemet ? • Mer än 22 miljoner bloggar kör Wordpress • Oändligt med plugins – kvaliteten varierar • Wordpress ”kan allt” • Många Wordpressbloggar har problem • Varför har Wordpress prestandaproblem? • Det är ju PHP... en request = en process • Oändligt med plugins – kvaliteten varierar • Wordpress ”kan allt”
  • 3. Mäta prestanda med lasttest • Prestanda för en användare != prestanda för många användare
  • 4. Kort om WP-prestanda • WP har OK databasindex per default – passar bra för mindre siter • Många plugins som ändrar databasen beter sig ganska städat, vettiga index osv. • WP förbrukar dock en del minne. Ca 16 Mb 'out of the box' • Många populära plugins ökar på minnesförbrukningen aggressivt • T.ex All-in-one-SEO,Post-Plugin Library och Similar Posts lägger på ca 1Mb vardera • WPML – lägger på massvis. Upp till 70 Mb per request • I många av våra tester visar det sig att det är minnet som är den trånga resursen i en Wordpressinstallation
  • 5. Plugins påverkar prestanda Svarstider med 50 samtidiga användare på en server med 1 GB RAM
  • 6. Slut på minne (WPML) • Funkar helt OK upp till ca 40 användare • Vid 50 användare är minnet på servern slut
  • 7. Hur förbättra prestanda? Steg 1: Minimera resurser • Databas • Är inblandad i alla requests. Har den rätt inställingar, tillräckligt med minne osv? • Minne • Trång resurs för många WP-installationer • Lägg en memory_get_peak_usage() i din footer • CPU • Klassisk flaskhals. Dock troligen inte särskilt vanlig orsak till dålig WP-prestanda.
  • 8. Hur förbättra prestanda? Steg 2: Cacha • Cacha inte förrän du vet varför du har prestandaproblem. Fixa inte en fuktskada med spackel och färg... • Fundera igenom potentiella nackdelar först • Fungerar dina andra plugin? • Det finns (minst) ett tiotal cache-plugin till Wp 2.9.1 • Hyper cache, W3 Total cache, WP Super cache, WP Cache, WP Widget cache, DB cache, DB cache reloaded, 1 Blog cacher..... • Vi har testat 5st ordentligt
  • 9. Cache plugins Svarstider med 50 samtidiga användare på en server med 1 GB RAM
  • 10. Hur fungerar W3TC? • Gör allt rätt • Komprimerar HTML med gzip • Minifierar scrips och stylesheets • Bakar ihop flera requests till en enda, t.ex för script • Lägger bilder och annan media på CDN • Kortsluter PHP-stacken • Aggressiv cache som får Apache att serva HTML utan att behöva dra igång PHP • Cachar ”allt annat” på disk eller via memcached. • Stödjer även opcode cachening via bl.a APC
  • 11. Mer läsning Om databasoptimering • http://www.mysqlperformanceblog.com/ Om cachemoduler för Wordpress • http://www.tutorial9.net/web-tutorials/wordpress-caching-whats-the-best-caching-plugin/ • http://loadimpact.com/blog/tag/wordpress Om minne för Wordpress • http://lildude.co.uk/wordpress-is-a-memory-hog • http://wordpress.org/extend/plugins/tpc-memory-usage/ • http://webjawns.com/2009/08/eaccelerator-reduces-wordpress-memory-usage/
  • 12. Verktyg för test och mätning Ragnar Lönn, Load Impact <ragnar@loadimpact.com>
  • 13. 2008 Laddtiden för landningssidan räknas in i AdWords quality score
  • 14. 2008 Laddtiden för landningssidan räknas in i AdWords quality score Snabbare websida = fler besökare hittar din sajt via AdWords-annonser
  • 15. 2009 sänker laddtiden för sin sida från 7 till 2 sekunder
  • 16. 2009 sänker laddtiden för sin sida från 7 till 2 sekunder • +25% page views
  • 17. 2009 sänker laddtiden för sin sida från 7 till 2 sekunder • +25% page views • +7-12% intäkter
  • 18. 2009 sänker laddtiden för sin sida från 7 till 2 sekunder • +25% page views • +7-12% intäkter • -50% infrastrukturkostnad
  • 19. 2010 Google adds page load time to pagerank algorithm
  • 20. 2010 Google adds page load time to pagerank algorithm Snabbare websida = fler besökare hittar din sajt när de söker på Google
  • 22. Sidanalys Firebug - http://getfirebug.com/ ySlow - http://developer.yahoo.com/yslow/
  • 23. ySlow
  • 24. ySlow
  • 25. Sidanalys Firebug - http://getfirebug.com/ ySlow - http://developer.yahoo.com/yslow/
  • 26. Sidanalys Firebug - http://getfirebug.com/ ySlow - http://developer.yahoo.com/yslow/ Pagespeed - http://code.google.com/ speed/page-speed/
  • 29. Extern sidanalys Pingdom tools, originalet http://pingdom.com/tools
  • 30. Extern sidanalys Pingdom tools, originalet http://pingdom.com/tools • Klarar ej CSS parsning/cascading • Endast från en geografisk punkt
  • 31. Extern sidanalys Load Impact Page analyzer http://loadimpact.com/pageanalyzer.php
  • 32. Extern sidanalys Load Impact Page analyzer http://loadimpact.com/pageanalyzer.php • Emulerar en mängd olika klienter • Simulerar begränsad bandbredd • Endast från en geografisk punkt
  • 34. Extern sidanalys Webpagetest.org PageTest http://webpagetest.org • Äkta browsers = 100%-ig emulering • Screenshots & video från rendrering • Endast IE7/IE8
  • 36. Extern sidanalys Webpagetest.org PageTest http://webpagetest.org • Jämför rendreringstid för olika sidor
  • 37. Extern sidanalys Browsershots.org http://browsershots.org • Äkta browsers = 100%-ig emulering • Screenshots från många olika OS & browsers
  • 38. Lasttest The Grinder http://grinder.sourceforge.net/
  • 39. Lasttest The Grinder http://grinder.sourceforge.net/ • Javabaserad • Scriptas i Java eller Python (Jython) • Inspelningsmöjligheter • Enkelt API • Aktiv användarbas • Inget medföljande GUI för konfiguration eller resultatvisning
  • 41. Lasttest OpenSTA http://opensta.org/ • Windowsbaserad (MFC VC++ Win32), CORBA • Scriptas i eget scriptspråk (SCL) • Inbyggt GUI för konfig/visualisering av resultat • Tidigare versioner har haft stabilitetsproblem
  • 42. Lasttest ApacheBench (ab) http://httpd.apache.org/docs/2.2/programs/ab.html.org/
  • 43. Lasttest ApacheBench (ab) http://httpd.apache.org/docs/2.2/programs/ab.html.org/ • Enkel, kommandoradsbaserad applikation • Inkluderad i Apache-distributionen • Inga scriptmöjligheter
  • 44. Lasttest online Load Impact http://loadimpact.com
  • 45. Lasttest online Load Impact http://loadimpact.com • Användarvänligt gränssnitt • Gratis för mindre lasttester • Browseroberoende inspelning mha proxylösning
  • 46. Lasttest online Browsermob http://browsermob.com
  • 47. Lasttest online Browsermob http://browsermob.com • Inspelning med Firefox & Selenium • Lasttest med äkta eller emulerade webläsare • Stöder enbart Firefox för inspelning/ uppspelning
  • 48. Lasttest online Loadstorm http://loadstorm.com
  • 49. Lasttest online Loadstorm http://loadstorm.com • Ingen inspelningsfunktionalitet
  • 50. Tack för oss Ragnar Lönn, Load Impact <ragnar@loadimpact.com> Erik Torsner, Load Impact <erik@loadimpact.com>
  • 51.
  • 52.

Notas do Editor