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

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

Videos

Sehen Sie sich das folgende Video an, um mehr über die Behebung von 503-Fehlern „Dienst nicht verfügbar“ zu erfahren.

Video Beschreibung
Fehler „503 Service Nothing“ vom Back-End-Server Hier finden Sie Informationen zu folgenden Themen:
  • Einführung in den Fehler 503 Service Nicht verfügbar in Apigee Edge
  • Fehlerbehebung bei einem Echtzeit-503-Dienst, der auf dem Back-End-Server nicht verfügbar ist

Symptom

Nach einem API-Proxy-Aufruf erhält die Clientanwendung den HTTP-Antwortstatus 503 mit der Meldung Service Nicht verfügbar.

Fehlermeldungen

Eine der folgenden Fehlermeldungen wird angezeigt:

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

In der HTTP-Antwort kann auch eine Fehlermeldung wie die folgende angezeigt werden:

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

Hinweis:Der obige Antwortcode und die Fehlermeldung sind nur Beispiele. In einigen Fällen wird möglicherweise nur der Fehlerantwortcode ohne Fehlermeldung angezeigt. Das Format und der Inhalt des Fehlerantwortcodes und der Fehlermeldung können je nach Back-End-Serverimplementierung variieren.

Ursachen

Der HTTP-Statuscode 503 bedeutet, dass der Server die eingehenden Anfragen derzeit nicht verarbeiten kann. Dieser Fehler tritt normalerweise auf, wenn der Server zu ausgelastet oder aufgrund von Wartungsarbeiten vorübergehend 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?
Überlaster Server Der Back-End-Server ist überlastet oder überschreitet seine Kapazität und kann keine neuen eingehenden Clientanfragen verarbeiten. Nutzer von Edge Public und Private Cloud
Server wird gewartet Der Back-End-Server wird möglicherweise vorübergehend gewartet. Nutzer von Edge Public und Private Cloud

Ursache: Server/Server ist überlastet, wird gewartet

In Apigee Edge kann der Fehler „503 Service Nicht verfügbar“ unter einer der folgenden Bedingungen von einem Back-End-Server zurückgegeben werden:

  • Ein Back-End-Server ist überlastet/beschäftigt und kann keine neuen Anfragen verarbeiten.
  • Der Back-End-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 an den Back-End-Server

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-Dienst nicht verfügbar“.
  2. Wählen Sie eine der fehlgeschlagenen Anfragen aus und prüfen Sie den Trace.
  3. Gehen Sie die verschiedenen Phasen des Trace durch und ermitteln Sie, wo der Fehler aufgetreten ist.
  4. Wenn Sie feststellen, dass der Fehler 503 als Antwort des Zielservers zurückgegeben wird, ist die Ursache für den Fehler 503 der Zielserver.

    Hier ist ein Beispiel-Trace-Screenshot, der die Antwort „503 Service Nicht verfügbar“ vom Zielserver zeigt:

  5. Klicken Sie auf die Phase Antwort vom Zielserver erhalten und prüfen Sie, ob die Abschnitte „Antwortheader“ und „Antwortinhalt“ hilfreiche Informationen enthalten:
    • Die Antwortheader können den Serverheader enthalten, der angibt, von welcher Quelle die Fehlerantwort gesendet wurde.
    • Der Antwortinhalt kann zusätzliche Informationen darüber enthalten, warum der Zielserver den Antwortcode 503 gesendet hat.
  6. Prüfen Sie, ob der Fehler 503 vom Zielserver stammt. Dazu prüfen Sie die Werte von X-Apigee-fault-source und X-Apigee-fault-source in der Phase X-Apigee-fault-source (Analytics Data Recorded) im Trace. Gehen Sie dazu so vor:
    1. Klicken Sie auf AX-Phase (Analytics Data Recorded) (Aufgezeichnete Analytics-Daten), wie im Screenshot unten dargestellt:
    2. Scrollen Sie in den Phasendetails zum Abschnitt mit den Antwortheadern und ermitteln Sie die Werte von X-Apigee-fault-code und X-Apigee-fault-code, wie unten gezeigt:
    3. Wenn die Werte von X-Apigee-fault-source und X-Apigee-fault-source mit den Werten in der folgenden Tabelle übereinstimmen, können Sie bestätigen, dass der Fehler 503 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 Proxyverkettung verwenden, d.h. ob der Zielserver/Zielendpunkt einen anderen Proxy in Apigee aufruft. So ermitteln Sie dies:
    1. Gehen Sie zurück zur Phase Anfrage an Zielserver gesendet, klicken Sie auf die Schaltfläche Curl anzeigen und bestimmen Sie den Hostalias des Zielservers.
    2. Wenn der Alias des Zielserver-Hosts auf einen virtuellen Hostalias verweist, handelt es sich um eine Proxyverkettung. In diesem Fall müssen Sie alle oben genannten Schritte für den verketteten Proxy wiederholen, bis Sie die Ursache für den Fehler „503 Service Nicht verfügbar“ ermitteln können. In diesen Fällen kann der 503-Status „Dienst nicht verfügbar“ auch in anderen verketteten Proxys in anderen Phasen auftreten, was mit diesem Playbook diagnostiziert werden kann.
    3. Wenn der Hostalias des Zielservers auf Ihren Back-End-Server verweist, wechseln Sie zu Lösung.

NGINX-Zugriffslogs

Sie können auch anhand der NGINX-Lizenzlogs feststellen, ob der Statuscode 503 vom Back-End-Server gesendet wurde. Dies ist besonders nützlich, wenn das Problem in der Vergangenheit aufgetreten ist oder wenn es nur zeitweise auftritt und Sie den Trace in der UI nicht erfassen können. Führen Sie die folgenden Schritte aus, um diese Informationen aus den NGINX-Zugriffslogs zu ermitteln:

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

    Hier ist ein Beispieleintrag, der den vom Zielserver verursachten Fehler 503 anzeigt:

  4. Prüfen Sie den spezifischen API-Proxy und achten Sie darauf, dass Sie eine Proxy-Verkettung verwenden, d.h. Der Zielserver/Zielendpunkt ruft keinen anderen Proxy in Apigee auf. Wenn Sie die Proxyverkettung verwenden, müssen Sie alle oben genannten Schritte für den verketteten Proxy wiederholen, bis Sie die Ursache für den Fehler „503 Service Nicht verfügbar“ ermittelt haben. In diesen Fällen kann „503 Service Nicht verfügbar“ auch in anderen verketteten Proxys an anderen Phasen auftreten, was Sie mit diesem Playbook diagnostizieren können.
  5. Wenn Sie bestätigen, dass Sie keine Proxyverkettung verwenden, und der Fehler 503 von Ihrem Back-End-Server kommt, gehen Sie zu Lösung.

Aufruf an Back-End-Server

Sie können einen direkten Aufruf an den Back-End-Server senden und überprüfen, ob Sie dieselbe Antwort „503 Service Nicht verfügbar“ wie bei der Anfrage über Apigee Edge erhalten.

  1. Prüfen Sie, ob Sie alle erforderlichen Header, Abfrageparameter und Anmeldedaten haben, die im Rahmen der Anfrage an den Back-End-Server übergeben werden müssen.
  2. Wenn der Back-End-Dienst öffentlich zugänglich ist, können Sie den Befehl „curl“, Postman oder einen anderen REST-Client verwenden und die Back-End-Server-API direkt aufrufen.
  3. Wenn der Back-End-Server nur von den Message Processorn aus zugänglich ist, können Sie den curl-Befehl, Postman oder einen anderen REST-Client verwenden und die Back-End-Server-API direkt vom Message Processor aus aufrufen.
  4. Überprüfen Sie, ob der Back-End-Dienst tatsächlich den Fehler 503 Service Nicht verfügbar zurückgibt.

Auflösung

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

  • Wenn das Problem dadurch verursacht wird, dass der Back-End-Server wegen Wartungsarbeiten nicht verfügbar ist, können Sie den Back-End-Server nach dem Wartungszeitraum online schalten.
  • Wenn das Problem auf eine Überlastung des Back-End-Servers zurückzuführen ist, beheben Sie das Problem, sofern Sie Zugriff auf den Back-End-Server haben. Andernfalls müssen Sie möglicherweise mit Ihrem Back-End-Serverteam zusammenarbeiten, um das Problem zu beheben.

Probleme mithilfe der API-Überwachung diagnostizieren

Mit dem API-Monitoring können Sie Problembereiche schnell isolieren, um Fehler-, Leistungs- und Latenzprobleme und deren Quelle zu diagnostizieren, z. B. Entwickleranwendungen, API-Proxys, Back-End-Ziele oder die API-Plattform.

Gehen Sie ein Beispielszenario durch, in dem gezeigt wird, wie Sie 5xx-Probleme mit Ihren APIs mithilfe von API-Monitoring beheben können. Sie können beispielsweise eine Benachrichtigung einrichten, damit Sie informiert werden, wenn die Anzahl der Fehler in Messaging.adaptors.http.flow.ErrorResponseCode einen bestimmten Grenzwert überschreitet.

Erfassen von Diagnoseinformationen erforderlich

Wenn das Problem trotz Ausführung der Anleitung oben weiterhin besteht, stellen Sie die folgenden Diagnoseinformationen zusammen und wenden Sie sich an den Apigee-Support.

Wenn Sie eine öffentliche Cloud nutzen, geben Sie die folgenden Informationen an:

  • Name der Organisation
  • Name der Umgebung
  • API-Proxy-Name
  • Führen Sie den curl-Befehl aus, um den Fehler 503 zu reproduzieren.
  • Ablaufverfolgungsdatei mit den Anfragen mit dem Fehler 503 Service Nicht verfügbar
  • Wenn die 503-Fehler derzeit nicht auftreten, geben Sie den Zeitraum und die Zeitzoneninformationen an, in denen 503-Fehler in der Vergangenheit aufgetreten sind.

Wenn Sie die private Cloud nutzen, geben Sie die folgenden Informationen an:

  • Vollständige Fehlermeldung bei fehlgeschlagenen Anfragen.
  • Organisation, Umgebungsname und API-Proxy-Name, für die 503-Fehler auftreten.
  • API-Proxy-Bundle.
  • Ablaufverfolgungsdatei mit den Anfragen mit dem Fehler 503 Service Nicht verfügbar.
  • NGINX-Zugriffslogs
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  • Message Processor-Protokolle.
    /opt/apigee/var/log/edge-message-processor/logs/system.log
  • Der Zeitraum mit den Zeitzoneninformationen, in dem die 503-Fehler aufgetreten sind.