Erreur de délai avant expiration

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

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 d'inactivité.

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 :

Causes courantes de ce problème:

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 de cloud privé uniquement
Lot de proxys d'API volumineux L'activation du processeur de messages peut prendre beaucoup de temps si le groupe de proxys d'API est volumineux, ce qui entraîne des délais avant expiration RPC. Utilisateurs de clouds privés et publics

Problème de connectivité réseau

Remarque:Seuls les utilisateurs de cloud privé Edge peuvent effectuer les étapes suivantes. Si vous êtes sur Edge Public Cloud, contactez l'assistance Apigee Edge.

Diagnostic

  1. Obtenez l'état du 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 résultat 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 résultat 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 ayant affiché l'erreur et 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:

      /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. S'il n'y a pas d'erreur, 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 telnet :
      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 obtenez la réponse "Connection Refused" ou "Connection timed out", contactez votre équipe chargée des 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 telnet :
      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 obtenez la réponse "Connection Refused" ou "Connection timed out", contactez votre équipe chargée des opérations réseau.
  5. Collaborez avec l'équipe des 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 permettre la connectivité au port 4526 du 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 du déploiement (reportez-vous à l'étape 1 ci-dessus). Si aucune erreur ne s'affiche, cela signifie que l'erreur est résolue.
  7. Si le problème persiste, vérifiez s'il y a un problème de réseau sur le processeur de messages. En cas de problème réseau, vous pouvez résoudre le problème en redémarrant le processeur de messages spécifique qui affiche l'erreur de délai avant expiration (selon le résultat de l'état du déploiement) :
    /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 : (/opt/apigee/var/log/edge-management-server/logs/system.log).

    Exemple d'erreur d'appel expiré 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 observez une erreur semblable à celle illustrée dans l'exemple ci-dessus, augmentez le délai avant expiration du RPC sur le serveur de gestion de sorte qu'en cas de ralentissement du réseau, celui-ci ait le temps de se connecter au processeur de messages.

Résolution

Remarque:Seuls les utilisateurs de cloud privé Edge peuvent effectuer les étapes suivantes. Si vous êtes sur Edge Public Cloud, contactez l'assistance Apigee Edge.

  1. Procédez comme suit pour augmenter le délai avant expiration du RPC :
    1. Créez le fichier /opt/apigee/customer/application/management-server.properties sur la machine du serveur de gestion, si elle 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 avant expiration RPC est 10. Il est recommandé de l'augmenter à 40 secondes. Définissez-le 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 disposez de plusieurs serveurs de gestion, répétez les étapes ci-dessus sur chacun d'eux.
    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 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 fichiers tcpdump et pour résoudre le problème.

Groupe de proxys d'API volumineux

Diagnostic

  1. Vérifiez la taille du groupe de proxys d'API pour lequel l'erreur de déploiement est observée.
  2. Si la taille est relativement 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 groupe de proxys d'API est supérieure à 15 Mo, passez à la section Fichier de proxy d'API supérieur à 15 Mo.

Résolution

Remarque:Seuls les utilisateurs de cloud privé Edge peuvent effectuer les étapes suivantes. Si vous êtes sur Edge Public Cloud, contactez l'assistance Apigee Edge.

Augmentez le délai avant expiration RPC sur le serveur de gestion afin que le processeur de messages dispose de suffisamment de temps pour activer des groupes de proxys d'API volumineux. Pour augmenter la valeur du délai avant expiration RPC, procédez comme suit:

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

    La valeur par défaut du délai avant expiration RPC est 10. Il est recommandé de l'augmenter à 40 secondes. Définissez-le 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 disposez de plusieurs serveurs de gestion, répétez les étapes ci-dessus sur chacun d'eux.

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