Občasné spomalenie o 3 sekundy bez vinníka medzi pluginmi
Príznaky
Z vyrovnávacej pamäte sa stránky načítavali asi za 0,15 s. Bez nej (košík, pokladňa, prihlásenie, prvá návšteva po vyčistení cache) to kolísalo medzi 0,8 a 4 s. Pocitovo „web je občas lenivý“.
Prostredie
WordPress s WooCommerce, page builderom a okolo 40 aktívnymi pluginmi, zdieľaný hosting s LiteSpeedom a jeho cache.
Diagnostika
- Opakované meranie. Niekoľko stránok sme mimo cache načítavali každých 75 s počas niekoľkých minút. Spomalenie nebolo viazané na úvodnú stránku: rovnako často sa týkalo aj obyčajnej textovej stránky. Asi polovica požiadaviek v sérii mala +3 s. Rovné 3 s navyše vyzerali ako timeout vonkajšieho volania (licenčný server, API, fonty).
- Dočasný diagnostický mu-plugin (so súhlasom, bez osobných údajov). Logoval čas do hlavných fáz požiadavky (
muplugins_loaded,plugins_loaded,init,wp_loaded,template_redirect,shutdown) a každé vonkajšie HTTP volanie cez filtrepre_http_requestahttp_api_debug. - Výsledok bol prekvapivý: pomalé požiadavky (asi 3,3 s, zhruba jedna z pätnástich) nemali žiadne vonkajšie HTTP volanie. Spomalené boli všetky fázy rovnomerne, najviac štart do
plugins_loaded(1,3 s namiesto 0,12 s). Žiadny plugin teda nevyčnieval. - Mu-plugin aj jeho log sme hneď po meraní zmazali a overili, že adresa vracia 404.
Príčina
Rovnomerné spomalenie celej požiadavky bez vonkajších volaní zodpovedá studenému PHP procesu na zdieľanom hostingu. Požiadavka dostane nový proces s prázdnou opcache, ktorý musí znova načítať a skompilovať kód všetkých pluginov. Plugin ani web za to nemôže.
Čo hrozí, keď sa to nerieši
Pomalé sú práve stránky, na ktorých sa zarába: košík, pokladňa a účet zákazníka. Každá sekunda čakania navyše zvyšuje počet opustených košíkov a Google pomalú odpoveď servera započítava do hodnotenia rýchlosti. Hľadanie vinníka medzi pluginmi navyše stojí čas aj peniaze za zbytočné zásahy.
Oprava
Na strane webu nie je čo opraviť. Odporučili sme:
- opýtať sa podpory hostingu na počet PHP procesov, ako dlho žijú a akú veľkosť má opcache,
- dlhodobo znížiť počet aktívnych pluginov, aby studený štart trval kratšie.
Návštevníkov, ktorým sa stránky načítavajú z cache, sa to netýka.
Overenie
Hlavné zistenie bolo vylúčenie: žiadne vonkajšie volanie a žiadny jednotlivý plugin. Tým sme si ušetrili hodiny vypínania pluginov naslepo.
Prevencia a ponaučenie
Skôr než začnete hľadať vinníka medzi pluginmi, zmerajte, ktoré fázy požiadavky sa spomaľujú. Keď sa spomalia všetky rovnako, problém je pod WordPressom (PHP, disk, hosting), nie v ňom.
Súvisiace služby: Havárie a chyby Zrýchlenie webu