Időnkénti 3 másodperces lassulás, bűnös bővítmény nélkül
Tünetek
Gyorsítótárból az oldalak kb. 0,15 mp alatt töltődtek be. Nélküle (kosár, pénztár, bejelentkezés, első látogatás a gyorsítótár ürítése után) 0,8 és 4 mp között ingadozott. Érzésre „a weboldal néha lusta”.
Környezet
WordPress WooCommerce-szel, oldalépítővel és nagyjából 40 aktív bővítménnyel, osztott tárhely LiteSpeeddel és annak gyorsítótárával.
Diagnózis
- Ismételt mérés. Több oldalt gyorsítótár nélkül töltöttünk be 75 másodpercenként néhány percen át. A lassulás nem a kezdőlaphoz kötődött: ugyanolyan gyakran érintett egy egyszerű szöveges oldalt is. A sorozatban a kérések nagyjából fele +3 mp-et kapott. A pontosan 3 mp többlet külső hívás időtúllépésének tűnt (licencszerver, API, betűtípusok).
- Ideiglenes diagnosztikai mu-plugin (jóváhagyással, személyes adatok nélkül). Naplózta a kérés fő szakaszaiig eltelt időt (
muplugins_loaded,plugins_loaded,init,wp_loaded,template_redirect,shutdown) és minden külső HTTP hívást apre_http_requestéshttp_api_debugszűrőkkel. - Az eredmény meglepő volt: a lassú kéréseknek (kb. 3,3 mp, nagyjából minden tizenötödik) semmilyen külső HTTP hívásuk nem volt. Minden szakasz egyenletesen lassult, leginkább az indulás a
plugins_loaded-ig (1,3 mp 0,12 mp helyett). Egyetlen bővítmény sem lógott ki tehát. - A mu-plugint és a naplóját a mérés után azonnal töröltük, és ellenőriztük, hogy a cím 404-et ad.
Ok
A teljes kérés egyenletes lassulása külső hívások nélkül az osztott tárhelyen lévő hideg PHP folyamatnak felel meg. A kérés új folyamatot kap üres opcache-sel, amelynek újra be kell töltenie és le kell fordítania az összes bővítmény kódját. Sem a bővítmény, sem a weboldal nem tehet róla.
Mi fenyeget, ha nem foglalkozunk vele
Éppen azok az oldalak lassúak, amelyeken a pénz keletkezik: a kosár, a pénztár és a vásárlói fiók. Minden plusz másodperc várakozás növeli az elhagyott kosarak számát, és a Google a szerver lassú válaszát beszámítja a sebesség értékelésébe. A bűnös keresése a bővítmények között ráadásul időbe és pénzbe kerül a felesleges beavatkozások miatt.
Javítás
A weboldal oldalán nincs mit javítani. Azt javasoltuk:
- kérdezzék meg a tárhely ügyfélszolgálatát a PHP folyamatok számáról, élettartamáról és az opcache méretéről,
- hosszabb távon csökkentsék az aktív bővítmények számát, hogy a hidegindítás rövidebb ideig tartson.
Azokat a látogatókat, akiknek az oldalak gyorsítótárból töltődnek be, ez nem érinti.
Ellenőrzés
A fő eredmény a kizárás volt: nincs külső hívás és nincs egyedi bűnös bővítmény. Ezzel órákat spóroltunk meg a bővítmények vaktában történő kikapcsolásából.
Megelőzés és tanulságok
Mielőtt a bővítmények között keresné a bűnöst, mérje meg, a kérés mely szakaszai lassulnak. Ha mind egyformán, a probléma a WordPress alatt van (PHP, lemez, tárhely), nem benne.
Kapcsolódó szolgáltatások: Üzemzavarok és hibák Weboldal gyorsítás