150 likes | 311 Views
WordPress Prestanda i stor skala. Vem är jag?. Namn: Albert Bertilsson Bor: Malmö Jobb: Konsult Connecta AB Gillar : Webb, WordPress & sötsaker. En ganska stor site …. 125M sidvisningar per månad 55M besökare per månad 20M unika besökare per månad 30TB data per månad
E N D
Vem är jag? • Namn: Albert Bertilsson • Bor: Malmö • Jobb: Konsult Connecta AB • Gillar: Webb, WordPress & sötsaker
En ganska stor site… • 125M sidvisningar per månad • 55M besökare per månad • 20M unika besökare per månad • 30TB data per månad ~20Landspecifika siter ~10 Språk GA (visits + browser)
En stor site måste byggas med / av… • … fyll i valfritt (Drupal, Sharepoint, IBM, .Net, Java) • Plattformsval är laddat på företag. • Enkelt och effektivt kan anses som dåligt. • ”WordPress är för bloggar.” • ”Jag känner en som jobbar med ...” • ”WordPress är inte säkert.” • ”Hur funkar det med uppgraderingar?” • ”Kan man bygga seriösa webbplatser i PHP?” • Tekniskt sett är det inget som skiljer alternativen åt (Information ska stoppas i en databas och visas i form av websidor). • I själva verket…
En stor site måste byggas med / av… • … människor. • Skickliga människor som kan webb-utveckling och verktyget som används. • Väljer man den mest använda plattformen... • Hittar man kompetenta människor som kan verktyget. • Finns det andra som haft samma problem som du och har hittat en lösning.
Skala ut != skala upp • Lokal cache får sido-effekter • APC object cache, förbättring av prestanda på EN maskin, komplicerat att synkronisera eller hantera livslängd på objekt. • Möjlighet: Fördela X siter på Y servrar och låt en specifik site levereras från en specifik server alltid. (Effektivitet vs Kapacitet, Redundans) • Gemensam cache får fördelar • Memcached, förbättring jämfört med databasanrop för en maskin, avlastning av databasen när cachade objekt används mellan servrar.
Många lager • Browser cache • CDN (Content Delivery Network) • ”Filserver” (Amazon S3) • Web server • Web applikation (WordPress) • Memcached • Databas • Objekt från lager längre ner tar längre tid och ”kostar” mer och tar längre tid att leverera.
Browser cache / CDN • Browser cache: Billigast för dig (och användaren), bäst användarupplevelse. • CDN: Snabbt och billigt, bättre för användaren än request till origin (server). • Båda är relativt statiska, lång tid för bilder/css/js, kortare tider för html. Konfigureras med HTTP headers. • Detta är det viktigaste lagret, även utan CDN är det här du kan göra dina besökare glada!
Filserver / Web server • Bilder synkas till Amazon S3 (bash script triggas i save_post), dum filserver men extremt effektivt och i stort sett oändlig kapacitet. • Separat domän, cookie-free! • Nginxweb server med en kort stund fastcgi cache, hela sidan från PHP cachas vilket gör återkommande request mycket billiga (väldigt effektivt för ”heta” sidor). • Väldigt hög kapacitet, vi lyckades aldrig skapa tillräckligt tunga lasttester för att testa gränsen för vad nginx kan leverera. • Browser/CDN lagret konfigureras här. • Glöm inte Gzip för effektiv överföring. • PHP (fpm) + fastcgi + APC
Web applikation • Wordpress • W3 Total Cache (Konfiguration av objekt cache) • Eget tema (börja smått, optimera tom sida) • Egna tillägg(Översättning, Innehållsblock). Restriktiv användning av tillägg(analys/tester) • Specifik ”master” site för innehållshantering (innan översättning) • Väldigt cpu-tungt tema att generera. • Tunga lyft på serversidan för att göra siten lätt och snabb för klienten. • Byggscript för minifiering + cache bust av CSS/JS
Vi gör inte allt på samma plattform • Separata system för: • Sök (Google SearchAppliance) • Produktinformation (Custom) • E-handel (ElasticPath) • Bloggar (WordPress, same same but different) • Forum (Jive)
Memcached / Databas • Hands off, och överdimensionera! • När det är stort tryck på databasen så finns det problem (eg: DDOS). • Memcached • Avlastar databasen, men undvik att vara beroende eftersom det finns svagheter (eg: Kallstart, DDOS). • Avlastar front-end genom att svara snabbare med delvis färdiga objekt.
Sammanfattning • WordPress skalar! • Det krävs omsorg om detaljer men det är inte magi. • WordPress gör inte ALLT, komplettera med rätt tjänster/komponenter/plugins
Tack för mig! • Kontakt: • ”albert bertilsson” på LinkedIn/FB/Google