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
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
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>
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
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
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