Błąd 508 Resource Limit Is Reached - co oznacza

Błąd 508 Resource Limit Is Reached oznacza przekroczenie limitu zasobów konta hostingu. Skąd się bierze, jak znaleźć przyczynę w logach i jak go naprawić.

Autor: McProdukt · Opublikowano: · Aktualizacja:

Błąd 508 Resource Limit Is Reached oznacza, że Twoja strona przekroczyła limit zasobów konta hostingowego - konkretnie limit żądań do PHP obsługiwanych w tej samej chwili. Serwer odrzuca wtedy kolejne żądania, żeby jedna strona nie spowolniła pozostałych kont. Typowe przyczyny to boty, ataki na logowanie, ciężkie wtyczki i WP-Cron. Poniżej wyjaśniamy, skąd bierze się ten błąd, jak znaleźć jego przyczynę w logach i jak go naprawić.

Co oznacza błąd 508 Resource Limit Is Reached?

Ten komunikat zwracają serwery z systemem CloudLinux OS, który zamyka każde konto hostingowe w osobnym środowisku z limitami zasobów, zwanym LVE. Dzięki temu jedna przeciążona strona nie zajmie całego procesora, pamięci ani wszystkich procesów serwera WWW. Błąd 508 pojawia się, gdy strona przekroczy limit tzw. procesów wejściowych (entry processes, EP), czyli żądań obsługiwanych w tej samej chwili.

Liczba procesów wejściowych to nie liczba odwiedzających. Według dokumentacji CloudLinux proces „wchodzi" do LVE przy każdym nowym żądaniu HTTP do skryptu PHP lub CGI i zajmuje miejsce, dopóki się nie zakończy. Obrazki, pliki CSS i JavaScript nie uruchamiają PHP, więc nie liczą się do tego limitu. Dlatego nawet przy niewielkim ruchu strona może dostać błąd 508, jeśli żądania do PHP trwają długo albo przychodzą seriami.

Jakie limity zasobów ma konto hostingowe?

CloudLinux ogranicza kilka zasobów naraz, a tylko jeden z nich kończy się błędem 508. Pozostałe objawiają się inaczej:

LimitCo ograniczaCo się dzieje po przekroczeniu
EP (entry processes)liczbę jednoczesnych żądań do PHP i CGIbłąd 508 Resource Limit Is Reached
SPEED (procesor)moc procesora dostępną dla kontastrona działa, ale wolniej
PMEM (pamięć)pamięć fizyczną procesów kontaczęść procesów zostaje zamknięta, pojawiają się błędy 500 i 503
NPROC (procesy)liczbę wszystkich procesów kontanowe procesy nie startują, możliwe błędy 500 lub 503
IO i IOPSprzepustowość dysku i liczbę operacji na sekundęoperacje dyskowe zwalniają albo czekają do następnej sekundy

Konkretne wartości limitów zależą od dostawcy i pakietu. Co oznaczają inne ograniczenia, np. inody, wyjaśniamy w tekście limity hostingu: inody, procesy, pamięć, a pozostałe kody błędów - w poradniku o błędach HTTP 403, 404, 500, 502 i 503.

Dlaczego pojawia się błąd 508?

  • Boty i crawlery - roboty narzędzi SEO, scrapery kopiujące treści czy boty przeglądające tysiące kombinacji filtrów w sklepie. Takie adresy rzadko są w cache, więc każde żądanie uruchamia PHP.
  • Ataki na logowanie - zautomatyzowane próby odgadnięcia hasła na wp-login.php i xmlrpc.php. Dokumentacja WordPressa zwraca uwagę, że nawet nieudane ataki potrafią zalać stronę żądaniami, a xmlrpc.php jest częstym celem.
  • Ciężkie wtyczki i brak cache - każde wejście uruchamia PHP na dłużej, więc jednoczesne żądania szybciej się kumulują.
  • WP-Cron - WordPress sprawdza listę zaplanowanych zadań przy każdym wczytaniu strony, więc ciężkie zadania (kopie z wtyczki, wysyłka newslettera, synchronizacje) startują wtedy, gdy na stronie jest ruch.
  • Import i eksport - import produktów, generowanie miniatur czy eksport zamówień w godzinach szczytu.
  • Nagły, prawdziwy ruch - kampania, mailing albo wzmianka w mediach. To dobry znak, ale bez cache albo większych zasobów kończy się błędami.

Jak sprawdzić, co wywołało błąd 508?

  1. Zanotuj godzinę i adres. Bez tego trudno cokolwiek znaleźć w logach.
  2. Sprawdź statystyki zasobów. Na hostingu z CloudLinux panel może mieć sekcję „Resource Usage" z wykresami zużycia i liczbą przekroczeń limitów (faults). Zobaczysz, który limit został przekroczony i kiedy.
  3. Przejrzyj log dostępu z tej godziny. Logi dostępu i błędów domeny są zwykle dostępne w panelu hostingu, w sekcji statystyk i logów - jeśli ich nie widzisz, poproś o nie wsparcie. Szukaj adresów IP i nazw botów (user-agent) z największą liczbą żądań oraz powtarzających się adresów: wp-login.php, xmlrpc.php, admin-ajax.php, wp-cron.php czy stron z parametrami filtrów.
  4. Sprawdź zadania w tle. Czy o tej porze działał import, kopia zapasowa z wtyczki albo wysyłka newslettera?
  5. Porównaj z ruchem. Jeśli błąd pojawia się tylko przy wyraźnym skoku odwiedzin, a logi nie pokazują botów ani ataków, strona po prostu potrzebuje więcej zasobów.

Jeśli masz dostęp do terminala (SSH), adresy IP z największą liczbą żądań wyświetlisz poleceniem (zamień access.log na nazwę pliku z logiem swojej domeny):

awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20

a najczęstsze user-agenty - poleceniem:

awk -F'"' '{print $6}' access.log | sort | uniq -c | sort -rn | head -20

Jak naprawić błąd 508?

Najpierw usuń przyczynę - boty, ataki, ciężkie zadania - a dopiero potem oceniaj, czy potrzebujesz więcej zasobów. Poniżej kolejne kroki, od najprostszych.

Włącz cache strony

Strona podana z cache nie uruchamia PHP, więc nie zajmuje procesu wejściowego. To pierwszy krok przy każdym skoku ruchu - zasadę działania opisujemy w tekście cache - co to jest i jak przyspiesza stronę.

Zablokuj niepotrzebne boty

Boty, które respektują robots.txt, zatrzymasz wpisem Disallow dla ich nazwy. Nie blokuj Googlebota ani Bingbota, bo stracisz widoczność w wyszukiwarkach. Przy Googlebocie nie pomoże też dyrektywa crawl-delay - Google jej nie obsługuje.

Boty, które ignorują robots.txt, zablokuj regułą w pliku .htaccess. Serwer OpenLiteSpeed, na którym działa hosting McProdukt, wykonuje z .htaccess reguły przepisywania adresów (RewriteRule), ale nie dyrektywy dostępu, więc Deny from, Allow from czy Require nie zadziałają. Blokadę zapisz tak:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (NazwaBota1|NazwaBota2) [NC]
RewriteRule .* - [F,L]

W miejsce NazwaBota1 i NazwaBota2 wpisz charakterystyczne fragmenty user-agenta z Twoich logów - serwer odrzuci takie żądania, zanim trafią do PHP. Więcej przykładów reguł znajdziesz w poradniku .htaccess w praktyce.

Zabezpiecz logowanie i xmlrpc.php

Dokumentacja WordPressa zaleca wprost: jeśli nie korzystasz z XML-RPC, wyłącz go. Na OpenLiteSpeed zrobisz to regułą:

RewriteEngine On
RewriteRule ^xmlrpc\.php$ - [F,L]

Uważaj, bo z XML-RPC korzystają m.in. Jetpack i aplikacje mobilne - wtedy zamiast blokady ogranicz liczbę żądań. Konta administratorów zabezpiecz silnymi hasłami i logowaniem dwuskładnikowym. Wtyczki blokujące ataki też działają w PHP i zużywają zasoby, dlatego lepiej, gdy ataki zatrzymuje już serwer: na hostingu McProdukt firewall blokuje ataki na hasła, a ruch filtruje WAF ModSecurity z regułami OWASP CRS.

Zastąp WP-Cron prawdziwym cronem

Dopisz w pliku wp-config.php linię:

define( 'DISABLE_WP_CRON', true );

a w panelu hostingu ustaw zadanie cron, które co kilkanaście minut wywoła wp-cron.php. Zadania przestaną startować przy wejściach odwiedzających i zaczną działać w stałym rytmie. Krok po kroku pokazujemy to w tekście WP-Cron - jak działa i jak zastąpić go prawdziwym cronem.

Odchudź wtyczki i przenieś ciężkie zadania

Wyłącz nieużywane wtyczki, a te, które najbardziej spowalniają stronę, zamień na lżejsze. Importy, eksporty i regenerację miniatur uruchamiaj poza godzinami ruchu i dziel na mniejsze partie.

Rozważ większy pakiet

Jeśli ruch jest prawdziwy, strona ma cache, a błąd wciąż wraca w szczytach, potrzebujesz więcej zasobów: większego pakietu albo serwera VPS. Porównaj pakiety w cenniku hostingu, a jeśli kusi Cię oferta „bez limitu", sprawdź najpierw, co naprawdę oznacza hosting bez limitu.

Najczęściej zadawane pytania

Czy błąd 508 zniknie sam?

Zwykle tak - gdy liczba jednoczesnych żądań spadnie poniżej limitu, strona znów działa. Jeśli błąd wraca regularnie, jego przyczyna (bot, atak, wtyczka, cron) nadal działa i trzeba ją usunąć.

Czym różni się błąd 508 od 503?

Na serwerach z CloudLinux 508 oznacza przekroczenie limitu jednoczesnych żądań do PHP. Błąd 503 może pojawić się m.in. po przekroczeniu limitu pamięci lub liczby procesów, ale też z innych przyczyn po stronie serwera.

Czy mała strona może dostać błąd 508?

Tak. Liczy się liczba jednoczesnych żądań do PHP, a nie liczba odwiedzających. Mała strona bez cache, atakowana przez boty albo z ciężkim zadaniem cron może przekroczyć limit przy niewielkim ruchu.

Czy większy pakiet rozwiąże problem z błędem 508?

Tylko wtedy, gdy przyczyną jest prawdziwy ruch. Jeśli stronę obciążają boty, ataki albo źle ustawiony cron, większy pakiet jedynie odsunie problem w czasie.

Jak sprawdzić, który limit został przekroczony?

Na hostingu z CloudLinux zajrzyj do statystyk zużycia zasobów w panelu (sekcja Resource Usage) - zobaczysz wykresy i liczbę przekroczeń poszczególnych limitów. Jeśli panel ich nie pokazuje, poproś wsparcie o dane z godziny wystąpienia błędu.

Powiązane poradniki

Wszystkie poradniki z kategorii: Szybkość i wydajność

Powiązane usługi McProdukt

  • Hosting WWW NVMe - szybki hosting z LiteSpeed, darmowym SSL i codziennym backupem

Zobacz również