500 Interner Serverfehler – Back-End-Server

<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>
<ph type="x-smartling-placeholder">

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:

  1. <ph type="x-smartling-placeholder"></ph> Melden Sie sich in der Apigee Edge-Benutzeroberfläche als Nutzer mit einem Rolle.
  2. Wechseln Sie zu der Organisation, in der Sie das Problem untersuchen möchten.

  3. Wechseln Sie zum Bereich Analysieren > API-Monitoring > Untersuchen.
  4. Wählen Sie den Zeitraum aus, in dem Sie die Fehler beobachtet haben.
  5. Stellen Sie den Fehlercode in den Vergleich mit der Zeit ein.

    <ph type="x-smartling-placeholder">
  6. Wähle eine Zelle mit dem Fehlercode aus messaging.adaptors.http.flow.ErrorResponseCode wie gezeigt unten:

    ( Größeres Bild ansehen)

  7. Informationen über den Fehlercode messaging.adaptors.http.flow.ErrorResponseCode wird angezeigt als (siehe unten):

    ( Größeres Bild ansehen)

  8. Klicken Sie auf Logs ansehen und maximieren Sie die Zeile für die fehlgeschlagene Anfrage.

    ( Größeres Bild ansehen)

  9. 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:

  1. Aktivieren Sie die Trace-Sitzung und entweder <ph type="x-smartling-placeholder">
      </ph>
    • Auf den Fehler 500 Internal Server Error mit Fehlercode warten messaging.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
  2. Achten Sie darauf, dass Show all FlowInfos (Alle FlowInfos anzeigen) aktiviert ist:

  3. Wählen Sie eine der fehlgeschlagenen Anfragen aus und prüfen Sie den Trace.
  4. Gehen Sie die verschiedenen Phasen des Trace durch und ermitteln Sie, wo der Fehler aufgetreten ist.
  5. Sie finden den Fehler normalerweise in einem Ablauf nach der Antwort vom Zielserver erhalten wie unten dargestellt:

    ( Größeres Bild ansehen)

  6. Navigieren Sie im Trace zur Phase AX (Analytics Data Recorded) und klicken Sie darauf.
  7. 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:

    ( Größeres Bild ansehen)

  8. Notieren Sie sich die Werte von X-Apigee-fault-code und X-Apigee-fault-code. und X-Apigee-Message-ID:
  9. 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:

  1. Wenn Sie ein Private Cloud-Nutzer sind, können Sie mithilfe von NGINX-Zugriffslogs ermitteln, die wichtigsten Informationen zu HTTP 500 Internal Server Error.
  2. Prüfen Sie die NGINX-Zugriffslogs:

    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    <ph type="x-smartling-placeholder">
  3. Nach 500-Fehlern mit Fehlercode suchen messaging.adaptors.http.flow.ErrorResponseCode während eines bestimmten Zeitraums (wenn das Problem im oder Anfragen mit 500 fehlschlagen.
  4. Wenn Sie 500-Fehler mit dem X-Apigee-fault-code finden Wert von messaging.adaptors.http.flow.ErrorResponseCode, dann Bestimmen Sie den Wert von X-Apigee-fault-source..

    Beispiel für den Fehler 500 aus dem NGINX-Zugriffsprotokoll:

    ( Größeres Bild ansehen)

    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.

  1. 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.
  2. Wenn die Fehlerquelle target und der Fehlercode messaging.adaptors.http.flow.ErrorResponseCode, dann bedeutet das, dass wird der Fehler vom Back-End-Server zurückgegeben.
  3. 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:

    1. Wählen Sie im Trace die API-Anfrage aus, die fehlgeschlagen ist: 500 Internal Server Error
    2. Wählen Sie die Phase Antwort vom Zielserver erhalten aus der fehlgeschlagene API-Anfrage, wie in der folgenden Abbildung gezeigt:

      ( Größeres Bild ansehen)

    3. 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.

    <ph type="x-smartling-placeholder">

    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:

    1. 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.
    2. 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.
    3. Wenn der Backend-Server nur über die Message Processors erreichbar ist, kannst du Verwenden Sie den Befehl curl, Postman oder einen anderen REST-Client und rufen Sie den Back-End-Server-API direkt vom Message Processor aus.

      <ph type="x-smartling-placeholder">
    4. 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

    1. Prüfen Sie die Back-End-Serverprotokolle und versuchen Sie, mehr Details zum Fehler und die Ursache des Problems.
    2. Wenn möglich, aktivieren Sie den Debug-Modus auf dem Backend-Server, um weitere Details zu erhalten über den Fehler und die Ursache.
  4. Ü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:

    1. 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).

    2. Das Fenster Curl für die an den Zielserver gesendete Anfrage wird geöffnet, in dem Sie den Host-Alias des Zielservers ermitteln.
    3. 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.
    4. 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 kann 500 Internal Server Error auch in anderen verketteten Proxys, die diagnostiziert und gemäß den Anweisungen in diesem Playbook oder Playbook 500 „Interner Serverfehler“
    5. 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

  1. 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.
  2. Die Antwort des Backend-Servers wird nicht in API-Überwachung, NGINX-Zugriffslogs oder Message Processor-Logs aus Sicherheitsgründen.
  3. 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 den 500-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 die 500 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.