<ph type="x-smartling-placeholder"></ph>
Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur
Apigee X-Dokumentation. Weitere Informationen
Videos
Video | Beschreibung |
---|---|
500 Interner Serverfehler – verursacht durch ein Back-End | Zeigt eine vom Backend-Server ausgelöste Echtzeit-500 Internal Server Error zusammen mit Schritten zur Fehlerbehebung und Behebung des Fehlers an. |
Symptom
Die Clientanwendung ruft den HTTP-Statuscode 500
zusammen mit der Nachricht ab
Internal Server Error
als Antwort auf API-Aufrufe.
Der HTTP-Statuscode 500
ist eine allgemeine Fehlerantwort. Das bedeutet, dass der Server
Aufgrund eines unerwarteten Problems konnte die Anfrage nicht ausgeführt werden. Dieser Fehler ist
normalerweise vom Server zurückgegeben, wenn kein anderer Fehlercode geeignet ist.
Fehlermeldungen
Die Clientanwendung ruft den folgenden Antwortcode ab:
HTTP/1.1 500 Internal Server Error
Außerdem kann eine Fehlermeldung wie die folgende angezeigt werden:
Beispiel 1
Beispielantwort Nr. 1 für den Back-End-Server
{"errorMessage":"Sorry either your e-mail or password didn't match.", "errorParameters":"{}", "errorCode":"500", "errorKey":"INVALID_EMAILPASSWORD"}
Beispiel 2
Beispielantwort Nr. 2 für den Back-End-Server
<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <Error> <code>500</code> <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message> </Error> </Body> </Envelope>
Mögliche Ursachen
Das 500 Internal Server Error
konnte aufgrund eines
mehrere Ursachen haben. In diesem Playbook wird erläutert, wie Sie Probleme mithilfe gängiger Schritte beheben
Fehler unabhängig von seiner Ursache.
Das kann folgende Ursachen haben:
Ursache | Beschreibung | Anleitungen zur Fehlerbehebung gelten für |
---|---|---|
Fehler auf dem Backend-Server | Der Backend-Server kann aus irgendeinem Grund ausfallen. | Private und öffentliche Edge-Cloud-Nutzer |
Allgemeine Diagnoseschritte
Verwenden Sie eines der folgenden Tools oder Techniken, um diesen Fehler zu diagnostizieren:
API-Monitoring
Verfahren 1: API-Monitoring verwenden
<ph type="x-smartling-placeholder">So diagnostizieren Sie den Fehler mithilfe von API-Monitoring:
- <ph type="x-smartling-placeholder"></ph> Melden Sie sich in der Apigee Edge-Benutzeroberfläche als Nutzer mit einem Rolle.
Wechseln Sie zu der Organisation, in der Sie das Problem untersuchen möchten.
- Wechseln Sie zum Bereich Analysieren > API-Monitoring > Untersuchen.
- Wählen Sie den Zeitraum aus, in dem Sie die Fehler beobachtet haben.
Stellen Sie den Fehlercode in den Vergleich mit der Zeit ein.
<ph type="x-smartling-placeholder">Wähle eine Zelle mit dem Fehlercode aus
messaging.adaptors.http.flow.ErrorResponseCode
wie gezeigt unten:Informationen über den Fehlercode
messaging.adaptors.http.flow.ErrorResponseCode
wird angezeigt als (siehe unten):Klicken Sie auf Logs ansehen und maximieren Sie die Zeile für die fehlgeschlagene Anfrage.
- Im Fenster Logs werden die folgenden Details angezeigt:
<ph type="x-smartling-placeholder">
- </ph>
- Nachrichten-ID der Anfrage
- Statuscode:
500
- Fehlerquelle:
target
- Fehlercode:
messaging.adaptors.http.flow.ErrorResponseCode
Trace
Verfahren 2: Trace-Tool verwenden
<ph type="x-smartling-placeholder">So diagnostizieren Sie den Fehler mit dem Trace-Tool:
- Aktivieren Sie die Trace-Sitzung und entweder
<ph type="x-smartling-placeholder">
- </ph>
- Auf den Fehler
500 Internal Server Error
mit Fehlercode wartenmessaging.adaptors.http.flow.ErrorResponseCode
oder - Wenn Sie das Problem reproduzieren können, führen Sie den API-Aufruf aus, um es zu reproduzieren.
500 Internal Server Error
- Auf den Fehler
Achten Sie darauf, dass Show all FlowInfos (Alle FlowInfos anzeigen) aktiviert ist:
- Wählen Sie eine der fehlgeschlagenen Anfragen aus und prüfen Sie den Trace.
- Gehen Sie die verschiedenen Phasen des Trace durch und ermitteln Sie, wo der Fehler aufgetreten ist.
Sie finden den Fehler normalerweise in einem Ablauf nach der Antwort vom Zielserver erhalten wie unten dargestellt:
- Navigieren Sie im Trace zur Phase AX (Analytics Data Recorded) und klicken Sie darauf.
Scrollen Sie nach unten zum Abschnitt Phase Details Response Headers und bestimmen Sie die Werte von X-Apigee-fault-code und X-Apigee-fault-code und X-Apigee-Message-ID wie unten gezeigt:
- Notieren Sie sich die Werte von X-Apigee-fault-code und X-Apigee-fault-code. und X-Apigee-Message-ID:
Antwortheader | Wert |
---|---|
X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
X-Apigee-fault-source | target |
X-Apigee-Message-ID | MESSAGE_ID |
NGINX
Verfahren 3: NGINX-Zugriffslogs verwenden
<ph type="x-smartling-placeholder">So diagnostizieren Sie den Fehler mithilfe von NGINX-Zugriffslogs:
- Wenn Sie ein Private Cloud-Nutzer sind, können Sie mithilfe von NGINX-Zugriffslogs ermitteln,
die wichtigsten Informationen zu HTTP
500 Internal Server Error
. Prüfen Sie die NGINX-Zugriffslogs:
<ph type="x-smartling-placeholder">/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Nach
500
-Fehlern mit Fehlercode suchenmessaging.adaptors.http.flow.ErrorResponseCode
während eines bestimmten Zeitraums (wenn das Problem im oder Anfragen mit500
fehlschlagen. Wenn Sie
500
-Fehler mit dem X-Apigee-fault-code finden Wert vonmessaging.adaptors.http.flow.ErrorResponseCode
, dann Bestimmen Sie den Wert von X-Apigee-fault-source..Beispiel für den Fehler 500 aus dem NGINX-Zugriffsprotokoll:
Der obige Beispieleintrag aus dem NGINX-Zugriffsprotokoll enthält die folgenden Werte für X-Apigee-fault-code und X-Apigee-fault-code
Header Wert X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
X-Apigee-fault-source target
Ursache: Fehler auf dem Backend-Server
Diagnose
Die vom Backend-Server zurückgegebene 500 Internal Server Error
kann sein
kann verschiedene Ursachen haben. Sie müssen jede Situation separat diagnostizieren.
- Ermitteln Sie den Fehlercode, die Fehlerquelle für den bei der API-Überwachung beobachteten Fehler. Trace-Tool- oder NGINX-Zugriffsprotokolle, wie unter Allgemeine Diagnoseschritte erläutert.
- Wenn die Fehlerquelle
target
und der Fehlercodemessaging.adaptors.http.flow.ErrorResponseCode
, dann bedeutet das, dass wird der Fehler vom Back-End-Server zurückgegeben. - Sie können einen der folgenden Schritte ausführen, um die Ursache des Problems zu diagnostizieren:
Trace
Trace verwenden:
Führen Sie die folgenden Schritte aus, wenn Sie eine Trace-Sitzung für den Fehler haben:
- Wählen Sie im Trace die API-Anfrage aus, die fehlgeschlagen ist:
500 Internal Server Error
Wählen Sie die Phase Antwort vom Zielserver erhalten aus der fehlgeschlagene API-Anfrage, wie in der folgenden Abbildung gezeigt:
Scrollen Sie nach unten zum Abschnitt Phase Details und überprüfen Sie die Response Content (Antwortinhalt), der die Antwort vom Back-End-Server enthält.
Beispiel für Antwortinhalt:
<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <Error> <code>500</code> <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message> </Error> </Body> </Envelope>
Beachten Sie, dass in der Antwort oben die Fehlermeldung vom Back-End-Server lautet: Nicht autorisiert. Dies weist darauf hin, dass der Nutzer möglicherweise ungültige und erhalten deshalb diesen Fehler.
Backend-Server aufrufen
Direkter Aufruf an den Backend-Server:
Sie können einen direkten Aufruf an den Back-End-Server durchführen und Folgendes tun:
- Prüfe, ob du denselben
500 Internal Server Error
erhältst Antwort, die empfangen wurde, als die Anfrage über Apigee Edge gestellt wurde - Überprüfen Sie die vom Back-End-Server empfangene Fehlermeldung (Antwort).
Führe die folgenden Schritte aus, um den direkten Aufruf an den Back-End-Server zu tätigen:
- Stellen Sie sicher, dass Sie über alle erforderlichen Header, Abfrageparameter und Anmeldedaten, die als Teil der Anfrage an den Back-End-Server übergeben werden müssen.
- Wenn der Back-End-Dienst öffentlich zugänglich ist, können Sie den
curl
-Befehl, Postman oder einen anderen REST-Client und rufen die die Back-End-Server-API verwenden. Wenn der Backend-Server nur über die Message Processors erreichbar ist, kannst du Verwenden Sie den Befehl
<ph type="x-smartling-placeholder">curl
, Postman oder einen anderen REST-Client und rufen Sie den Back-End-Server-API direkt vom Message Processor aus.- Prüft, ob der Back-End-Dienst tatsächlich
500 Internal Server Error
zurückgibt, und prüfe die vom Back-End-Server zurückgegebene Fehlermeldung (Antwort) und um die Ursache des Fehlers zu ermitteln.
Backend-Serverlogs
Back-End-Serverlogs verwenden
- Prüfen Sie die Back-End-Serverprotokolle und versuchen Sie, mehr Details zum Fehler und die Ursache des Problems.
- Wenn möglich, aktivieren Sie den Debug-Modus auf dem Backend-Server, um weitere Details zu erhalten über den Fehler und die Ursache.
- Wählen Sie im Trace die API-Anfrage aus, die fehlgeschlagen ist:
Überprüfen Sie, ob Sie <ph type="x-smartling-placeholder"></ph> Proxy-Verkettung im spezifischen Zielendpunkt des fehlgeschlagenen API-Proxys. wenn der Zielserver/Zielendpunkt einen anderen Proxy in Apigee Edge Dazu gehen Sie so vor:
Wenn Sie den Trace für die fehlgeschlagene Anfrage haben, gehen Sie zum Abschnitt Anfrage gesendet to target server-Phase und klicken Sie auf Show Curl (Curl anzeigen).
- Das Fenster Curl für die an den Zielserver gesendete Anfrage wird geöffnet, in dem Sie den Host-Alias des Zielservers ermitteln.
- Prüfen Sie den Zielendpunkt Ihres API-Proxys und prüfen Sie, ob der Back-End-Server Die URL oder der Hostname im Zielserver verweist auf einen anderen oder Ihren eigenen Proxy. Back-End-Server.
- Wenn der Hostalias des Zielservers auf einen Alias des virtuellen Hosts verweist,
ist die Proxy-Verkettung. Wiederholen Sie in diesem Fall alle oben genannten Schritte für den
Proxy verkettet, bis Sie die Ursache des
500 Internal Server Error
gefunden haben. In diesen Fällen kann500 Internal Server Error
auch in anderen verketteten Proxys, die diagnostiziert und gemäß den Anweisungen in diesem Playbook oder Playbook 500 „Interner Serverfehler“ - Wenn der Hostalias des Zielservers auf Ihren Backend-Server verweist, gehen Sie zu Lösung.
Auflösung
Wenn festgestellt wird, dass der Fehler 500
vom Back-End-Server stammt,
Arbeiten Sie mit Ihrem Backend-Server-Team zusammen, um das Problem entsprechend zu beheben.
Im oben beschriebenen Beispiel müssen Sie möglicherweise die Nutzer auffordern, gültige Anmeldedaten zu übergeben, um das Problem zu beheben. dieses Problem.
Wichtige Punkte
- Die tatsächliche Fehlermeldung, die vom Back-End-Server für
500 Internal Server Error
zurückgegeben wird, kann nur angezeigt werden, wenn Sie die Trace-Sitzung für den fehlgeschlagenen Vorgang erfasst haben. -Anfragen. - Die Antwort des Backend-Servers wird nicht in API-Überwachung, NGINX-Zugriffslogs oder Message Processor-Logs aus Sicherheitsgründen.
- Sie können die Backend-Serverprotokolle überprüfen oder den Debug-Modus im Backend aktivieren, um mehr
Details zum
500 Internal Server Error
und/oder die zurückgegebene Fehlermeldung ansehen durch den Back-End-Server.
Erfassen von Diagnoseinformationen erforderlich
Wenn das Problem trotz Befolgung der obigen Anleitung weiterhin besteht, stellen Sie Folgendes zusammen: Diagnoseinformationen zu erhalten, und wenden Sie sich an den Apigee Edge-Support.
Wenn Sie ein Public Cloud-Nutzer sind, geben Sie die folgenden Informationen an:
- Name der Organisation
- Name der Umgebung
- API-Proxy-Name
- Führen Sie den
curl
-Befehl aus, um den500
-Fehler zu reproduzieren - Ablaufverfolgungsdatei mit den Anfragen mit
500 Internal Server Error
- Wenn die
500
Fehler derzeit nicht auftreten, geben Sie die Uhrzeit an Punkt mit den Zeitzoneninformationen, für die500
Fehler in der Vergangenheit aufgetreten sind.
Wenn Sie ein Private Cloud-Nutzer sind, geben Sie die folgenden Informationen an:
- Vollständige Fehlermeldung für fehlgeschlagene Anfragen
- Organisation, Umgebungsname und API-Proxy-Name, den Sie beobachten
500
Fehler - API-Proxy-Bundle
- Ablaufverfolgungsdatei mit den Anfragen mit
500 Internal Server Error
- NGINX-Zugriffslogs
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Wo: ORG, ENV und PORT# durch tatsächliche Werte ersetzt werden.
- Systemprotokolle für Message Processor
/opt/apigee/var/log/edge-message-processor/logs/system.log
- Der Zeitraum mit den Zeitzoneninformationen, in dem die
500
-Fehler aufgetreten sind.