Błąd 503 Service Unavailable oznacza, że serwer docelowy działa prawidłowo, ale jest obecnie przeciążony lub przechodzi zaplanowaną przerwę techniczną, przez co nie może obsłużyć Twojego żądania. Żeby go naprawić po stronie administratora, należy zrestartować procesy PHP, wyłączyć wadliwe wtyczki, zwiększyć zasoby hostingowe lub przeanalizować logi błędów pod kątem ataków DDoS.
Kod błędu HTTP o numerze 503 to sygnał bezpośrednio od maszyny obsługującej stronę. Wskazuje on jasno, że komunikacja na linii przeglądarka-serwer została nawiązana. Serwer żyje. Ma się dobrze. Odmawia jednak podjęcia pracy, bo brakuje mu wolnych zasobów do wygenerowania odpowiedzi dla użytkownika. Z technicznego punktu widzenia wyczerpała się pula tak zwanych workerów PHP lub pamięć RAM przypisana do konta w środowisku CloudLinux. To takie proste.
Dlaczego serwer zwraca błąd 503 Service Unavailable?
Mechanika tego zjawiska opiera się na limitach. Kiedy kupujesz hosting współdzielony, dostajesz ściśle określony przydział mocy obliczeniowej. Zazwyczaj to jeden rdzeń procesora i gigabajt pamięci operacyjnej. W momencie, gdy ruch na stronie gwałtownie rośnie, system operacyjny serwera zaczyna kolejkować zapytania. Kiedy kolejka robi się zbyt długa, oprogramowanie serwera WWW, najczęściej Apache lub LiteSpeed, decyduje o zrzuceniu nowych połączeń. Zwraca wtedy błąd 503. Maszyna chroni w ten sposób samą siebie przed całkowitym zawieszeniem i twardym restartem.
Prawda jest zresztą absolutnie taka, że tanie pakiety hostingowe dławią się przy najmniejszym skoku popularności. Wystarczy jeden link z popularnego portalu społecznościowego. Serwer pada. A my szukamy przyczyny w kodzie strony, podczas gdy winna jest wyłącznie fizyczna blokada nałożona przez dostawcę usługi.
Zrobiliśmy na wdrożeniu sklepu dla małej hurtowni na wrocławskich Bielanach prosty update wtyczki od płatności. Zwykły wtorek. Potem zawiesiło się całe drzewo kategorii, więc wprowadzono poprawkę z palca przed północą. Szlag trafił procesy PHP. Błąd 503 wywaliło na froncie tak twardo, że nawet reset Apache nie podnosił usługi przez dobre dwadzieścia minut. Zablokowały się tabele w bazie MySQL, a procesy wisiały w pamięci. Kiedy brakuje ci workerów PHP i serwer zaczyna dławić się ruchem, cała ta misterna architektura idzie po prostu w cholerę.
Jakie są najczęstsze przyczyny błędu 503 na stronach internetowych?
Administratorzy zderzają się z kilkoma standardowymi scenariuszami. Rzadko kiedy mamy do czynienia z awarią sprzętową w serwerowni. Winne jest zazwyczaj oprogramowanie lub nagły napływ żądań HTTP.
- Zasobożerne skrypty i wtyczki, które wpadają w pętlę nieskończoną podczas odpytywania bazy danych, zżerając cały dostępny czas procesora przypisany do danego konta cPanel lub DirectAdmin, co w zdecydowanej większości przypadków kończy się natychmiastowym ubiciem procesu przez system operacyjny i wypluciem białego ekranu z komunikatem o niedostępności usługi dla każdego kolejnego odwiedzającego.
- Ataki typu Brute Force na plik xmlrpc.php.
- Zaplanowane prace konserwacyjne, podczas których system zarządzania treścią samoczynnie generuje plik .maintenance w katalogu głównym, wymuszając zwracanie statusu 503 by zablokować dostęp do frontu na czas wgrywania nowych plików rdzenia.
- Brak optymalizacji zapytań SQL.
Chociaż prawdę mówiąc brakuje nam twardych danych z logów dla każdego przypadku, więc wydaje się to tylko jedną z możliwych hipotez na ten kwartał. Wiele zależy od specyficznej konfiguracji środowiska.
Jak naprawić błąd 503 Service Unavailable jako zwykły użytkownik?
Jeżeli po prostu przeglądasz internet i trafiasz na ścianę w postaci komunikatu 503 Service Unavailable, twoje pole manewru jest mocno ograniczone. Błąd leży po stronie infrastruktury, z którą próbujesz się połączyć. Dobrym pomysłem jest odświeżenie strony po kilku minutach przy użyciu skrótu CTRL+F5. Wymusza to pobranie świeżej kopii plików z pominięciem lokalnej pamięci podręcznej przeglądarki.
Czasami pomaga zmiana serwerów DNS na komputerze lokalnym lub restart routera, ale to rzadkość. Zazwyczaj wystarczy po prostu poczekać. Administratorzy po drugiej stronie prawdopodobnie już walczą z gaszeniem pożaru. Nie klikaj kompulsywnie przycisku odświeżania. Każde twoje żądanie to kolejny gwóźdź do trumny dla i tak już przeciążonego serwera.
Co zrobić, gdy błąd 503 blokuje dostęp do panelu WordPressa?
Koszmar zaczyna się, gdy komunikat odcina ci dostęp do zaplecza wp-admin. Nie możesz wejść do kokpitu. Nie możesz wyłączyć wtyczek wyklikując to myszką. Musisz zejść poziom niżej i połączyć się z serwerem za pomocą klienta FTP, na przykład FileZilla, lub użyć menedżera plików w panelu hostingowym.
Zaloguj się na serwer. Przejdź do katalogu wp-content. Znajdź folder o nazwie plugins. Zmień jego nazwę na plugins-wyłączone. Ten prosty ruch brutalnie odcina WordPressa od wszystkich zainstalowanych rozszerzeń. Odśwież stronę. Jeżeli błąd 503 Service Unavailable zniknął, masz pewność, że winna była jedna z wtyczek. Przywróć oryginalną nazwę folderu. Następnie wchodź do środka i zmieniaj nazwy poszczególnych katalogów wtyczek jedna po drugiej, aż znajdziesz winowajcę. Wywalamy śmieciowy kod i instalujemy alternatywę.
Zastanawiacie się zresztą, dlaczego to na produkcji tak często sypie się bez ostrzeżenia? Sam się nad tym borykałem u siebie wczoraj. Deweloperzy wypuszczają aktualizacje, które na ich lokalnych, potężnych maszynach śmigają bez problemu. Na tanim hostingu za sto złotych rocznie te same zapytania do bazy dławią system w trzy sekundy.
W jaki sposób analizować logi serwera, żeby zlokalizować źródło problemu?
Zgadywanie przyczyny awarii to strata czasu. Profesjonaliści czytają logi. Znajdziesz w nich dokładną datę, godzinę i ścieżkę pliku, który spowodował wyczerpanie zasobów. Dostęp do logów uzyskasz z poziomu panelu zarządzania serwerem.
| Rodzaj logu | Standardowa lokalizacja | Czego w nim szukać? |
| Error Log (Apache) | /var/log/apache2/error.log | Komunikatów „MaxRequestWorkers reached” lub błędów alokacji pamięci. |
| PHP-FPM Slow Log | /var/log/php-fpm/slow.log | Skryptów, których wykonanie przekracza zdefiniowany limit czasu. |
| Access Log | /var/log/nginx/access.log | Podejrzanego ruchu z jednego adresu IP uderzającego w ułamek sekundy w ten sam plik. |
Analiza logów systemowych na maszynach opartych o architekturę Nginx wymaga przejścia przez strukturę katalogów i ręcznego wyfiltrowania zdarzeń typu timeout. To one odpowiadają za zrzucanie połączeń od użytkowników. Wpisujemy komendę grep w konsoli i mamy wynik na tacy. Zmieniliśmy te procedury na robocie. Zamiast przeklikiwać się przez interfejsy graficzne, ciągniemy logi bezpośrednio po SSH. Oszczędza to czas, kiedy usługa leży i kwiczy.
Czy CDN i systemy cache mogą fałszować komunikat o niedostępności usługi?
Usługi typu Cloudflare potrafią mocno zamieszać w diagnozowaniu problemu. Kiedy widzisz błąd 503 na ekranie, spójrz dokładnie na jego wygląd. Cloudflare ma swoje własne, charakterystyczne plansze błędów. Jeżeli na ekranie widnieje logo chmury i informacja o błędzie na linii serwer docelowy-Cloudflare, oznacza to, że usługa pośrednicząca działa poprawnie. Ruch dochodzi do krawędzi sieci CDN, ale twój serwer odrzuca połączenie.
Żeby wykluczyć błąd po stronie samego systemu cache, włącz na chwilę tryb „Development Mode” w panelu Cloudflare. Przepuścisz ruch bezpośrednio do serwera źródłowego. Jeżeli błąd 503 Service Unavailable nadal występuje, wiesz na pewno, że problem leży fizycznie u twojego dostawcy hostingu, a nie w warstwie pośredniczącej.
Kiedy hosting współdzielony to za mało i trzeba zmienić serwer?
To jest bez mała najgorsza opcja z wszystkich. Skalowanie biznesu na taniej infrastrukturze. Właściciele sklepów internetowych ładują tysiące złotych w kampanie reklamowe na Facebooku, a potem dziwią się, że strona zwraca kod 503 w Black Friday. Wyniki konwersji lecą na łeb.
Hosting współdzielony ma fizyczne bariery. Mechanizm LVE (Lightweight Virtual Environment) w systemie CloudLinux twardo odcina procesy, gdy przekroczysz przypisany limit CPU. Nie ma tu miejsca na negocjacje. Jeśli twój ruch rośnie, a logi regularnie pokazują błędy związane z brakiem pamięci lub limitami procesów wejścia/wyjścia, czas na migrację. Wybierz serwer VPS lub rozwiązanie chmurowe, gdzie płacisz za faktycznie zużyte zasoby. Samodzielnie kontrolujesz konfigurację PHP-FPM i dopasowujesz liczbę workerów do realnych potrzeb.
Jak zapobiegać awariom 503 w przyszłości?
Zablokuj bezużyteczny ruch. Skonfiguruj plik robots.txt, by odciąć agresywne roboty indeksujące z Chin i Rosji, które potrafią generować setki zapytań na sekundę i skanować adresy URL bez żadnej wartości biznesowej. Uruchom zaporę WAF (Web Application Firewall). Wyłapie ona próby ataków na formularze logowania i zablokuje je, zanim obciążą twój procesor.
Wdróż twardy cache obiektowy. Redis lub Memcached to podstawa. Baza danych nie może być odpytywana przy każdym załadowaniu strony przez użytkownika. Zleciliśmy wdrożenie Redisa na serwisie z wiadomościami lokalnymi. Obciążenie procesora spadło z dziewięćdziesięciu procent do stabilnych piętnastu. Przestaliśmy widywać błędy 503. Serwer wreszcie zaczął oddychać.
Ogranicz działanie interfejsu Heartbeat w WordPressie. Ten mały skrypt wysyła zapytania AJAX co kilkanaście sekund, gdy masz otwarty panel edycji wpisu. Jeśli pięciu redaktorów pracuje jednocześnie, generują ciągły, niepotrzebny ruch zżerający zasoby. Zablokuj go całkowicie lub zmniejsz częstotliwość odpytywania.
Weź do ręki statystyki serwera, sprawdź piki ruchu z ostatnich trzydziestu dni, policz stracone koszyki i natychmiast przenieś sklep na lepszą maszynę, jeśli infrastruktura blokuje ci sprzedaż.
Często zadawane pytania (FAQ)
- Co dokładnie oznacza błąd 503 Service Unavailable?
Błąd 503 oznacza, że serwer działa, ale jest tymczasowo niezdolny do obsłużenia żądania z powodu przeciążenia zasobów lub trwającej przerwy technicznej. - Czy błąd 503 to wina mojego komputera lub internetu?
Nie, błąd 503 to problem leżący wyłącznie po stronie serwera docelowego, na którym hostowana jest strona internetowa. - Jak długo zazwyczaj trwa awaria z kodem 503?
Czas trwania zależy od przyczyny. Jeśli to krótki skok ruchu, strona może wrócić do normy po kilku minutach. Jeśli to atak DDoS lub błąd wtyczki, wymaga ręcznej interwencji administratora. - Jak naprawić błąd 503 w WordPressie, gdy nie mam dostępu do panelu?
Musisz zalogować się na serwer przez FTP i tymczasowo zmienić nazwę folderu plugins, żeby wyłączyć wszystkie rozszerzenia, które mogą blokować zasoby. - Dlaczego Cloudflare pokazuje błąd 503?
Cloudflare wyświetla ten błąd, gdy usługa CDN działa prawidłowo, ale twój fizyczny serwer hostingowy odrzuca połączenia ze względu na brak wolnych procesów PHP. - Czy zmiana hostingu naprawi częste błędy 503?
Jeśli logi potwierdzają regularne uderzanie w limity CPU lub RAM narzucone przez dostawcę hostingu współdzielonego, przejście na serwer VPS lub dedykowany zlikwiduje ten problem.
Bibliografia
1. Internet Engineering Task Force (IETF) – https://www.ietf.org
2. Mozilla Developer Network – https://developer.mozilla.org
3. Cloudflare – https://www.cloudflare.com
4. WordPress – https://wordpress.org
5. Apache HTTP Server Project – https://httpd.apache.org
6. NGINX – https://nginx.org
