<ph type="x-smartling-placeholder"></ph>
Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur
Apigee X-Dokumentation. Weitere Informationen
Symptom
Die Clientanwendung empfängt den HTTP-Statuscode 504 mit der Meldung "Gateway Timeout" als Reaktion auf API-Aufrufe.
Diese Fehlerantwort zeigt an, dass der Client während der Ausführung eines API-Aufrufs keine rechtzeitige Antwort von Apigee Edge oder dem Backend-Server erhalten hat.
Fehlermeldung
Die Clientanwendung empfängt den folgenden Antwortcode:
HTTP/1.1 504 Gateway Timeout
Auf diesen Code kann eine Fehlermeldung wie die folgende folgen:
<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 lautet Client -> Router -> Message Processor -> Back-End-Server wie in der folgenden Abbildung gezeigt:
Für die Clientanwendung, Router und Message Processor werden geeignete Zeitüberschreitungswerte konfiguriert. Apigee Edge erwartet eine Antwort für jede API-Anfrage innerhalb eines Zeitraums, der auf den Zeitlimitwerten basiert. Wenn die Antwort nicht innerhalb des angegebenen Zeitraums eingeht, wird die Antwort „504 Gateway Timeout“ zurückgegeben.
Mögliche Ursachen
In Apigee Edge ist die typische Ursache für die Antwort 504 Gateway Timeout vom Backend-Server die folgende:
Ursache | Beschreibung | Anleitung zur Fehlerbehebung für |
---|---|---|
Back-End-Server, der mit 504 Gateway-Zeitüberschreitung antwortet | Der Backend-Server überschreitet das Zeitlimit und gibt die Antwort 504 Gateway Timeout an den Message Processor zurück. | Private und öffentliche Edge-Cloud-Nutzer |
Backend-Server antwortet mit 504-Gateway-Zeitüberschreitung
Der Backend-Server antwortet möglicherweise mit dem HTTP-Antwortcode 504 Gateway Timeout.
Diagnose
In diesem Abschnitt wird erläutert, wie Sie eine 504-Gateway-Zeitüberschreitung korrekt diagnostizieren. Verfahren für private und Nutzer von öffentlichen Clouds werden aufgelistet.
Verfahren 1: Trace verwenden (Nutzer von privaten und öffentlichen Clouds)
- Aktivieren Sie Trace in der Apigee-UI für die betroffene API.
- Senden Sie eine Anfrage an den Back-End-Server.
- Wenn die fehlgeschlagene API-Anfrage eine 504-Antwort vom Back-End-Server in Trace anzeigt, ist die Ursache für das Zeitlimit „504 Gateway Timeout“ der Backend-Server.
- Klicken Sie auf Antwort vom Zielserver erhalten, um die Antwortzeit zu ermitteln.
Phase in Trace. Im gezeigten Beispiel beträgt die verstrichene Zeit 60.004 ms:
Der Abschnitt „Phase Details“ (Phasendetails) enthält zusätzliche Informationen:
- Darin wird die vom Back-End-Server empfangene Antwort 504 Gateway Timeout hervorgehoben.
- Im Abschnitt Response Content (Antwortinhalt) wird der vollständige Text der Antwort des Back-End-Server. Wie bereits erwähnt, können sich das Format und der Inhalt der Antwortnutzlast unterscheiden. basierend auf der Implementierung des Back-End-Servers.
- Der Response Header > Server kann den Ursprung der Antwort angeben.
- Klicken Sie auf Aufgezeichnete Analytics-Daten, um Analytics-Daten aufzurufen und die Diagnose zu bestätigen.
in Trace, wie in der folgenden Abbildung dargestellt:
Im Abschnitt Response Headers der Phase Details werden die Werte der
X-Apigee-fault-code
undX-Apigee-fault-source
, wie in den Abbildung unten:Wenn diese Felder die in der nachstehenden Tabelle aufgeführten Werte enthalten, wird der Fehler 504 zurückgegeben. vom Back-End-Server:
Antwortheader Wert X-Apigee-fault-source Ziel X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode -
Prüfen, ob
Proxy-Verkettung. Führen Sie die folgenden Schritte aus, um festzustellen, ob der Back-End-Server einen anderen Proxy aufruft.
in Apigee:
<ph type="x-smartling-placeholder">
- </ph>
- Gehen Sie zurück zur Phase Anfrage an Zielserver gesendet und klicken Sie auf Schaltfläche Curl anzeigen, um den Hostalias des Back-End-Servers aufzurufen.
- Wenn der Host-Alias des Back-End-Servers auf einen Alias des virtuellen Hosts verweist, befindet sich die Proxy-Verkettung in Wiederholen Sie die Schritte oben für jeden verketteten Proxy, um die Ursache des 504-Gateways zu diagnostizieren. Zeitüberschreitungsfehlerantwort. 504 Gateway-Zeitüberschreitungen in verketteten Proxys in anderen kann der Anfrage-/Antwort-Zyklus mithilfe von diagnostiziert werden. dieses Playbook.
- Wenn der Hostalias des Backend-Servers auf den Backend-Server verweist, fahren Sie mit Lösung.
Prozedur 2: Back-End-Server-API direkt aufrufen (Nutzer von öffentlichen und privaten Clouds)
Rufen Sie den Backend-Server direkt auf, um zu bestätigen, dass dasselbe Antwortverhalten mit dem Fehler 504 Gateway-Zeitüberschreitung aufgetreten ist wenn die Anfrage über Apigee Edge erfolgt.
- Achten Sie darauf, dass Sie alle erforderlichen Header, Abfrageparameter und Anmeldedaten haben, die zum als Teil der Anfrage an den Back-End-Server übergeben.
- Wenn der Back-End-Dienst öffentlich zugänglich ist, können Sie den Befehl
curl
verwenden. Postman oder einen anderen REST-Client verwenden und die Back-End-Server-API direkt aufrufen. - Wenn der Backend-Server nur über die Message Processors erreichbar ist, verwende
curl
-Befehl, Postman oder einen anderen REST-Client, um die Back-End-Server-API direkt vom Message Processor. - Wenn der Backend-Dienst eine Antwort „504 Gateway Timeout“ zurückgibt, fahren Sie mit Lösung.
Verfahren Nr. 3: NGINX-Zugriffslogs prüfen (nur Private Cloud-Nutzer)
Mit NGINX-Zugriffslogs kann festgestellt werden, ob die 504-Fehlerantwort vom Back-End-Server gesendet wurde. Dies ist besonders nützlich, wenn das Problem in der Vergangenheit aufgetreten ist, nur zeitweise auftritt oder nicht erfasst werden kann. in Trace. Führen Sie die folgenden Schritte aus, um die NGINX-Zugriffslogs zu überprüfen:
- Rufen Sie die NGINX-Zugriffslogs mit folgendem Befehl auf:
/opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log
- Suchen Sie für den betroffenen API-Proxy nach 504-Fehlerantworten. Sie können einen bestimmten Zeitraum, , ob das Problem in der Vergangenheit aufgetreten ist, oder ermitteln Sie, ob Anfragen immer noch mit dem Fehler 504 fehlschlagen.
- Wenn es 504-Fehlerantworten gibt, ermitteln Sie, ob die Fehlerantwort vom Back-End-Server.
- Prüfen Sie den betroffenen API-Proxy auf Proxy-Verkettung. Das heißt, der Back-End-Server/Zielendpunkt ruft einen anderen Proxy in Apigee auf. Wenn der API-Proxy mit Proxy-Verkettung , wiederholen Sie die Schritte oben für jeden verketteten Proxy, um die Ursache des Zeitlimits „504 Gateway“ zu diagnostizieren. Fehlerantwort. 504 Gateway-Zeitüberschreitungen in verketteten Proxys in anderen Phasen können diagnostiziert werden in diesem Playbook.
- Wenn kein Proxy-Verkettung und die 504-Fehlerantwort stammt vom Back-End-Server, Fahre mit der Lösung fort.
Die Abbildung unten zeigt ein Beispiel für einen NGINX-Logeintrag, der eine 504-Fehlerantwort anzeigt, die vom Zielserver:
Wenn die Felder X-Apigee-fault-source
und X-Apigee-fault-code
den Parameter
Werte in der Tabelle unten sehen, stammt die 504-Antwort vom Back-End-Server:
Antwortheader | Wert |
---|---|
X-Apigee-fault-source | Ziel |
X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
Verfahren Nr. 4: API-Monitoring verwenden (nur für Nutzer der öffentlichen Cloud)
Mit der API-Überwachung können Sie Probleme Fehler-, Leistungs- und Latenzprobleme sowie deren Ursache ermitteln können, z. B. Entwickler-Apps, API-Proxys, Back-End-Ziele oder die API-Plattform.
Schritt durch ein Beispielszenario zeigt, wie Sie 5xx-Probleme mit Ihren APIs mithilfe von API-Monitoring beheben können. Beispiel: Richten Sie eine Benachrichtigung ein, damit Administratoren benachrichtigt werden, wenn die Anzahl der 504-Statuscodes einen bestimmten Grenzwert überschreitet.
Auflösung
Mithilfe der oben beschriebenen Diagnoseverfahren können Sie gemeinsam mit dem Back-End-Server-Team an einer Lösung des Problems arbeiten. auf dem Back-End-Server. Dies kann die Anpassung von Zeitüberschreitungen in den Back-End-Servern oder Zeitüberschreitungen in allen Load-Balancern vor den Zielservern.
Diagnoseinformationen einholen
Wenn das Problem weiterhin besteht, senden Sie die folgenden Diagnoseinformationen an den Apigee-Support.
Wenn Sie ein Nutzer der öffentlichen Cloud sind, geben Sie die folgenden Informationen an:
- Name der Organisation
- Name der Umgebung
- API-Proxy-Name
- Vollständiger
curl
-Befehl zum Reproduzieren der 504-Fehlerantwort - Ablaufverfolgungsdatei mit API-Anfragen, die die Fehlermeldung 504 Gateway Timeout erhalten
Wenn Sie ein Nutzer der Private Cloud sind, geben Sie die folgenden Informationen an:
- Vollständige Fehlermeldung für fehlgeschlagene Anfragen
- Name der Umgebung
- API-Proxy-Bundle
- Ablaufverfolgungsdatei mit API-Anfragen, die die Fehlermeldung 504 Gateway Timeout 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