Zeitüberschreitungsfehler

Sie lesen gerade die Apigee Edge -Dokumentation.
Zur Apigee X -Dokumentation.
info

Symptom

Die Bereitstellung von API-Proxy-Revisionen ü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

Die typischen Ursachen für dieses Problem sind:

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

Problem mit der Netzwerkverbindung

Hinweis:Nur Nutzer von Edge Private Cloud 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 den Bereitstellungsstatus für die spezifische API ab, bei der der Fehler aufgetreten ist, indem Sie den folgenden Management API-Aufruf verwenden:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>

    Beispielausgabe mit dem Fehler:

    { 
                    "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 bei einem der Message Processors mit der UUID "ebbc1078-cbde-4a00-a7db-66a3c1b2b748" aufgetreten ist.

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

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

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    2. Prüfen Sie den Bereitstellungsstatus des API-Proxys noch einmal mit dem Management API-Aufruf in Schritt 1 oben. Wenn keine Fehler auftreten, ist das Problem behoben.
  3. Wenn das Problem weiterhin besteht, testen Sie die Verbindung vom Management Server zum Message Processor an Port 4528. Gehen Sie dazu so vor:
    1. Wenn Telnet verfügbar ist, verwenden Sie es:
      telnet <MessageProcessor_IP> 4528
    2. Wenn Telnet nicht verfügbar ist, prüfen Sie die Verbindung mit Netcat so:
      nc -vz <MessageProcessor_IP> 4528
    3. Wenn Sie die Antwort „Connection Refused“ (Verbindung abgelehnt) oder „Connection timed out“ (Zeitüberschreitung bei Verbindung) erhalten, wenden Sie sich an Ihr Netzwerkbetriebsteam.
  4. Testen Sie die Verbindung vom Message Processor zum Management Server an Port 4526 Gehen Sie dazu so vor:
    1. Wenn Telnet verfügbar ist, verwenden Sie es:
      telnet <management-server-IP> 4526
    2. Wenn Telnet nicht verfügbar ist, prüfen Sie die Verbindung mit Netcat so:
      nc -vz <management-server-IP> 4526 
    3. Wenn Sie die Antwort „Connection Refused“ (Verbindung abgelehnt) oder „Connection timed out“ (Zeitüberschreitung bei Verbindung) erhalten, wenden Sie sich an Ihr Netzwerkbetriebsteam.
  5. Arbeiten Sie mit Ihrem Netzwerkbetriebsteam zusammen und führen Sie die folgenden Schritte aus:
    1. Achten Sie darauf, dass das RPC-Protokoll sowohl auf dem Management Server als auch auf dem Message Processor zulässig ist.
    2. Entfernen Sie alle Firewallbeschränkungen oder Sicherheitsregeln, die zwischen den Management Servern und Message Processors eingerichtet sind, um Verbindungen zu Port 4526 auf dem Management Server und Verbindungen vom Management Server zu Message Processors an Port 4528 zuzulassen.
  6. Prüfen Sie den Bereitstellungsstatus noch einmal (siehe Schritt 1 oben). Wenn keine Fehler auftreten, ist das Problem behoben.
  7. Wenn das Problem weiterhin besteht, prüfen Sie, ob ein Netzwerkproblem auf dem Message Processor vorliegt. Wenn ein Netzwerkproblem vorliegt, kann das Problem möglicherweise durch einen Neustart des Message Processor behoben werden, bei dem der Zeitüberschreitungsfehler aufgetreten ist (siehe Ausgabe des Bereitstellungsstatus):
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  8. Wenn das Problem weiterhin besteht, prüfen Sie die Management Server-Protokolle unter: (/opt/apigee/var/log/edge-management-server/logs/system.log).

    Beispiel für einen Zeitüberschreitungsfehler im Management Server-Protokoll

    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 wie im obigen Beispiel auftritt, erhöhen Sie die RPC Zeitüberschreitung auf dem Management Server. So hat der Management Server bei einer Verlangsamung des Netzwerks genügend Zeit, eine Verbindung zum Message Processor herzustellen.

Auflösung

Hinweis:Nur Nutzer von Edge Private Cloud 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 die RPC-Zeitüberschreitung zu erhöhen:
    1. Erstellen Sie auf dem Management Server die Datei /opt/apigee/customer/application/management-server.properties, 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 Standardwert für die RPC-Zeitüberschreitung ist 10. Es wird empfohlen, ihn auf 40 Sekunden zu erhöhen. Legen Sie ihn so fest:

      conf_cluster_rpc.connect.timeout=40
    3. Achten Sie darauf, dass der Eigentümer dieser Datei „apigee“ ist:
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    4. Starten Sie den Management Server neu:
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    5. Wenn Sie mehr als einen Management Server haben, wiederholen Sie die obigen Schritte auf allen den Management Servern.
    6. Stellen Sie den API-Proxy in der Edge-Benutzeroberfläche oder mit dem Edge Management API-Aufruf bereit. Wenn der API-Proxy ohne Probleme bereitgestellt wird, ist das Problem behoben.
  2. Wenn das Problem weiterhin besteht, erfassen Sie den tcpdump-Befehl vom Management Server und Message Processor. Aktivieren Sie den tcpdump Befehl auf jedem der Server und starten Sie dann die Bereitstellung des API-Proxys über die Benutzeroberfläche oder die Management API:
    1. Führen Sie den folgenden tcpdump-Befehl auf dem Management Server aus:
      tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
    2. Führen Sie den folgenden tcpdump-Befehl auf dem 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 und der weiteren Fehlerbehebung zu erhalten.

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 mehr), benötigt der Message Processor wahrscheinlich mehr Zeit, um den API-Proxy zu aktivieren.
  3. Wenn die Größe des API-Proxy-Bundles mehr als 15 MB beträgt, fahren Sie mit API-Proxy-Bundle größer als 15 MB fort.

Auflösung

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

Erhöhen Sie die RPC-Zeitüberschreitung auf dem Management Server, damit der Message Processor genügend Zeit hat, große API-Proxy-Bundles zu aktivieren. Führen Sie die folgenden Schritte aus, um den Wert für die RPC-Zeitüberschreitung zu erhöhen:

  1. Erstellen Sie auf dem Management Server die Datei /opt/apigee/customer/application/management-server.properties, 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 Standardwert für die RPC-Zeitüberschreitung ist 10. Es wird empfohlen, ihn auf 40 Sekunden zu erhöhen. Legen Sie ihn so fest:

    conf_cluster_rpc.connect.timeout=40
  3. Achten Sie darauf, dass der Eigentümer dieser Datei „apigee“ ist:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
  4. Starten Sie den Management Server neu:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. Wenn Sie mehr als einen Management Server haben, wiederholen Sie die obigen Schritte auf allen Management Servern.

Wenn das Problem weiterhin besteht, wenden Sie sich an den Apigee Edge-Support.