503 Dienst nicht verfügbar

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

Videos

Weitere Informationen zu 503-Fehlern finden Sie in den folgenden Videos:

Video Beschreibung
Fehlerbehebung: Fehler 503 „Dienst nicht verfügbar“ aufgrund eines DNS-Problems Hier finden Sie Informationen zu folgenden Themen:
  • Fehler 503 „Dienst nicht verfügbar“ aufgrund von DNS-Auflösung und netzwerkbezogenen Problemen in Apigee Edge
  • Fehlerbehebung und Behebung eines Echtzeitfehlers 503 „Dienst nicht verfügbar“, der durch ein Problem mit der DNS-Auflösung verursacht wird
Fehlerbehebung und Behebung des Fehlers 503 „Dienst nicht verfügbar“ aufgrund eines Netzwerkproblems Fehlerbehebung und Behebung eines Echtzeitfehlers 503 Service Nicht verfügbar, der durch ein Netzwerkproblem in Apigee Edge verursacht wird

Symptom

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

Fehlermeldungen

Folgende Fehlermeldung wird angezeigt:

HTTP/1.1 503 Service Unavailable
      

In der HTTP-Antwort wird auch die folgende Fehlermeldung angezeigt:

Dienst nicht verfügbar

{
   "fault": {
      "faultstring": "The Service is temporarily unavailable",
      "detail": {
           "errorcode": "messaging.adaptors.http.flow.ServiceUnavailable"
       }
    }
}
      

Mögliche Ursachen

Die HTTP-Antwort 503 Service Nicht verfügbar mit dem Fehlercode messaging.adaptors.http.flow.ServiceUnavailable tritt auf, wenn beim Nachrichtenprozessor von Apigee Edge während der Kommunikation mit dem Back-End-Server Fehler aufgrund von Zeitüberschreitungen, falschem Hostnamen oder SSL-Handshakefehlern auftreten.

Mögliche Ursachen für die Antwort 503 Service Unavailable sind:

Ursache Beschreibung Wer kann die Schritte zur Fehlerbehebung ausführen?
Verbindungsfehler aufgrund falscher DNS-Auflösung Die DNS-Auflösung des Zielservers führte zu fehlerhaften IP-Adressen, die zu Verbindungsfehlern führten. Edge Private Cloud-Nutzer
Verbindungsfehler Netzwerk- oder Verbindungsprobleme verhindern, dass der Client eine Verbindung zum Server herstellt. Edge Private Cloud-Nutzer
Falscher Name des Zielserver-Hostnamens Der angegebene Zielserver-Host ist falsch oder enthält unerwünschte Zeichen (z. B. Leerzeichen). Nutzer von Edge Public und Private Cloud
Fehler beim SSL-Handshake Der TLS/SSL-Handshake zwischen Client und Server ist fehlgeschlagen. (Die Fehlerbehebung für diese Problemklasse wird in einem anderen Thema behandelt.) Nutzer von Edge Public und Private Cloud

Allgemeine Diagnoseschritte

Nachrichten-ID der fehlgeschlagenen Anfrage ermitteln

Trace-Tool

So ermitteln Sie die Nachrichten-ID der fehlgeschlagenen Anfrage mit dem Trace-Tool:

  1. Wenn das Problem weiterhin besteht, aktivieren Sie die Trace-Sitzung für die betroffene API.
  2. Führen Sie den API-Aufruf aus und reproduzieren Sie das Problem – 503-Dienst nicht verfügbar mit Fehlercode messaging.adaptors.http.flow.ServiceUnavailable.
  3. Wählen Sie eine der fehlgeschlagenen Anfragen aus.
  4. Navigieren Sie zur AX-Phase und ermitteln Sie die Nachrichten-ID (X-Apigee.Message-ID) der Anfrage, indem Sie im Abschnitt Phasen Details (Phasendetails) nach unten scrollen, wie in der folgenden Abbildung dargestellt.

    Nachrichten-ID im Abschnitt Phasendetails

NGINX-Zugriffslogs

So ermitteln Sie die Nachrichten-ID der fehlgeschlagenen Anfrage mithilfe der NGINX-Zugriffslogs:

Sie können auch die NGINX-Zugriffslogs verwenden, um die Nachrichten-ID für die 503-Fehler zu ermitteln. Dies ist besonders nützlich, wenn das Problem in der Vergangenheit aufgetreten ist oder 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. Prüfen Sie die NGINX-Zugriffslogs: (/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 ob es immer noch Anfragen mit 503-Fehlern gibt.
  3. Wenn 503-Fehler mit X-Apigee-Fehler-Code-Messaging.adaptors.http.flow.ServiceAvailability auftreten, notieren Sie die Nachrichten-ID für eine oder mehrere solcher Anfragen, wie im folgenden Beispiel gezeigt:

    Beispieleintrag mit dem Fehler 503

    Beispieleintrag mit Statuscode, Nachrichten-ID, Fehlerquelle und Fehlercode

Verbindungsfehler aufgrund falscher DNS-Auflösung

Diagnose

  1. Bestimmen Sie die Nachrichten-ID der fehlgeschlagenen Anfrage.
  2. Suchen Sie im Message Processor-Protokoll nach der spezifischen Anfragenachrichten-ID (/opt/apigee/var/log/edge-message-processor/logs/system.log). Es können folgende Fehler auftreten:

    Ein onConnectTimeout-Fehler gibt an, dass der Message Processor innerhalb des voreingestellten Zeitlimits für die Verbindung (Standardwert: 3 Sekunden) keine Verbindung zum Back-End-Server herstellen konnte.
    2019-08-14 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[Connected:]@164162 useCount=1 bytesRead=0 bytesWritten=0 age=3001ms lastIO=3001ms .onConnectTimeout connectAddress=www.abc.com/11.11.11.11  resolvedAddress=www.abc.com/22.22.22.22
    
    2019-08-14 09:11:49,333 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onTimeout() : RequestWriteListener.onTimeout(HTTPRequest@6b393600)
          
  3. Notieren Sie sich die aufgelöste IP-Adresse im Fehler onConnectTimeout und prüfen Sie, ob die IP-Adresse für Ihren Back-End-Server gültig ist. Wenn die IP-Adresse gültig ist, gehen Sie zu Verbindungsfehler.
  4. Wenn die IP-Adresse ungültig ist, kann dies höchstwahrscheinlich auf Probleme mit der DNS-Auflösung zurückzuführen sein.
  5. Wiederholen Sie Schritt 3 und Schritt 4 für weitere fehlerhafte API-Anfragen und prüfen Sie, ob Sie dieselbe oder eine andere ungültige IP-Adresse sehen.
  6. Suchen Sie im Message Processor-Protokoll (/opt/apigee/var/log/edge-message-processor/logs/system.log) nach Nachrichten mit dem Suchbegriff DNS Refresh. Überprüfen Sie, ob hin und wieder fehlerhafte oder ungültige IP-Adressen zum DNS-Cache des Message Processor hinzugefügt werden.
    2019-08-14 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 INFO c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.reportDifferences() : DNS Refresh for host: apitarget-uat.schemeweb.co.uk:4436. Added 2 IPs [www.abc.com/22.22.22.22, www.abc.com/33.33.33.33] Removed 1 IPs [www.abc.com/11.11.11.11]
          
  7. Dieses Problem kann auftreten, wenn Probleme mit den autoritativen DNS-Servern oder den in /etc/resolv.conf konfigurierten Nameservern auftreten.

    Normalerweise sind mindestens ein autoritativer DNS-Server für die DNS-Auflösung konfiguriert. Wenn keine autoritativen DNS-Server vorhanden sind, wird auf die Konfigurationseinrichtung in /etc/resolv.conf zurückgesetzt und die DNS-Auflösung entsprechend durchgeführt. Beispiel: Wenn /etc/resolv.conf für die Verwendung bestimmter Nameserver konfiguriert ist, werden diese Nameserver zur DNS-Auflösung genutzt.
  8. Wenn Probleme mit autoritativen DNS-Servern oder in /etc/resolv.conf angegebenen Nameservern auftreten, werden die Hostnamen des Back-End-Servers in ungültige oder ungültige IP-Adressen aufgelöst. Die fehlerhaften/ungültigen IP-Adressen werden dann im DNS-Cache des Message Processor gespeichert.
    1. Wenn das Problem mit autoritativen DNS-Servern oder Nameservern in /etc/resolv.conf dauerhaft besteht, verbleiben die ungültigen/ungültigen IP-Adressen weiterhin im DNS-Cache des Message Processor. Solange die fehlerhaften IP-Adressen im DNS-Cache des Message Processor gespeichert sind, schlagen die Anfragen für alle diese APIs, die den spezifischen Back-End-Server verwenden, mit dem Fehler 503 fehl.
    2. Wenn das Problem mit autoritativen DNS-Servern oder Nameservern in /etc/resolv.conf zeitweise auftritt, werden gültige und fehlerhafte IP-Adressen mit Unterbrechungen im DNS-Cache gespeichert. In diesem Fall werden ab und zu 503-Fehler für alle APIs angezeigt, die den jeweiligen Back-End-Server verwenden.
  9. Wenn das Problem mit den DNS-Servern dauerhaft besteht, treten fortlaufende Fehler auf. Wenn das Problem mit den DNS-Servern nur zeitweise auftritt, treten zeitweise Fehler auf. Das heißt, wenn der Hostname des Back-End-Servers in falsche IP-Adressen aufgelöst wird, treten 503-Fehler auf. Wenn die Hostnamen des Back-End-Servers in gute IP-Adressen aufgelöst werden, werden Sie erfolgreiche Antworten beobachten.

Auflösung

Wenden Sie sich an Ihren Betriebssystemadministrator und beheben Sie die Probleme mit den DNS-Servern.

  1. Wenn ein Problem mit den autoritativen DNS-Servern oder Nameservern in /etc/resolv.conf auftritt, beheben Sie es gemeinsam mit dem entsprechenden Server.
  2. Wenn es ein Problem mit der Konfiguration in /etc/resolv.conf auf Systemen mit Message Processorn gibt, beheben Sie das Konfigurationsproblem.

Verbindungsfehler

Ein Verbindungsfehler tritt auf, wenn ein Apigee Edge-Nachrichtenprozessor versucht, eine Verbindung zu einem Back-End-Server herzustellen, und eines der folgenden Probleme auftritt:

  • Message Processor kann keine Verbindung innerhalb des voreingestellten Zeitlimits für Verbindungen herstellen. (Standardeinstellung: 3 Sekunden)
  • Der Back-End-Server lehnt die Verbindung ab.

Diagnose

  1. Bestimmen Sie die Nachrichten-ID der fehlgeschlagenen Anfrage.
  2. Suchen Sie im Message Processor-Protokoll (/opt/apigee/var/log/edge-message-processor/logs/system.log) nach der spezifischen Anfragenachrichten-ID. Es können folgende Fehler auftreten:
    1. Ein onConnectTimeout-Fehler weist darauf hin, dass der Message Processor innerhalb des voreingestellten Zeitlimits für die Verbindung keine Verbindung zum Back-End-Server herstellen konnte.
      2016-06-23 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@2 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[C:]@10 useCount=1 bytesRead=0 bytesWritten=0 age=3001ms lastIO=3001ms .onConnectTimeout connectAddress=www.abc.com/11.11.11.11:80 resolvedAddress=www.abc.com/11.11.11.11
      2016-06-23 09:11:49,333 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@2 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onTimeout() : RequestWriteListener.onTimeout(HTTPRequest@6b393600)
      
    2. Der Fehler java.net.ConnectException: Connection abgelehnte gibt an, dass die Verbindung vom Back-End-Server abgelehnt wurde.
      14:40:16.531 +0530
      2016-06-17 09:10:16,531 org:myorg env:prod api:www.abc.com rev:1 rrt07eadn-22739-40983870-15 NIOThread@2 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to www.abc.com:11.11.11.11:443 failed with exception {}
      java.net.ConnectException: Connection refused
      at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.7.0_75]
      at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739) ~[na:1.7.0_75]
      at com.apigee.nio.ClientChannel.finishConnect(ClientChannel.java:121) ~[nio-1.0.0.jar:na]
      at com.apigee.nio.handlers.NIOThread.run(NIOThread.java:108) ~[nio-1.0.0.jar:na]
      
  3. Prüfen Sie mit dem Befehl telnet, ob Sie von jedem der Message Processor aus eine direkte Verbindung zum jeweiligen Back-End-Server herstellen können:
    1. Wenn der Back-End-Server in eine einzelne IP-Adresse aufgelöst wird, verwenden Sie den folgenden Befehl:
      telnet BackendServer-IPaddress 443
                
    2. Wenn der Back-End-Server in mehrere IP-Adressen aufgelöst wird, verwenden Sie den Hostnamen des Back-End-Servers im telnet-Befehl wie unten gezeigt:
      telnet BackendServer-HostName 443
                
  4. Wenn Sie eine Verbindung zum Back-End-Server herstellen können, wird möglicherweise eine Meldung wie Connected to backend-server angezeigt. Wenn Sie keine Verbindung zum Back-End-Server herstellen können, liegt dies möglicherweise daran, dass die IP-Adressen der Message Processor für den jeweiligen Back-End-Server nicht auf der Zulassungsliste stehen.

Auflösung

Gewähren Sie Zugriff auf die IP-Adressen des Message Processor auf dem spezifischen Back-End-Server, um Traffic von den Edge Message Processorn den Zugriff auf Ihren Back-End-Server zu ermöglichen. Unter Linux könnten Sie beispielsweise iptables verwenden, um den Traffic von den IP-Adressen des Message Processor auf dem Back-End-Server zuzulassen.

Wenn das Problem weiterhin besteht, wenden Sie sich an Ihren Netzwerkadministrator, um es zu ermitteln und zu beheben. Wenn Sie weitere Unterstützung von Apigee benötigen, wenden Sie sich bitte an den Apigee-Support.

Falscher Hostname des Zielservers

Diagnose

Wenn der auf dem Zielserver angegebene Hostname falsch ist, erhalten Sie die Antwort 503 Service Nicht verfügbar mit dem Fehlercode messaging.adaptors.http.flow.ServiceUnavailable..

Trace-Tool

So diagnostizieren Sie eine Diagnose mit dem Trace-Tool:

  1. Wenn das Problem weiterhin besteht, aktivieren Sie die Trace-Sitzung für die betroffene API.
  2. Führen Sie den API-Aufruf aus und reproduzieren Sie das Problem – 503-Dienst nicht verfügbar mit Fehlercode messaging.adaptors.http.flow.ServiceUnavailable.
  3. Wählen Sie eine der fehlgeschlagenen Anfragen aus.
  4. Gehen Sie die verschiedenen Phasen des Trace durch und ermitteln Sie, wo der Fehler aufgetreten ist.
  5. Wählen Sie die FlowInfo-Datei aus, die den Fehler enthält. Im Feld error.cause finden Sie weitere Informationen, die Ihnen Aufschluss über die Fehlerursache geben, wie im folgenden Beispiel gezeigt:

    Beispielanfrage, die „error.cause“ im Trace zeigt

    Beispielanfrage mit Fehler.cause im Trace
  6. Wenn für error.cause der Wert Host nicht erreichbar angezeigt wird, liegt das wahrscheinlich an einer der folgenden Ursachen:
    • Der in der Konfiguration des Zielservers/Zielendpunkts angegebene Hostname ist falsch oder enthält unerwünschte Leerzeichen oder Sonderzeichen.

      Beispielsweise enthält der Hostnamen ein unerwünschtes Leerzeichen, wie unten dargestellt:
      "demo-target.apigee.net "
                        
    • Der Hostname, der im API-Proxy mithilfe der Richtlinie AssignMessage oder JavaScript von der Variablen target.url überschrieben wird, ist falsch oder enthält ein Leerzeichen oder andere unerwünschte Sonderzeichen.
  7. Prüfen Sie die Konfiguration des Zielendpunkts und/oder die Definition des Zielservers, um festzustellen, ob der Hostname des Zielservers falsch ist oder unerwünschte Leerzeichen oder Sonderzeichen enthält.
  8. Wenn der Zielserverhost dynamisch erstellt wird, prüfen Sie die entsprechende Richtlinie, z. B. die Richtlinie AssignMessage/JavaScript, die zum Erstellen des Hosts verwendet wurde. Prüfen Sie, ob der Hostname des Zielservers falsch ist oder unerwünschte Leerzeichen oder Sonderzeichen enthält.
  9. Nachdem Sie den Namen des Zielserver-Hostnamens ermittelt haben, führen Sie den Befehl nslookup/dig für den Hostnamen aus, um festzustellen, ob er aufgelöst werden kann.

    Wenn Sie beispielsweise den Befehl nslookup für den Hostnamen mit einem unerwünschten Leerzeichen ausführen, wird die folgende Ausgabe zurückgegeben:

    nslookup "demo-target.apigee.net "
    Server:	49.205.75.2
    Address:	49.205.75.2#53
    
    ** server can't find demo-target.apigee.net\032: NXDOMAIN
    
  10. Wenn der Betriebssystembefehl nslookup auch den Hostnamen nicht auflösen kann, liegt die Ursache in dem falschen Hostnamen, der für den Zielserver verwendet wurde.

    Gehe zu Lösung.

Logs des Nachrichtenverarbeiters

So führen Sie eine Diagnose mithilfe von Message Processor-Logs durch:

  1. Bestimmen Sie die Nachrichten-ID der fehlgeschlagenen Anfrage.
  2. Suchen Sie im Message Processor-Protokoll nach der Nachrichten-ID. (/opt/apigee/var/log/edge-message-processor/logs/system.log)
  3. Wenn die folgenden Warn-/Fehlermeldungen angezeigt werden, konnte der Message Processor den Hostnamen nicht auflösen. Da die Nachricht zurückgestellt wird, wird diese Warnmeldung möglicherweise nicht für alle Nachrichten-IDs/Anfragen angezeigt.
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 WARN S.HTTPCLIENTSERVICE - DNSCache$2.failed() : Failed to resolve hostname www.somehost.com . Reason mocktarget.apigee.net : Name or service not known. This log message will snooze for 2 hours
        
  4. Es wird eine Warnmeldung angezeigt, in der der Message Processor die Adresse aus dem DNS-Cache entfernt, da der Host des Zielservers nicht erreicht werden konnte.
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 WARN  c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.addressNotReachable() : The last address has been removed from Address list null refreshing
        
  5. Möglicherweise wird dann eine Meldung angezeigt, dass der Message Processor mit der Ausnahme „Host nicht erreichbar“ fehlschlägt. Manchmal wird der Hostname als Teil der Fehlermeldung angezeigt:
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to demo-target.apigee.net  failed with exception {}
    java.lang.RuntimeException: Host not reachable
    	at com.apigee.protocol.http.HTTPClient$Context.initConnect(HTTPClient.java:704)
    	at com.apigee.protocol.http.HTTPClient$Context.send(HTTPClient.java:675)
    	at com.apigee.messaging.adaptors.http.flow.data.TargetRequestSender.sendRequest(TargetRequestSender.java:234)
    	…<snipped>
        
  6. Manchmal wird er als null angezeigt, da der Hostname nicht aufgelöst oder erreichbar ist (siehe unten):
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to null failed with exception {}
    java.lang.RuntimeException: Host not reachable
    	at com.apigee.protocol.http.HTTPClient$Context.initConnect(HTTPClient.java:704)
    	at com.apigee.protocol.http.HTTPClient$Context.send(HTTPClient.java:675)
    	at com.apigee.messaging.adaptors.http.flow.data.TargetRequestSender.sendRequest(TargetRequestSender.java:234)
    	…<snipped>
        
  7. Der Fehler Host not reachable tritt normalerweise in einem der folgenden Fälle auf:
    • Der in der Konfiguration des Zielservers/Zielendpunkts angegebene Hostname ist falsch oder enthält unerwünschte Leerzeichen oder Sonderzeichen.

      Beispielsweise enthält der Hostnamen „demo-target.apigee.net“ in der folgenden Fehlermeldung ein unerwünschtes Leerzeichen:
      NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to demo-target.apigee.net  failed with exception
              
    • Der Hostname, der im API-Proxy mithilfe der Richtlinie AssignMessage oder JavaScript von der Variablen target.url überschrieben wird, ist falsch oder enthält ein Leerzeichen oder andere unerwünschte Sonderzeichen.
  8. Ermitteln Sie den Hostnamen des Zielservers, mit dem der Message Processor eine Kommunikation versucht, indem Sie eine der folgenden Optionen verwenden:
    1. Sehen Sie sich die Fehlermeldung, die Host not reachable enthält, sorgfältig an.
    2. Wenn in der Fehlermeldung der Hostname angezeigt wird, kopieren Sie den Hostnamen einschließlich aller Leerzeichen oder Sonderzeichen.
    3. Wenn in der Fehlermeldung null für den Hostnamen angezeigt wird, wie in der folgenden Fehlermeldung zu sehen:
      org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to null failed with exception {}
              
      1. Bestimmen Sie den Hostnamen, indem Sie die Zielserver-Definition überprüfen, die im ausgefallenen API-Proxy verwendet wird.
      2. Wenn der Zielserverhost dynamisch erstellt wird, prüfen Sie die entsprechende Richtlinie, z. B. AssignMessage/JavaScript-Richtlinie, die zum Erstellen verwendet wurde.
  9. Nachdem Sie den Hostnamen des Zielservers ermittelt haben, führen Sie den Befehl nslookup/dig für den Hostnamen aus und prüfen Sie, ob er aufgelöst werden kann.

    Führen Sie beispielsweise den Befehl nslookup für den Hostnamen aus, der ein Leerzeichen enthält.

    nslookup "demo-target.apigee.net "
    Server:	49.205.75.2
    Address:	49.205.75.2#53
    
    ** server can't find demo-target.apigee.net\032: NXDOMAIN
          
  10. Wenn der Betriebssystembefehl nslookup ebenfalls nicht den Hostnamen auflösen kann, liegt die Ursache für dieses Problem im falschen Hostnamen für den Zielserver.

Auflösung

  1. Achten Sie darauf, dass der in der Konfiguration des Zielendpunkts oder in der Definition des Zielservers angegebene Hostname des Zielservers korrekt ist und keine unerwünschten Leerzeichen oder Sonderzeichen enthält.
  2. Wenn Sie eine AssignMessage/JavaScript-Richtlinie verwenden, um den Hostnamen des Zielservers dynamisch zu generieren, prüfen Sie die Richtliniendefinition und den Code und sorgen Sie dafür, dass der Hostname des Zielservers korrekt generiert wird.

SSL-Handshake-Fehler

Ein komplettes Playbook zur Fehlerbehebung beschäftigt sich mit TLS/SSL-Handshakefehlern. Siehe SSL-Handshakefehler.

Ursache des Problems ermitteln

Bestimmte Arten von Fehlern können entweder bei der eingehenden Verbindung (nach Norden) oder bei der ausgehenden Verbindung (nach Süden) auftreten. Ein eingehender (nordgebundener) Fehler tritt zwischen der Clientanwendung und Edge auf. Ein ausgehender Fehler (Southbound) tritt zwischen Edge und dem Back-End-Zielserver auf. Um diese Art von Problemen zu diagnostizieren, muss Ihr erster Job herausfinden, ob der Fehler bei der Verbindung nach Norden oder Süden auftritt.

Verbindungen in nördlicher und südlicher Richtung

In Edge können Sie den Fehler 503 Service Nicht verfügbar entweder bei der eingehenden oder ausgehenden Verbindung sehen:

  • Eingehende Verbindung (oder Nordverbindung): Die Verbindung zwischen der Clientanwendung und dem Edge Router. Der Router ist die Komponente von Apigee Edge, die eingehende Anfragen an das System verarbeitet.
  • Ausgehende Verbindung (oder Südverbindung) – Die Verbindung zwischen dem Edge Message Processor und dem Back-End-Server. Der Message Processor ist eine Komponente von Apigee Edge, die API-Anfragen an Back-End-Zielserver weiterleitet.

Wenn Sie Edge Public Cloud-Nutzer sind, kennen Sie interne Komponenten wie den Router oder den Message Processor wahrscheinlich nicht. Diese internen Komponenten sind für Nutzer von Public Clouds weder sichtbar noch zugänglich. Wenn möglich, bieten wir alternative Möglichkeiten zur Untersuchung des Problems an, die keinen direkten Zugriff auf diese Komponenten erfordern.

Die folgende Abbildung zeigt für Apigee Edge Verbindungen nach Norden und Süden.

Fluss der Clientanwendung (Nordgebundene Verbindung) über Edge zum Back-End-Server (Verbindung nach Süden)

Herausfinden, wo der Fehler „503 Service Nicht verfügbar“ aufgetreten ist

Prüfen Sie mit einem der folgenden Verfahren, ob der Fehler „503 Service Nicht verfügbar“ an der Verbindung nach Norden oder Süden aufgetreten ist.

UI-Trace

So ermitteln Sie mithilfe von UI Trace, wo der Fehler aufgetreten ist:

  1. Wenn das Problem weiterhin besteht, aktivieren Sie das UI-Trace für die betroffene API.
  2. Wenn das UI-Trace für die fehlgeschlagene API-Anfrage zeigt, dass der Fehler „503 Service Nicht verfügbar“ während des Zielanfrageflusses auftritt oder vom Back-End-Server gesendet wird, ist das Problem southbound, d. h. zwischen dem Message Processor und dem Back-End-Server.
  3. Wenn Sie den Trace für den bestimmten API-Aufruf nicht erhalten, liegt das Problem zwischen der Clientanwendung und dem Router in die Richtung Norden.

API-Monitoring

Mit der API-Überwachung 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.

Arbeiten Sie ein Beispielszenario durch, in dem veranschaulicht 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 messaging.adaptors.http.flow.ServiceUnavailable-Fehler einen bestimmten Grenzwert überschreitet.

NGINX-Zugriffslogs

So ermitteln Sie mithilfe von UI Trace, wo der Fehler aufgetreten ist:

Wenn das Problem in der Vergangenheit aufgetreten ist oder nur zeitweise auftritt und Sie den Trace nicht erfassen können, führen Sie die folgenden Schritte aus:

  1. Prüfen Sie die NGINX-Zugriffslogs (/opt/apigee/var/log/edge-router/nginx/ org-env.port_access_log).
  2. Suchen Sie nach 503-Fehlern für einen bestimmten API-Proxy.
  3. Wenn Sie zu einem bestimmten Zeitpunkt 503-Fehler für eine bestimmte API ermitteln können, trat das Problem bei der southbound-Verbindung (zwischen dem Message Processor und dem Back-End-Server) auf.
  4. Ist dies nicht der Fall, trat das Problem bei der Verbindung nach Norden auf (zwischen der Clientanwendung und dem Router).