503 Dienst nicht verfügbar – Back-End-Server

Sie lesen gerade die Dokumentation zu Apigee Edge.
Zur Dokumentation zu Apigee X.
info

Videos

In diesem Video erfahren Sie mehr über die Behebung von 503-Fehlern (Service Unavailable).

Video Beschreibung
503-Fehler (Service Unavailable) vom Backend-Server Informationen zu folgenden Themen:
  • Einführung in den 503-Fehler (Service Unavailable) in Apigee Edge
  • Fehlerbehebung und Behebung eines 503-Fehlers (Service Unavailable) vom Backend-Server in Echtzeit

Symptom

Die Clientanwendung erhält nach einem API-Proxy-Aufruf den HTTP-Antwortstatus 503 mit der Meldung Service Unavailable.

Fehlermeldungen

Möglicherweise wird eine der folgenden Fehlermeldungen angezeigt:

HTTP/1.1 503 Service Unavailable
HTTP/1.1 503 Service Unavailable: Back-end server is at capacity

Möglicherweise wird in der HTTP-Antwort auch eine Fehlermeldung wie die folgende angezeigt:

The server is temporarily unable to service your request due to
maintenance downtime or capacity problems. Please try again later.

Hinweis:Der oben genannte Antwortcode und die Fehlermeldung sind nur Beispiele. In einigen Fällen erhalten Sie möglicherweise nur den Fehlerantwortcode ohne Fehlermeldung. Das Format und der Inhalt des Fehlerantwortcodes und der Fehlermeldung können je nach Implementierung des Backend-Servers variieren.

Ursachen

Der HTTP-Statuscode 503 bedeutet, dass der Server derzeit keine eingehenden Anfragen verarbeiten kann. Normalerweise tritt dieser Fehler auf, weil der Server zu ausgelastet ist oder vorübergehend aufgrund von Wartungsarbeiten nicht verfügbar ist.

Mögliche Ursachen für die Antwort 503 Service Unavailable sind:

Ursache Beschreibung Wer kann die Schritte zur Fehlerbehebung ausführen?
Überlasteter Server Der Backend-Server ist überlastet oder überlastet und kann keine neuen eingehenden Clientanfragen verarbeiten. Nutzer von Edge Public und Private Cloud
Server wird gewartet Der Backend-Server wird möglicherweise vorübergehend gewartet. Nutzer von Edge Public und Private Cloud

Ursache: Überlasteter Server/Server wird gewartet

In Apigee Edge kann der 503-Fehler (Service Unavailable) unter einer der folgenden Bedingungen von einem Backend-Server zurückgegeben werden:

  • Ein Backend-Server ist überlastet/ausgelastet und kann keine neuen Anfragen verarbeiten.
  • Der Backend-Server ist aufgrund von Wartungsarbeiten vorübergehend nicht verfügbar.

Diagnose

Zur Diagnose des Fehlers können Sie eine der folgenden drei Methoden verwenden:

  • Trace-Tool
  • NGINX-Zugriffslogs
  • Direkter Aufruf des Backend-Servers

Klicken Sie auf die Tabs unten, um mehr über die einzelnen Methoden zu erfahren.

Trace-Tool

  1. Aktivieren Sie die Trace-Sitzung, und führen Sie den API-Aufruf aus, um das Problem zu reproduzieren: 503 Service Unavailable.
  2. Wählen Sie eine der fehlgeschlagenen Anfragen aus und untersuchen Sie den Trace.
  3. Navigieren Sie durch die verschiedenen Phasen des Traces und suchen Sie nach der Stelle, an der der Fehler aufgetreten ist.
  4. Wenn der 503-Fehler als Antwort vom Zielserver zurückgegeben wird, ist der Zielserver die Ursache für den 503-Fehler.

    Hier sehen Sie einen Beispiel-Trace-Screenshot mit der Antwort „503 Service Unavailable“ vom Zielserver:

  5. Klicken Sie auf die Phase Response received from target server (Antwort vom Zielserver empfangen) und sehen Sie sich die Abschnitte „Response Headers“ (Antwortheader) und „Response Content“ (Antwortinhalt) an, um festzustellen, ob sie nützliche Informationen enthalten:
    • Die Antwortheader können den Serverheader enthalten, der angibt von wo die Fehlerantwort gesendet wurde.
    • Der Antwortinhalt kann zusätzliche Informationen dazu enthalten, warum der Zielserver den Antwortcode 503 gesendet hat.
  6. Bestätigen Sie, dass der 503-Fehler vom Zielserver stammt, indem Sie die Werte von X-Apigee-fault-source und X-Apigee-fault-code in der Phase AX (Analytics Data Recorded) im Trace anhand der folgenden Schritte prüfen:
    1. Klicken Sie auf die Phase AX (Analytics Data Recorded), wie im Screenshot unten gezeigt:
    2. Scrollen Sie in den Phasen-Details nach unten zum Abschnitt „Response Headers“ (Antwortheader) und ermitteln Sie die Werte von X-Apigee-fault-code und X-Apigee-fault-source wie unten gezeigt:
    3. Wenn die Werte von X-Apigee-fault-source und X-Apigee-fault-code mit den Werten in der folgenden Tabelle übereinstimmen, können Sie bestätigen, dass der 503-Fehler vom Zielserver stammt:
      Antwortheader Wert
      X-Apigee-fault-source Ziel
      X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  7. Prüfen Sie, ob Sie die Proxy-Verkettung verwenden, d.h. ob der Zielserver/Zielendpunkt einen anderen Proxy in Apigee aufruft. So ermitteln Sie das:
    1. Kehren Sie zur Phase Request sent to target server (Anfrage an Zielserver gesendet) zurück und klicken Sie auf die Schaltfläche Show Curl (Curl anzeigen). Ermitteln Sie den Hostalias des Zielservers.
    2. Wenn der Hostalias des Zielservers auf einen Alias des virtuellen Hosts verweist, handelt es sich um eine Proxy-Verkettung. In diesem Fall müssen Sie alle oben genannten Schritte für den verketteten Proxy wiederholen, bis Sie die tatsächliche Ursache für den 503-Fehler (Service Unavailable) ermittelt haben. In diesen Fällen kann der 503-Fehler (Service Unavailable) auch in anderen verketteten Proxys in anderen Phasen auftreten. Sie können ihn mit diesem Playbook diagnostizieren.
    3. Wenn der Hostalias des Zielservers auf Ihren Backend-Server verweist, fahren Sie mit dem Abschnitt Auflösung fort.

NGINX-Zugriffslogs

Sie können auch in den NGINX-Zugriffslogs nachsehen, ob der Statuscode 503 vom Backend-Server gesendet wurde. Dies ist besonders hilfreich, wenn das Problem in der Vergangenheit aufgetreten ist oder wenn es sich um ein nur gelegentlich auftretendes Problem handelt und Sie den Trace nicht in der Benutzeroberfläche erfassen können. Führen Sie die folgenden Schritte aus, um diese Informationen aus den NGINX-Zugriffslogs zu ermitteln:

  1. Prüfen Sie die NGINX-Zugriffslogs.
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  2. Suchen Sie nach 503-Fehlern für den jeweiligen API-Proxy während eines bestimmten Zeitraums (wenn das Problem in der Vergangenheit aufgetreten ist) oder nach Anfragen, die immer noch mit dem Statuscode 503 fehlschlagen.
  3. Wenn 503-Fehler vorhanden sind, prüfen Sie, ob der Fehler vom Backend-Server stammt. Wenn die Werte von X-Apigee-fault-source und X-Apigee-fault-code mit den Werten in der folgenden Tabelle übereinstimmen, stammt der 503-Fehler vom Backend-Server:
    Antwortheader Wert
    X-Apigee-fault-source Ziel
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode

    Hier sehen Sie einen Beispielseintrag, der den 503-Fehler zeigt, der vom Zielserver verursacht wurde:

  4. Prüfen Sie den jeweiligen API-Proxy und stellen Sie sicher, dass Sie die Proxy-Verkettung verwenden, d.h. ob der Zielserver/Zielendpunkt einen anderen Proxy in Apigee aufruft. Wenn Sie die Proxy-Verkettung verwenden, müssen Sie alle oben genannten Schritte für den verketteten Proxy wiederholen, bis Sie die tatsächliche Ursache für den 503-Fehler (Service Unavailable) ermittelt haben. In diesen Fällen kann der 503-Fehler (Service Unavailable) auch in anderen verketteten Proxys in anderen Phasen auftreten. Sie können ihn mit diesem Playbook diagnostizieren.
  5. Wenn Sie bestätigen, dass Sie die Proxy-Verkettung nicht verwenden und der 503-Fehler von Ihrem Backend-Server stammt, fahren Sie mit dem Abschnitt Auflösung fort.

Aufruf des Backend-Servers

Sie können einen direkten Aufruf an den Backend-Server senden und prüfen, ob Sie dieselbe Antwort „503 Service Unavailable“ erhalten wie bei der Anfrage über Apigee Edge.

  1. Achten Sie darauf, dass Sie alle erforderlichen Header, Abfrageparameter und Anmeldedaten haben, die an den Backend-Server als Teil der Anfrage übergeben werden müssen.
  2. Wenn der Backend-Dienst öffentlich zugänglich ist, können Sie den Befehl „curl“, Postman oder einen anderen REST-Client verwenden und die Backend-Server-API direkt aufrufen.
  3. Wenn der Backend-Server nur über die Message Processors zugänglich ist, können Sie den Befehl „curl“, Postman oder einen anderen REST-Client verwenden und die Backend-Server-API direkt vom Message Processor aufrufen.
  4. Prüfen Sie, ob der Backend-Dienst tatsächlich den Fehler „503 Service Unavailable“ zurückgibt.

Auflösung

Wenn Sie feststellen, dass der 503-Fehler vom Backend-Server stammt, können Sie das Problem so beheben:

  • Wenn das Problem dadurch verursacht wird, dass der Backend-Server aufgrund von Wartungsarbeiten nicht verfügbar ist, können Sie ihn nach dem Wartungszeitraum wieder online schalten.
  • Wenn das Problem dadurch verursacht wird, dass der Backend-Server überlastet ist, dann beheben Sie das Problem, wenn Sie Zugriff auf den Backend-Server haben. Andernfalls müssen Sie mit Ihrem Backend-Server-Team zusammenarbeiten, um das Problem zu beheben.

Probleme mit API-Monitoring diagnostizieren

API Monitoring ermöglicht Ihnen, Problembereiche schnell zu isolieren, um Fehler, Leistungs- und Latenzprobleme sowie deren Quelle zu diagnostizieren, z. B. Entwickler-Apps, API-Proxys, Back-End-Ziele oder die API-Plattform.

Sehen Sie sich ein Beispiel szenario an, in dem gezeigt wird, wie Sie 5xx-Probleme mit Ihren APIs mithilfe von API-Monitoring beheben. Sie können beispielsweise eine Benachrichtigung einrichten, um benachrichtigt zu werden, wenn die Anzahl der Fehler vom Typ „messaging.adaptors.http.flow.ErrorResponseCode“ einen bestimmten Grenzwert überschreitet.

Erfassen von Diagnoseinformationen erforderlich

Wenn das Problem auch nach Befolgen der obigen Anweisungen weiterhin besteht, sammeln Sie die folgenden Diagnoseinformationen und wenden Sie sich dann an den Apigee-Support.

Wenn Sie ein Nutzer einer öffentlichen Cloud sind, geben Sie die folgenden Informationen an:

  • Name der Organisation
  • Umgebungsname
  • Name des API-Proxys
  • Vollständiger „curl“-Befehl zum Reproduzieren des 503-Fehlers
  • Trace-Datei mit den Anfragen, die den Fehler „503 Service Unavailable“ enthalten
  • Wenn die 503-Fehler derzeit nicht auftreten, geben Sie den Zeitraum mit den Zeitzonen Informationen an, in dem die 503-Fehler in der Vergangenheit aufgetreten sind.

Wenn Sie ein Nutzer von Private Cloud sind, geben Sie die folgenden Informationen an:

  • Vollständige Fehlermeldung für die fehlgeschlagenen Anfragen
  • Name der Organisation, Umgebungsname und Name des API-Proxys, für die Sie 503-Fehler beobachten
  • API-Proxy-Bundle
  • Trace-Datei mit den Anfragen, die den Fehler „503 Service Unavailable“ enthalten
  • NGINX-Zugriffslogs
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  • Logs des Message Processors
    /opt/apigee/var/log/edge-message-processor/logs/system.log
  • Der Zeitraum mit den Zeitzoneninformationen, in dem die 503-Fehler aufgetreten sind