Erreur de délai avant expiration

Vous consultez la documentation Apigee Edge.
Accédez à la documentation**Apigee X**.
info

Problème constaté

Le déploiement des révisions de proxy d'API via l'interface utilisateur Edge ou l'API de gestion échoue avec une erreur de délai.

Messages d'erreur

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

Causes possibles :

Les causes typiques de ce problème sont les suivantes :

Cause Détails Pour
Problème de connectivité réseau Échec de la communication entre le serveur de gestion et le processeur de messages en raison de problèmes de connectivité réseau ou de règles de pare-feu. Utilisateurs du cloud privé uniquement
Pack de proxy d'API volumineux Le processeur de messages peut mettre beaucoup de temps à s'activer si le pack de proxy d'API est volumineux, ce qui entraîne des délais RPC. Utilisateurs du cloud privé et public

Problème de connectivité réseau

Remarque : Seuls les utilisateurs d'Edge Private Cloud peuvent effectuer les étapes suivantes. Si vous utilisez Edge Public Cloud, contactez l'assistance Apigee Edge.

Diagnostic

  1. Obtenez l'état de déploiement de l'API spécifique qui affiche l'erreur à l'aide de l'appel d'API de gestion suivant :
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>

    Exemple de sortie affichant l'erreur :

    { 
                    "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"
                    } 

    L'exemple de sortie ci-dessus montre que l'erreur s'est produite sur l'un des processeurs de messages ayant l'UUID "ebbc1078-cbde-4a00-a7db-66a3c1b2b748".

  2. En fonction du résultat de l'état de déploiement de votre proxy d'API, connectez-vous à chacun des processeurs de messages avec l'UUID correspondant qui a affiché l'erreur, puis procédez comme suit :
    1. Vérifiez si le processeur de messages écoute sur le port 4528 :
      netstat -an | grep LISTEN | grep 4528

      Si le processeur de messages n'écoute pas sur le port 4528, redémarrez le processeur de messages :

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    2. Vérifiez à nouveau l'état de déploiement du proxy d'API à l'aide de l'appel d'API de gestion indiqué à l'étape 1 ci-dessus. Si aucune erreur ne s'affiche, cela signifie que le problème est résolu.
  3. Si le problème persiste, testez la connectivité du serveur de gestion au processeur de messages sur le port 4528 en procédant comme suit :
    1. Si Telnet est disponible, utilisez-le :
      telnet <MessageProcessor_IP> 4528
    2. Si Telnet n'est pas disponible, utilisez Netcat pour vérifier la connectivité comme suit :
      nc -vz <MessageProcessor_IP> 4528
    3. Si vous recevez la réponse "Connection Refused" (Connexion refusée) ou "Connection timed out" (Délai de connexion expiré), contactez votre équipe d’opérations réseau.
  4. Testez la connectivité du processeur de messages au serveur de gestion sur le port 4526 en procédant comme suit :
    1. Si Telnet est disponible, utilisez-le :
      telnet <management-server-IP> 4526
    2. Si Telnet n'est pas disponible, utilisez Netcat pour vérifier la connectivité comme suit :
      nc -vz <management-server-IP> 4526 
    3. Si vous recevez la réponse "Connection Refused" (Connexion refusée) ou "Connection timed out" (Délai de connexion expiré), contactez votre équipe d’opérations réseau.
  5. Collaborez avec votre équipe d'opérations réseau et procédez comme suit :
    1. Assurez-vous que le protocole RPC est autorisé à la fois sur le serveur de gestion et sur le processeur de messages.
    2. Supprimez toutes les restrictions de pare-feu ou les règles de sécurité configurées entre les serveurs de gestion et les processeurs de messages pour autoriser la connectivité au port 4526 sur le serveur de gestion, ainsi que la connectivité du serveur de gestion aux processeurs de messages sur le port 4528.
  6. Vérifiez à nouveau l'état de déploiement (reportez-vous à l'étape 1 ci-dessus). Si aucune erreur ne s'affiche, alors cela signifie que le problème est résolu.
  7. Si le problème persiste, vérifiez s'il existe un problème de réseau sur le processeur de messages. En cas de problème de réseau, le redémarrage du processeur de messages spécifique qui affiche l'erreur de délai (conformément à la sortie de l'état de déploiement) peut résoudre le problème :
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  8. Si le problème persiste, consultez les journaux du serveur de gestion à l'adresse suivante : (/opt/apigee/var/log/edge-management-server/logs/system.log).

    Exemple d'erreur de délai d'appel dans le journal du serveur de gestion

    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] 
            

    Si vous constatez une erreur semblable à celle illustrée dans l'exemple ci-dessus, augmentez le délai RPC sur le serveur de gestion. Ainsi, en cas de ralentissement du réseau, le serveur de gestion aura le temps de se connecter au processeur de messages.

Solution

Remarque : Seuls les utilisateurs d'Edge Private Cloud peuvent effectuer les étapes suivantes. Si vous utilisez Edge Public Cloud, contactez l'assistance Apigee Edge.

  1. Procédez comme suit pour augmenter le délai RPC :
    1. Créez le fichier /opt/apigee/customer/application/management-server.properties sur la machine du serveur de gestion, s'il n'existe pas déjà.
    2. Ajoutez la ligne suivante à ce fichier :
      conf_cluster_rpc.connect.timeout=<time in seconds>

      La valeur par défaut du délai RPC est de 10 secondes. Il est recommandé de l'augmenter à 40 secondes. Définissez-la comme suit :

      conf_cluster_rpc.connect.timeout=40
    3. Assurez-vous que ce fichier appartient à apigee :
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    4. Redémarrez le serveur de gestion :
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    5. Si vous avez plusieurs serveurs de gestion, répétez les étapes ci-dessus sur tous les serveurs de gestion.
    6. Déployez le proxy d'API dans l'interface utilisateur Edge ou à l'aide de l'appel d'API de gestion Edge. Si le proxy d'API est déployé sans problème, cela signifie que le problème est résolu.
  2. Si le problème persiste, collectez la commande tcpdump à partir du serveur de gestion et du processeur de messages. Activez la commande tcpdump sur chacun des serveurs, puis lancez le déploiement du proxy d'API à partir de l'interface utilisateur ou à l'aide de l'API de gestion :
    1. Exécutez la commande tcpdump ci-dessous à partir du serveur de gestion :
      tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
    2. Exécutez la commande tcpdump ci-dessous à partir du processeur de messages :
      tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
    3. Contactez l'assistance Apigee Edge pour obtenir de l'aide sur l'analyse des tcpdumps et résoudre le problème.

Pack de proxy d'API volumineux

Diagnostic

  1. Vérifiez la taille du pack de proxy d'API pour lequel l'erreur de déploiement est observée.
  2. Si la taille est raisonnablement importante (10 Mo ou plus), il est très probable que le processeur de messages ait besoin de plus de temps pour activer le proxy d'API.
  3. Si la taille du pack de proxy d'API est supérieure à 15 Mo, passez à la section Pack de proxy d'API de plus de 15 Mo.

Solution

Remarque : Seuls les utilisateurs d'Edge Private Cloud peuvent effectuer les étapes suivantes. Si vous utilisez Edge Public Cloud, contactez l'assistance Apigee Edge.

Augmentez le délai RPC sur le serveur de gestion afin que le processeur de messages ait suffisamment de temps pour activer les packs de proxy d'API volumineux. Procédez comme suit pour augmenter la valeur du délai RPC :

  1. Créez le fichier /opt/apigee/customer/application/management-server.properties sur la machine du serveur de gestion, s'il n'existe pas déjà.
  2. Ajoutez la ligne suivante à ce fichier :
    conf_cluster_rpc.connect.timeout=<time in seconds>

    La valeur par défaut du délai RPC est de 10 secondes. Il est recommandé de l'augmenter à 40 secondes. Définissez-la comme suit :

    conf_cluster_rpc.connect.timeout=40
  3. Assurez-vous que ce fichier appartient à apigee :
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
  4. Redémarrez le serveur de gestion :
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. Si vous avez plusieurs serveurs de gestion, répétez les étapes ci-dessus sur tous les serveurs de gestion.

Si le problème persiste, contactez l'assistance Apigee Edge pour obtenir de l'aide.