Če se namesto tvoje spletne strani prikaže sporočilo 508 Resource Limit Is Reached, je račun gostovanja dosegel največje število zahtev, ki jih lahko streže hkrati. Stran ni vdrta in ni izginila: strežnik začasno ne sprejema novih zahtev za račun, dokler se tekoče zahteve ne končajo. To običajno traja od nekaj sekund do nekaj minut.
Kaj jo povzroča?
Naša gostovanja tečejo na operacijskem sistemu CloudLinux, ki vsak račun zapre v lasten okvir virov. Eden od elementov okvira je omejitev Entry Processes (EP), ki je v paketu navedena kot Aktivne povezave, torej število hkrati tekočih dinamičnih zahtev (skript PHP, sej SSH, opravil cron). Ko se ta zapolni, vsaka nadaljnja zahteva dobi napako 508. Omejitve posameznih paketov najdeš v članku o omejitvah virov paketov gostovanja.
Omejitev se le redko zapolni zaradi pravih obiskovalcev. Najpogostejši vzroki:
- Počasne strani: če se stran nalaga več sekund, zahteva ves ta čas zaseda eno mesto. Že nekaj počasnih zahtev zadošča, da se okvir zapolni.
- Omejitev CPU: če račun doseže tudi svoj okvir procesorja, se vse zahteve upočasnijo, zato dlje zasedajo svoje mesto, in omejitvi se medsebojno krepita.
- Roboti in napadi: agresivni iskalni roboti, roboti za analizo SEO ter ugibanje gesel na prijavni strani WordPressa (
wp-login.php) ali na datotekixmlrpc.php. - Procesi v ozadju: klici
wp-cron.phpinadmin-ajax.phpv WordPressu, Heartbeat API ter opravila cron, ki tečejo pogosto ali se med seboj prekrivajo. - Prava prometna konica: na primer po pošiljanju novičnika ali po začetku kampanje.
Kako ugotoviš natančen vzrok?
- Oglej si stran Poraba virov (Resource Usage) v cPanelu, glej: Kako v živo preverim porabo virov CloudLinux LVE?. Doseganje omejitve EP se vidi v števcu napak v stolpcu EP. Če so napake tudi pri CPU, je glavni vzrok upočasnitev.
- Na zavihku Snapshot lahko pogledaš, kateri procesi in katere zahteve HTTP so tekli, ko je bila omejitev dosežena. Iz tega je pogosto takoj razvidno, ali je kriv robot ali določen URL. Kako brati števce, pojasnjuje članek o pomenu števcev napak (faults).
- Dnevnika Obiskovalci (Visitors) in Neobdelan dostop (Raw Access) v razdelku Metrike v cPanelu pokažeta, od kod in na katere strani je prišlo veliko zahtev.
Kaj lahko narediš?
- Predpomnjenje: vtičnik za predpomnjenje večino strani streže brez izvajanja PHP, kar drastično zmanjša število hkratnih zahtev. Nasveti: Izboljšanje zmogljivosti gostovanja cPanel in Kako pospešim svojo stran WordPress?.
- Zamenjava crona WordPress:
wp-cron.phpse lahko zažene ob vsakem obisku. Zamenjaj ga s pravim opravilom cron, glej: Kako vgrajeni cron WordPressa zamenjamo z načrtovanimi opravili cPanela? - Omejevanje robotov: nepotrebne robote izključi v datoteki
robots.txt, napadalne naslove IP pa blokiraj. Če ga ne uporabljaš, onemogoči tudi dostop doxmlrpc.php. - Počasni vtičniki in poizvedbe: zamenjava počasnih vtičnikov in vzdrževanje podatkovne baze pomenita krajši čas zahtev.
- Načrtovanje opravil cron: opravila, ki zahtevajo veliko virov (uvoz, varnostno kopiranje), zaganjaj v času brez prometa in ne dovoli, da bi več njihovih primerkov teklo hkrati. Podrobnosti: Kako se cron in SSH štejeta v omejitve virov?
- Uporaba CDN: CDN, na primer Cloudflare, poleg statične vsebine prestreže tudi del napadov.
Če se napaka kljub vsemu redno pojavlja, si svoj paket verjetno prerasel. V tem primeru preidi na večji paket ali piši naši podpori, pa ti pomagamo najti pravo rešitev.
Napaki 500 in 503 nista isto
Napaka 508 označuje izključno omejitev hkratnih zahtev. Če račun doseže omejitev pomnilnika (RAM) ali števila procesov (NPROC), to običajno povzroči napako 500 ali 503. O njunih drugih vzrokih govori članek Kaj storiti ob napaki 500?.
