Zeitüberschreitungsfehler

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

Symptom

Die Bereitstellung von API-Proxyüberarbeitungen über die Edge-Benutzeroberfläche oder die Management API schlägt mit einem Zeitüberschreitungsfehler fehl.

Fehlermeldungen

Click to change deployment status. 
The revision is deployed and traffic can flow, but flow may be impaired. 
Error: Call timed out; either server is down or server is not reachable

Mögliche Ursachen

Typische Ursachen für dieses Problem:

Ursache Details Für
Problem mit der Netzwerkverbindung Kommunikationsfehler zwischen Management Server und Message Processor aufgrund von Problemen mit der Netzwerkverbindung oder Firewallregeln. Nur Private Cloud-Nutzer
Large API Proxy Bundle Die Aktivierung von Message Processor kann lange dauern, wenn das API-Proxy-Bundle groß ist, was zu RPC-Zeitüberschreitungen führt. Nutzer von privaten und öffentlichen Clouds

Problem mit der Netzwerkverbindung

Hinweis: Nur Edge Private Cloud-Nutzer können die folgenden Schritte ausführen. Wenn Sie Edge Public Cloud verwenden, wenden Sie sich an den Apigee Edge-Support.

Diagnose

  1. Rufen Sie mit dem folgenden Verwaltungs-API-Aufruf den Bereitstellungsstatus für die API ab, die den Fehler anzeigt:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
    

    Beispielausgabe, die den Fehler zeigt:

    { 
                    "error": "Call timed out; either server is down or server is not reachable", 
                    "status": "error", 
                    "type": [ 
                    "message-processor" 
                    ], 
                    "uUID": "ebbc1078-cbde-4a00-a7db-66a3c1b2b748" 
                    }, 
                    { 
                    "status": "deployed", 
                    "type": [ 
                    "message-processor" 
                    ], 
                    "uUID": "204e2b7e-52f7-46d9-b458-20f9bfb51e6d" 
                    }, 
                    { 
                    "status": "deployed", 
                    "type": [ 
                    "router" 
                    ], 
                    "uUID": "967e63c6-ee95-47c0-9608-f4a32638fb1e" 
                    }, 
                    { 
                    "status": "deployed", 
                    "type": [ 
                    "router" 
                    ], 
                    "state" : "error"
                    } 
    

    Die obige Beispielausgabe zeigt, dass der Fehler auf einem der Nachrichtenprozessoren mit der UUID "ebbc1078-cbde-4a00-a7db-66a3c1b2b748" aufgetreten ist.

  2. Melden Sie sich basierend auf der Ausgabe des Bereitstellungsstatus für Ihren API-Proxy bei jedem Nachrichtenprozessor mit der entsprechenden UUID an, die den Fehler anzeigte, und führen Sie die folgenden Schritte aus:
    1. Prüfen Sie, ob der Message Processor Port 4528 überwacht:
      netstat -an | grep LISTEN | grep 4528
      

      Wenn der Message Processor Port 4528 nicht überwacht, starten Sie ihn neu:

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    2. Überprüfen Sie den Bereitstellungsstatus des API-Proxys noch einmal mithilfe des Verwaltungs-API-Aufrufs, der in Schritt 1 oben gezeigt wurde. Wenn keine Fehler vorhanden sind, ist das Problem behoben.
  3. Wenn das Problem weiterhin besteht, testen Sie die Verbindung vom Management Server zum Message Processor an Port 4528 mit den folgenden Schritten:
    1. Wenn Telnet verfügbar ist, verwenden Sie Telnet:
      telnet <MessageProcessor_IP> 4528
      
    2. Wenn Telnet nicht verfügbar ist, prüfen Sie die Konnektivität mit netcat:
      nc -vz <MessageProcessor_IP> 4528
      
    3. Wenn Sie die Antwort „Verbindung abgelehnt“ oder „Zeitüberschreitung bei der Verbindung“ erhalten, wenden Sie sich an Ihr Network Operations-Team.
  4. Testen Sie die Verbindung vom Message Processor zum Management Server an Port 4526 mit den folgenden Schritten:
    1. Wenn Telnet verfügbar ist, verwenden Sie Telnet:
      telnet <management-server-IP> 4526
      
    2. Wenn Telnet nicht verfügbar ist, prüfen Sie die Konnektivität mit netcat:
      nc -vz <management-server-IP> 4526 
      
    3. Wenn Sie die Antwort „Verbindung abgelehnt“ oder „Zeitüberschreitung bei der Verbindung“ erhalten, wenden Sie sich an Ihr Network Operations-Team.
  5. Arbeiten Sie mit Ihrem Network Operations-Team zusammen und führen Sie folgende Schritte aus:
    1. Achten Sie darauf, dass das RPC-Protokoll sowohl auf dem Verwaltungsserver als auch auf dem Message Processor zulässig ist.
    2. Entfernen Sie alle Firewall-Einschränkungen oder Sicherheitsregeln, die zwischen den Verwaltungsservern und Message Processorn eingerichtet wurden, um eine Verbindung zu Port 4526 auf dem Verwaltungsserver und eine Verbindung vom Managementserver zu den Message Processors auf Port 4528 zuzulassen.
  6. Überprüfen Sie den Bereitstellungsstatus noch einmal (siehe Schritt 1 oben). Wenn keine Fehler angezeigt werden, ist der Fehler behoben.
  7. Wenn das Problem weiterhin besteht, prüfen Sie, ob ein Netzwerkproblem mit dem Message Processor vorliegt. Bei einem Netzwerkproblem kann das Problem möglicherweise durch einen Neustart des jeweiligen Message Processor behoben werden, der den Zeitüberschreitungsfehler gemäß der Ausgabe des Bereitstellungsstatus anzeigt:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  8. Wenn das Problem weiterhin besteht, prüfen Sie die Logs des Managementservers unter (/opt/apigee/var/log/edge-management-server/logs/system.log).

    Beispielfehler: Zeitüberschreitung beim Aufruf im Verwaltungsserverprotokoll

    2016-05-17 09:29:56,448 org:myorg env:prod qtp281969267-360792 ERROR DISTRIBUTION - RemoteServicesConfigEventHandler.configureServers() : exception for server with uuid e1381db7-d83b-4752-ae04-2de33f07e555 : cause = RPC Error 504: Call timed out communication error = true 
            com.apigee.rpc.RPCException: Call timed out 
            at com.apigee.rpc.impl.AbstractCallerImpl.handleTimeout(AbstractCallerImpl.java:64) ~[rpc-1.0.0.jar:na] 
            at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall.handleTimeout(RPCMachineImpl.java:483) ~[rpc-1.0.0.jar:na] 
            at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall.access$000(RPCMachineImpl.java:402) ~[rpc-1.0.0.jar:na] 
            at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall$1.run(RPCMachineImpl.java:437) ~[rpc-1.0.0.jar:na] 
            at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:532) ~[netty-all-4.0.0.CR1.jar:na] 
            at io.netty.util.HashedWheelTimer$Worker.notifyExpiredTimeouts(HashedWheelTimer.java:430) ~[netty-all-4.0.0.CR1.jar:na] 
            at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:371) ~[netty-all-4.0.0.CR1.jar:na] 
            at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_79] 
            
    

    Wenn ein ähnlicher Fehler auftritt (siehe Beispiel oben), erhöhen Sie das RPC-Zeitlimit auf dem Verwaltungsserver. Erhöhen Sie dann das RPC-Zeitlimit auf dem Verwaltungsserver. Bei einer Verlangsamung des Netzwerks sollte der Verwaltungsserver dann Zeit haben, eine Verbindung zum Nachrichtenprozessor herzustellen.

Auflösung

Hinweis: Nur Edge Private Cloud-Nutzer können die folgenden Schritte ausführen. Wenn Sie Edge Public Cloud verwenden, wenden Sie sich an den Apigee Edge-Support.

  1. Führen Sie die folgenden Schritte aus, um das RPC-Zeitlimit zu erhöhen:
    1. Erstellen Sie die Datei /opt/apigee/customer/application/management-server.properties auf dem Management Server-Computer, falls sie noch nicht vorhanden ist.
    2. Fügen Sie die folgende Zeile in diese Datei ein:
      conf_cluster_rpc.connect.timeout=<time in seconds>
      

      Der standardmäßige RPC-Zeitüberschreitungswert ist 10 und es wird empfohlen, ihn auf 40 Sekunden zu erhöhen. Legen Sie sie so fest:

      conf_cluster_rpc.connect.timeout=40
      
    3. Achten Sie darauf, dass diese Datei zu Apigee gehört:
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
      
    4. Starten Sie den Verwaltungsserver neu:
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
      
    5. Wenn Sie mehrere Verwaltungsserver haben, wiederholen Sie die obigen Schritte auf allen Verwaltungsservern.
    6. Stellen Sie den API-Proxy in der Edge-Benutzeroberfläche oder mithilfe des Edge-Management-API-Aufrufs bereit. Wenn der API-Proxy ohne Probleme bereitgestellt wird, bedeutet dies, dass das Problem behoben ist.
  2. Wenn das Problem weiterhin besteht, erfassen Sie den Befehl tcpdump vom Verwaltungsserver und vom Message Processor. Aktivieren Sie den Befehl „tcpdump“ auf jedem der Server und initiieren Sie dann die Bereitstellung des API-Proxys über die UI oder mithilfe der Verwaltungs-API:
    1. Führen Sie auf dem Verwaltungsserver den folgenden „tcpdump“-Befehl aus:
      tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
      
    2. Führen Sie den folgenden tcpdump-Befehl im Message Processor aus:
      tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
      
    3. Wenden Sie sich an den Apigee Edge-Support, um Unterstützung bei der Analyse der tcpdumps zu erhalten und das Problem weiter zu beheben.

Großes API-Proxy-Bundle

Diagnose

  1. Prüfen Sie die Größe des API-Proxy-Bundles, bei dem der Bereitstellungsfehler auftritt.
  2. Wenn die Größe relativ groß ist (10 MB oder höher), benötigt der Message Processor wahrscheinlich mehr Zeit, um den API-Proxy zu aktivieren.
  3. Wenn das API-Proxy-Bundle größer als 15 MB ist, fahren Sie mit API-Proxy-Bundle größer als 15 MB fort.

Auflösung

Hinweis: Nur Edge Private Cloud-Nutzer können die folgenden Schritte ausführen. Wenn Sie Edge Public Cloud verwenden, wenden Sie sich an den Apigee Edge-Support.

Erhöhen Sie das RPC-Zeitlimit auf dem Verwaltungsserver, damit Message Processor genügend Zeit hat, große API-Proxy-Bundles zu aktivieren. Führen Sie die folgenden Schritte aus, um den RPC-Zeitüberschreitungswert zu erhöhen:

  1. Erstellen Sie die Datei /opt/apigee/customer/application/management-server.properties auf dem Management Server-Computer, falls sie noch nicht vorhanden ist.
  2. Fügen Sie dieser Datei die folgende Zeile hinzu:
    conf_cluster_rpc.connect.timeout=<time in seconds>
    

    Der standardmäßige RPC-Zeitüberschreitungswert ist 10 und es wird empfohlen, ihn auf 40 Sekunden zu erhöhen. Legen Sie sie so fest:

    conf_cluster_rpc.connect.timeout=40
    
  3. Achten Sie darauf, dass diese Datei zu Apigee gehört:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    
  4. Starten Sie den Verwaltungsserver neu:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    
  5. Wenn Sie mehrere Verwaltungsserver haben, wiederholen Sie die obigen Schritte auf allen Verwaltungsservern.

Wenn das Problem weiterhin besteht, wenden Sie sich an den Apigee Edge-Support, um weitere Unterstützung zu erhalten.