Sie lesen gerade die Dokumentation zu Apigee Edge.
Zur Dokumentation zu
Apigee X. info
Symptom
Die Clientanwendung erhält als Antwort auf API-Aufrufe einen HTTP-Statuscode 504 mit der Meldung "Gateway Timeout".
Diese Fehlerantwort gibt an, dass der Client während der Ausführung eines API-Aufrufs keine zeitnahe Antwort von Apigee Edge oder dem Backend-Server erhalten hat.
Fehlermeldung
Die Clientanwendung erhält den folgenden Antwortcode:
HTTP/1.1 504 Gateway Timeout
Auf diesen Code kann eine Fehlermeldung folgen, die der folgenden ähnelt:
<html> <head><title>504 Gateway Timeout</title></head> <body bgcolor="white"> <center><h1>504 Gateway Timeout</h1></center> </body> </html>
Was verursacht Gateway-Zeitüberschreitungen?
Der typische Pfad für eine API-Anfrage über Apigee Edge ist Client -> Router -> Message Processor -> Backend-Server, wie in der folgenden Abbildung dargestellt:

Die Clientanwendung, Router und Message Processors sind mit geeigneten Zeitüberschreitungswerten konfiguriert. Apigee Edge erwartet für jede API-Anfrage innerhalb eines Zeitraums eine Antwort, die auf den Zeitüberschreitungswerten basiert. Wenn die Antwort nicht innerhalb des angegebenen Zeitraums eingeht, wird eine 504 Gateway-Zeitüberschreitungsantwort zurückgegeben.
Mögliche Ursachen
In Apigee Edge ist die typische Ursache für eine 504 Gateway-Zeitüberschreitungsantwort vom Backend-Server folgende:
| Ursache | Beschreibung | Anleitung zur Fehlerbehebung für |
|---|---|---|
| Backend-Server antwortet mit 504 Gateway-Zeitüberschreitung | Auf dem Backend-Server tritt eine Zeitüberschreitung auf und er gibt eine 504 Gateway-Zeitüberschreitungsantwort an den Message Processor zurück. | Edge Private und Public Cloud-Nutzer |
Backend-Server antwortet mit 504 Gateway-Zeitüberschreitung
Der Backend-Server antwortet möglicherweise mit dem HTTP-Antwortcode 504 Gateway-Zeitüberschreitung.
Diagnose
In diesem Abschnitt wird erläutert, wie Sie eine 504 Gateway-Zeitüberschreitung richtig diagnostizieren. Es werden Verfahren für Private und Public Cloud-Nutzer aufgeführt.
Verfahren 1: Trace verwenden (Private und Public Cloud-Nutzer)
- Aktivieren Sie Trace in der Apigee-UI für die betroffene API.
- Senden Sie eine Anfrage an den Backend-Server.
- Wenn die fehlerhafte API-Anfrage in Trace eine 504-Antwort vom Backend-Server zeigt, ist der Backend-Server die Ursache für die 504 Gateway-Zeitüberschreitung.
- Klicken Sie in Trace auf die Phase Response received from target server
(Antwort vom Zielserver erhalten), um die Antwortzeit zu ermitteln. Im gezeigten Beispiel beträgt die verstrichene Zeit 60004 ms:

Der Abschnitt „Phase Details“ (Phasendetails) enthält zusätzliche Informationen:
- Er hebt die Antwort 504 Gateway Timeout (504 Gateway-Zeitüberschreitung) hervor, die vom Backend-Server empfangen wurde.
- Im Abschnitt Response Content (Antwortinhalt) wird der vollständige Text der Antwort vom Backend-Server angezeigt. Wie bereits erwähnt, können sich Format und Inhalt der Antwortnutzlast je nach Implementierung des Backend-Servers unterscheiden.
- Der Abschnitt Response Header > Server (Antwortheader > Server) kann angeben, woher die Antwort stammt.
- Klicken Sie in Trace auf die Phase Analytics Data Recorded
(Analytics-Daten erfasst), wie in der folgenden Abbildung dargestellt, um Analytics-Daten aufzurufen und die Diagnose zu bestätigen:

Im Abschnitt Response Headers (Antwortheader) der Phasendetails werden die Werte von
X-Apigee-fault-codeundX-Apigee-fault-sourceangezeigt, wie in der folgenden Abbildung dargestellt:
Wenn diese Felder die in der folgenden Tabelle gezeigten Werte enthalten, stammt die 504-Fehlerantwort vom Backend-Server:
Antwortheader Wert X-Apigee-fault-source Ziel X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode -
Prüfen Sie, ob eine
Proxy-Verkettung vorliegt. So stellen Sie fest, ob der Backend-Server einen anderen Proxy
in Apigee aufruft:
- Gehen Sie zurück zur Phase Request sent to target server (Anfrage an Zielserver gesendet) und klicken Sie auf die Schaltfläche Show Curl (Curl anzeigen), um den Hostalias des Backend-Servers aufzurufen.
- Wenn der Hostalias des Backend-Servers auf einen Alias des virtuellen Hosts verweist, ist die Proxy-Verkettung aktiv. Wiederholen Sie die oben genannten Schritte für jeden verketteten Proxy, um die Ursache der 504 Gateway Zeitüberschreitungsantwort zu diagnostizieren. 504 Gateway-Zeitüberschreitungen, die in verketteten Proxys in anderen Phasen des Anfrage-/Antwortzyklus auftreten, können mit diesem Playbook diagnostiziert werden.
- Wenn der Hostalias des Backend-Servers auf den Backend-Server verweist, fahren Sie mit der Auflösung fort.
Verfahren 2: API des Backend-Servers direkt aufrufen (Public und Private Cloud-Nutzer)
Rufen Sie den Backend-Server direkt auf, um zu bestätigen, dass das gleiche Verhalten bei der 504 Gateway-Zeitüberschreitungsantwort auftritt, wenn die Anfrage über Apigee Edge erfolgt.
- Achten Sie darauf, dass Sie alle erforderlichen Header, Abfrageparameter und Anmeldedaten haben, die Sie im Rahmen der Anfrage an den Backend-Server übergeben müssen.
- Wenn der Backend-Dienst öffentlich zugänglich ist, können Sie den
curlBefehl, Postman oder einen anderen REST-Client verwenden und die API des Backend-Servers direkt aufrufen. - Wenn der Backend-Server nur über die Message Processors zugänglich ist, verwenden Sie den
curlBefehl, Postman oder einen anderen REST-Client, um die API des Backend-Servers direkt vom Message Processor aufzurufen. - Wenn der Backend-Dienst eine 504 Gateway-Zeitüberschreitungsantwort zurückgibt, fahren Sie mit der Auflösung fort.
Verfahren 3: NGINX-Zugriffslogs prüfen (nur Private Cloud-Nutzer)
Anhand von NGINX-Zugriffslogs lässt sich feststellen, ob die 504-Fehlerantwort vom Backend-Server gesendet wurde. Dies ist besonders nützlich, wenn das Problem in der Vergangenheit aufgetreten ist, nur zeitweise auftritt oder nicht in Trace erfasst werden kann. So prüfen Sie die NGINX-Zugriffslogs:
- Rufen Sie die NGINX-Zugriffslogs mit diesem Befehl auf:
/opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log
- Suchen Sie nach 504-Fehlerantworten für den betroffenen API-Proxy. Sie können einen bestimmten Zeitraum prüfen, wenn das Problem in der Vergangenheit aufgetreten ist, oder feststellen, ob Anfragen weiterhin mit einer 504-Fehlerantwort fehlschlagen.
- Wenn 504-Fehlerantworten vorhanden sind, stellen Sie fest, ob die Fehlerantwort vom Backend-Server stammt.
- Prüfen Sie den betroffenen API-Proxy auf Proxy-Verkettung Das bedeutet, dass der Backend-Server/Zielendpunkt einen anderen Proxy in Apigee aufruft. Wenn der API-Proxy die Proxy-Verkettung verwendet, wiederholen Sie die oben genannten Schritte für jeden verketteten Proxy, um die Ursache der 504 Gateway-Zeitüberschreitungsantwort zu diagnostizieren. 504 Gateway-Zeitüberschreitungen, die in verketteten Proxys in anderen Phasen auftreten, können mit diesem Playbook diagnostiziert werden. Verwendung von diesem Playbook.
- Wenn keine Proxy-Verkettung vorliegt und die 504-Fehlerantwort vom Backend-Server stammt, fahren Sie mit der Auflösung fort.
Die folgende Abbildung zeigt ein Beispiel für einen NGINX-Logeintrag mit einer 504-Fehlerantwort, die vom Zielserver verursacht wurde:

Wenn die X-Apigee-fault-source und X-Apigee-fault-code Felder die
in der folgenden Tabelle gezeigten Werte enthalten, stammt die 504-Antwort vom Backend-Server:
| Antwortheader | Wert |
|---|---|
| X-Apigee-fault-source | Ziel |
| X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
Verfahren 4: API Monitoring verwenden (nur Public Cloud-Nutzer)
API Monitoring ermöglicht Ihnen, Problembereiche schnell zu isolieren, um Fehler, Leistungs- und Latenzprobleme sowie deren Ursachen wie Entwickler-Apps, API-Proxys, Backend-Ziele oder die API-Plattform zu diagnostizieren.
Sehen Sie sich ein Beispielszenario 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 Administratoren zu benachrichtigen, wenn die Anzahl der 504-Statuscodes einen bestimmten Schwellenwert überschreitet.
fest.Auflösung
Mit den oben beschriebenen Diagnoseverfahren können Sie mit dem Backend-Serverteam zusammenarbeiten, um das Problem auf dem Backend-Server zu beheben. Dazu gehört möglicherweise das Anpassen von Zeitüberschreitungen auf den Backend-Servern oder Zeitüberschreitungen in Load-Balancern vor den Zielservern.
Diagnoseinformationen erfassen
Wenn das Problem weiterhin besteht, geben Sie die folgenden Diagnoseinformationen an den Apigee-Support weiter.
Wenn Sie ein Public Cloud-Nutzer sind, geben Sie die folgenden Informationen an:
- Name der Organisation
- Umgebungsname
- Name des API-Proxys
- Vollständiger
curlBefehl, der zum Reproduzieren der 504-Fehlerantwort verwendet wurde - Trace-Datei mit API-Anfragen, die eine 504 Gateway-Zeitüberschreitungsantwort erhalten
Wenn Sie ein Private Cloud-Nutzer sind, geben Sie die folgenden Informationen an:
- Vollständige Fehlermeldung für die fehlgeschlagenen Anfragen
- Umgebungsname
- API-Proxy-Bundle
- Trace-Datei mit API-Anfragen, die eine 504 Gateway-Zeitüberschreitungsantwort erhalten
- NGINX-Zugriffslogs
/opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log
- Message Processor-Logs
/opt/apigee/var/log/edge-message-processor/logs/system.log