Serwer nie może teraz obsługiwać żądań.
Kiedy go używać
Prace serwisowe lub przeciążenie. Dołącz Retry-After, jeśli wiesz, kiedy usługa wróci.
Typowe przyczyny i rozwiązania
Serwer odrzuca żądania celowo lub tymczasowo: tryb serwisowy, przeciążenie, wszystkie backendy oblewające health checki albo limit żądań, bo limit_req w nginx domyślnie zwraca 503. Na load balancerze 503 zwykle oznacza brak zarejestrowanych lub zdrowych celów: sprawdź stan celów, ścieżkę i port health checka oraz to, czy nowe wdrożenia go przechodzą. Ingress w Kubernetes pokazuje to samo, gdy Service nie ma gotowych endpointów.
Przy planowanych pracach serwisowych zwracaj 503 z Retry-After zamiast 200 ze stroną o przerwie technicznej, żeby wyszukiwarki zachowały Twoje strony w indeksie; Google toleruje 503 przez dzień lub dwa, ale dłuższe przerwy mogą skończyć się usunięciem URL-i. Klienty powinny ponawiać żądania z backoffem i respektować Retry-After. Health checki powinny być lekkie, żeby jedna wolna baza danych nie wyrzuciła z rotacji wszystkich instancji naraz.
Błąd serwera (5xx)
Kody 5xx to błędy serwera: żądanie może być poprawne, ale zawiódł serwer lub coś za nim. Warto ustawić na nie alerty.
Jak to wygląda
HTTP/1.1 503 Service UnavailableJak go wysłać
| Node.js / Express | res.status(503).end() |
|---|---|
| Python / Flask | return '', 503 |
| nginx | return 503; |
Jak go sprawdzić
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/