Preskočiť na obsah
SK

Úvod / Prípady z praxe

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

  1. 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).
  2. 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 filtre pre_http_request a http_api_debug.
  3. 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.
  4. Mu-plugin aj jeho log sme hneď po meraní zmazali a overili, že adresa vracia 404.
Pomalá požiadavka je pomalšia vo všetkých fázach Zhruba každá pätnásta požiadavka trvala cez 3 sekundy. Rozklad na fázy ukázal, že sa spomalili všetky fázy rovnomerne a nebolo žiadne vonkajšie volanie. To ukazuje na studený štart PHP, nie na plugin. Doba odpovede mimo cache 3,3 s bežne 0,8–1 s Kde sa čas stráca (fázy WordPressu) rýchla pomalá Všetky fázy dlhšie rovnakým dielom, bez vonkajších volaní → studený štart PHP.
Zhruba každá pätnásta požiadavka trvala cez 3 sekundy. Rozklad na fázy ukázal, že sa spomalili všetky fázy rovnomerne a nebolo žiadne vonkajšie volanie. To ukazuje na studený štart PHP, nie na plugin.

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

Máte podobné príznaky?

Napíšte mi adresu webu a aké má príznaky. Diagnostika je zadarmo a nezáväzná. Ozvem sa zvyčajne do jedného pracovného dňa.

Popísať príznaky

alebo rovno e-mailom na [email protected]