Ein 503 ist eine andere Art von Fehler als eine Zeitüberschreitung oder eine abgelehnte Verbindung. Der Server ist da, und er hat geantwortet. Seine Antwort lautet, dass er die Anfrage im Moment nicht bearbeiten kann. Der HTTP-Standard beschreibt 503 als vorübergehenden Zustand, typischerweise durch Überlast oder geplante Wartung, und erlaubt dem Server, mitzuteilen, wann man es erneut versuchen soll.
Dieses „vorübergehend“ ist ein Versprechen des Servers, keine Garantie. Diese Anleitung hilft Ihnen herauszufinden, welche Art von 503 Sie vor sich haben und was Sie zuerst ansehen sollten.
Was die Antwort Ihnen sagt
Irgendetwas hat die 503-Antwort erzeugt. Das kann die Anwendung sein, der Webserver, ein Load Balancer, ein Proxy oder ein Content Delivery Network (CDN). Das grenzt schon ein: Netzwerkweg und DNS funktionieren, denn die Antwort hat Sie erreicht.
Zwei Hinweise lohnt es sich zu lesen, bevor Sie sich irgendwo anmelden:
- Die Seite selbst. Eine schlichte Meldung des Webservers, eine gestaltete Wartungsseite und eine Fehlerseite eines CDN deuten jeweils auf eine andere Ebene.
- Die Header. Achten Sie auf einen
Retry-After-Header, der angibt, wie viele Sekunden zu warten sind, oder ein Datum nennt. Ein Server, der ihn sendet, sagt meist, dass das 503 beabsichtigt ist, zum Beispiel bei Wartung. Header, die einen Proxy oder ein CDN nennen, zeigen, welche Ebene geantwortet hat.
Die drei häufigen Ursachen
| Ursache | Woran man sie erkennt | Was Sie zuerst prüfen |
|---|---|---|
| Geplante Wartung | Eine Wartungsseite, oft mit Retry-After; Beginn zu einer bekannten Zeit |
Ob ein Deployment, eine Migration oder der Wartungsmodus eingeschaltet wurde |
| Überlast | Zuerst langsame Antworten, dann 503; zu Stoßzeiten schlimmer | CPU, Arbeitsspeicher und die Obergrenze für gleichzeitige Worker oder Verbindungen |
| Backend als nicht verfügbar markiert | Ein Proxy oder Load Balancer antwortet 503, während die Anwendung dahinter ausgefallen ist oder ihren Health-Check nicht besteht | Der Zustand der Anwendung hinter dem Proxy und das eigene Fehlerlog des Proxys |
Manche Dienste antworten auch absichtlich mit 503, wenn ein Client zu viele Anfragen sendet, statt mit dem üblicheren 429. Wenn Sie Besucher drosseln, prüfen Sie, ob die Begrenzung Ihren eigenen Datenverkehr trifft.
Prüfen Sie zuerst von außen
Bevor Sie etwas ändern, sehen Sie, was ein Besucher sieht. Von jedem Rechner aus:
curl -sS -o /dev/null -D - https://example.com/
Das gibt die Statuszeile und die Header aus. So sehen Sie in einer Zeile, wie lange die Anfrage gedauert hat und welcher Status zurückkam:
curl -sS -o /dev/null -w "%{http_code} %{time_total}s\n" https://example.com/
Führen Sie es einige Male aus. Kommt jedes Mal 503, ist der Zustand stabil. Wechselt es zwischen 200 und 503, ist wahrscheinlich einer von mehreren Servern hinter einem Load Balancer defekt, oder die Worker gehen zeitweise aus. Bitten Sie außerdem jemanden in einem anderen Netzwerk, es zu versuchen, um eine standortabhängige Antwort auszuschließen.
Von vorne nach hinten arbeiten
Folgen Sie der Anfrage in der Reihenfolge, in der sie reist:
- CDN oder Proxy davor. Antwortet er? Sehen Sie auf seiner Statusseite und in seinem eigenen Fehlerlog nach. Ein CDN, das Ihren Server nicht erreicht, zeigt oft eine eigene Fehlerseite.
- Load Balancer. Führt er alle Backends als gesund? Ein Backend, das den Health-Check nicht besteht, wird entfernt, und wenn keines übrig ist, liefert der Load Balancer 503.
- Webserver und Anwendungs-Worker. Gibt es freie Worker? Ein voller Pool lässt neue Anfragen warten, und manche Setups antworten mit 503, wenn die Warteschlange voll ist. Suchen Sie im Log nach Zeilen zum Erreichen einer Grenze.
- Anwendung und ihre Abhängigkeiten. Eine volle oder nicht erreichbare Datenbank kann die Anwendung Arbeit verweigern lassen. Ebenso ein nachgelagerter Dienst, von dem die Seite abhängt.
- Letzte Änderungen. Ein Deployment, eine Konfigurationsänderung, ein Plugin-Update oder eine Besucherspitze kurz vor dem ersten 503 ist die häufigste Erklärung. Beginnen Sie Ihren Zeitstrahl dort.
Das Muster lesen
Der Zeitpunkt sagt so viel wie die Antwort:
- Eine Häufung von 503 zum Zeitpunkt eines Deployments ist meist der Neustart selbst. Beheben Sie das, indem Sie ändern, wie Sie deployen, nicht, indem Sie dem Fehler nachjagen.
- 503 jeden Tag zur selben Stunde deutet auf einen geplanten Job, ein Backup oder eine Lastspitze, die Ressourcen erschöpft.
- 503 nach steigenden Antwortzeiten deutet auf Überlast. Die Antwortzeit steigt oft minutenlang vor dem ersten 503. Siehe Antwortzeit.
- 503 nur bei einem Besucher kann eine Ratenbegrenzung, eine gesperrte Adresse oder eine Sicherheitsregel sein, kein Ausfall.
Was ein Monitor Ihnen sagen kann
Ein Monitor, der Ihre Adresse von außen abruft, sieht nicht in den Server hinein, liefert aber den Zeitstrahl, den Sie brauchen.
UptimeWire wertet jede endgültige Antwort außerhalb von 200 bis 399 als Fehler, ein 503 ist also ein Fehler. Eine fehlgeschlagene Prüfung wird wiederholt, und nach drei fehlgeschlagenen Prüfungen in Folge im Abstand von etwa 20 Sekunden wird ein Vorfall eröffnet. Der Grund wird festgehalten, zum Beispiel „HTTP 503“, ebenso wann er begann und wie lange er dauerte. Siehe Vorfälle in der Überwachung.
Das hilft in der Praxis: Sie sehen, ob das 503 ein kurzer Ausbruch oder ein langer Ausfall war und ob es zu bestimmten Zeiten auftrat. Die Ursache nennt es nicht. UptimeWire sieht nicht in Ihre Anwendung hinein und misst Ihren Server nicht.
Bei geplanten Arbeiten hält die geplante Wartung von UptimeWire Benachrichtigungen zu Vorfällen zurück, solange die Arbeiten laufen. Wenn ein kurzes 503 bei jedem Deployment immer wieder Benachrichtigungen auslöst, siehe warum Uptime-Monitore Fehlalarme senden.
Checkliste
- Ist das 503 stabil oder zeitweise? Testen Sie mehrmals.
- Was hat geantwortet: Anwendung, Webserver, Proxy, Load Balancer oder CDN?
- Gibt es einen
Retry-After-Header, und nennt er, wann man es erneut versuchen soll? - Gingen kurz davor ein Deployment, eine Änderung oder eine Besucherspitze voraus?
- Ist die Antwortzeit vor dem ersten 503 gestiegen?
- Sind alle Backends gesund, und gibt es freie Worker?
- Folgt der Fehler einem Zeitplan?
Wenn ein 503 die richtige Antwort ist
Ein 503 bei echter Wartung ist korrektes Verhalten. Es sagt Besuchern und Suchmaschinen, dass sie wiederkommen sollen, was eine 200-Seite mit dem Text „Wartungsarbeiten“ nicht tut. Wenn Sie Ausfallzeiten planen, antworten Sie absichtlich mit 503 und senden, wo möglich, Retry-After mit. Entscheidend ist, dass das 503 endet, wenn die Arbeiten enden.