Náhodné dlouhé načítání WordPress

Podle mnoha lidí je WordPress velice náročný redakční systém na výkon serveru. Ačkoliv by se o tom dalo samozřejmě spekulovat, většina negativních zkušeností se zakládá na nějakém problému, který často nemusí být na první pohled dohledatelný.  Žádná chybová hláška, pro administrátora vše funguje jak má, problém je vidět jen při určitém sledu událostí. S tím jak narůstá počet pluginů v instalaci se může problém skrývat stále hlouběji a být těžko nejen dohledatelný, ale i pozorovatelný.

Mezi velmi nepříjemné jsou problémy spojené s dlouhým načítáním WordPress. Na průměrném webhostingu se čistá instalace se základní šablonou načítá pod půl vteřiny. S dalšími šablonami a rozšířeními už jde do vteřin. Vše řeší cachovací plugin. Ten dokáže částečně anebo i úplně předgenerovat stránku a maximálně využít prostředky serveru prohlížeče, což vede k velice razantnímu zrychlení. Nejdůležitější hodnotou, kterou je třeba měřit se nazývá TTFB (Time to First Byte), všechno ostatní je snadno dohledatelné pomocí nástrojů pro měření rychlosti. Vhodný je například nástroj tools.pingdom.com. Perfektně se s ním dá ladit výkon webu. Pozor první načtení je generování, druhé pak načtení z cache. Chce si na to dát pozor.

time-to-first-byte-timehosting-cz

Úplně první hodnotou je TTFB. Pozor pokud máte na stránce přesměrování, například na verzi s anebo bez www, tak jej uvidíte před generováním stránky. V případě testu se jednalo zhruba o 0,2 vteřiny. Když a výsledek najedete zjistíte, kolik času zabrala která část komunikace mezi klientem a serverem. Co nás zajímá je hodnota wait.

Pokud opakované testy ukazují znatelný výkyv, například se jedná o dobu načítání v řádech několika vteřin, někdy i desítek vteřin je někde problém.

Příklad problému – přesměrování a databáze

Na začátek si uvedeme jeden konkrétní příklad. Web se na první pohled jevil jako rychlí, jen občas majitel říkal, že mu zlobí když klikne z domovské stránky na další stránku listování výsledků (page 2) a pak zpět.

Provedlo se několik simulací celého procesu, které ukázali, že zatímco se jak domovská stránka, tak i stránka 2 načítají poměrně rychle a to jak cachovaná tak i necachovaná verze. Výrazný problém nastává u přechodu ze stránky 2 na stránku 1.

Udělali jsme analýzu hlaviček. A došli k následujícímu.

  • Stránka 2 (domena.tld/page/2/) – kliknutí na odkaz domena.tld/page/1/
  • generování stránky domena.tld/page/1/ – vrácen kód 301 na domena.tld
  • generování stránky domena.tld

Vzhledem k tomu, že domena.tld/page/1/ nebyla v cache něco to tam brzdilo.

Nastal klasický proces ladění, kdy se postupně vypínají pluginy. Výsledek však byl zhruba stejný. Správně by mělo následovat přepnutí šablony, ale už dříve bylo podezření na databází. Manuální kontrola MySQL databáze odhalila velké množství řádků v tabulkách, které využíval plugin WP Statistics. Ten dokáže měřit všechny přístupy na WordPress. Na rozdíl od běžně používaných počítadel zaznamenává i dotazy směřující na jakékoliv vygenerované stránky. V jedné z tabulek bylo přes 250 tisíc záznamů. Někteří roboti ve snaze něco dohledat neustále opakovali požadavky.

Plugin měl v sobě schopnost automatického a manuálního čistění. Provedli jsme údržbu a deaktivovali plugin. Zřejmě některé záznamy byly navázané na ostatní tabulky, které používá jádro systému. Do detailů jsme to neřešili.

TTFB problém

Pokud máte problémy s výkonem u TTFB může se jednat o více věcí. Někdy zlobí například cachovací plugin, jindy může být chyba v .htaccess. Rozhodně ale nepodceňujte údržbu databáze. Rozbité tabulky nejsou rozhodně nic příjemného. Při pravidelné zátěži je také občas nutné tabulky optimalizovat. Existují na to pluginy, které to řeší bez nutnosti navštívit databázi například přes PHPmyAdmin.

Share Button

Tento článek byl byl přečten 1442 krát

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *