Error de tiempo de espera

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

Síntoma

La implementación de las revisiones del proxy de la API a través de la IU de Edge o la API de Management falla con un error de tiempo de espera.

Mensajes de error

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

Causas posibles

Las causas típicas de este problema son las siguientes:

Causa Detalles Para
Problema de conectividad de red Error en la comunicación entre el servidor de administración y el procesador de mensajes debido a problemas de conectividad de red o reglas de firewall. Solo usuarios de la nube privada
Paquete de proxy de API grande Message Processor puede tardar mucho tiempo en activarse si el paquete de proxy de API es grande, lo que genera tiempos de espera de RPC. Usuarios de la nube pública y privada

Problema de conectividad de red

Nota: Solo los usuarios de la nube privada perimetral pueden realizar los siguientes pasos. Si estás en la nube pública de Edge, comunícate con el equipo de asistencia de Apigee Edge.

Diagnóstico

  1. Obtén el estado de implementación de la API específica que muestra el error mediante la siguiente llamada a la API de administración:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
    

    Resultado de muestra que muestra el error:

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

    En el resultado de ejemplo anterior, se muestra que el error se produjo en uno de los procesadores de mensajes que tiene el UUID “ebbc1078-cbde-4a00-a7db-66a3c1b2b748”.

  2. En función del resultado del estado de implementación de tu proxy de API, accede a cada uno de los procesadores de mensajes con el UUID correspondiente que mostró el error y realiza los siguientes pasos:
    1. Verifica si el procesador de mensajes escucha en el puerto 4528:
      netstat -an | grep LISTEN | grep 4528
      

      Si Message Processor no escucha en el puerto 4528, reinicia el Message Processor:

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    2. Vuelve a verificar el estado de implementación del proxy de API con la llamada a la API de administración que se muestra en el paso 1. Si no hay errores, significa que se resolvió el problema.
  3. Si el problema persiste, prueba la conectividad del servidor de administración al procesador de mensajes en el puerto 4528 mediante los siguientes pasos:
    1. Si Telnet está disponible, usa esta función:
      telnet <MessageProcessor_IP> 4528
      
    2. Si Telnet no está disponible, usa netcat para verificar la conectividad de la siguiente manera:
      nc -vz <MessageProcessor_IP> 4528
      
    3. Si recibes la respuesta “Connection Refused” o “Se agotó el tiempo de espera de la conexión”, comunícate con el equipo de operaciones de red.
  4. Prueba la conectividad del Message Processor al servidor de administración en el puerto 4526 siguiendo estos pasos:
    1. Si Telnet está disponible, usa esta función:
      telnet <management-server-IP> 4526
      
    2. Si Telnet no está disponible, usa netcat para verificar la conectividad de la siguiente manera:
      nc -vz <management-server-IP> 4526 
      
    3. Si recibes la respuesta “Connection Refused” o “Se agotó el tiempo de espera de la conexión”, comunícate con el equipo de operaciones de red.
  5. Trabaja con tu equipo de operaciones de red y haz lo siguiente:
    1. Asegúrate de que el protocolo de RPC esté permitido en el servidor de administración y en el procesador de mensajes.
    2. Quita todas las restricciones de firewall o reglas de seguridad configuradas entre los servidores de administración y los procesadores de mensajes para permitir la conectividad al puerto 4526 en el servidor de administración y la conectividad del servidor de administración a los procesadores de mensajes en el puerto 4528.
  6. Vuelve a verificar el estado de la implementación (consulta el paso 1 anterior). Si no ves ningún error, significa que se resolvió el error.
  7. Si el problema persiste, verifica si hay un problema de red en el procesador de mensajes. Si hay un problema de red, reiniciar el Message Processor específico que muestra el error de tiempo de espera (según el resultado del estado de implementación) puede solucionar el problema:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  8. Si el problema persiste, revisa los registros del servidor de administración en: (/opt/apigee/var/log/edge-management-server/logs/system.log).

    Error de tiempo de espera de la llamada de muestra del registro del servidor de administración

    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 observas un error similar al que se muestra en el ejemplo anterior, aumenta el tiempo de espera de la RPC en el servidor de administración para que, si hay alguna demora en la red, dé tiempo a que el servidor de administración se conecte al Message Processor.

Resolución

Nota: Solo los usuarios de la nube privada perimetral pueden realizar los siguientes pasos. Si estás en la nube pública de Edge, comunícate con el equipo de asistencia de Apigee Edge.

  1. Sigue estos pasos para aumentar el tiempo de espera de RPC:
    1. Crea el archivo /opt/apigee/customer/application/management-server.properties en la máquina del servidor de administración si aún no existe.
    2. Agrega la siguiente línea a este archivo:
      conf_cluster_rpc.connect.timeout=<time in seconds>
      

      El tiempo de espera predeterminado de RPC es de 10 y se recomienda aumentarlo a 40 segundos. Establécela de la siguiente manera:

      conf_cluster_rpc.connect.timeout=40
      
    3. Asegúrate de que este archivo sea propiedad de Apigee:
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
      
    4. Reinicia el servidor de administración:
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
      
    5. Si tienes más de un servidor de administración, repite los pasos anteriores en todos ellos.
    6. Implementa el proxy de API en la IU de Edge o mediante la llamada a la API de Edge Management. Si el proxy de API se implementa sin problemas, esto indica que el problema se resolvió.
  2. Si el problema persiste, recopila el comando tcpdump del servidor de administración y del procesador de mensajes. Habilita el comando tcpdump en cada uno de los servidores y, luego, inicia la implementación del proxy de API desde la IU o con la API de administración:
    1. Ejecuta el siguiente comando tcpdump desde el servidor de administración:
      tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
      
    2. Ejecuta el siguiente comando tcpdump desde Message Processor:
      tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
      
    3. Comunícate con la Asistencia de Apigee Edge para obtener ayuda en el análisis de los tcpdumps y solucionar el problema.

Gran paquete de proxy de API

Diagnóstico

  1. Verifica el tamaño del paquete de proxy de la API para el que se observa el error de implementación.
  2. Si el tamaño es razonablemente grande (10 MB o más), es muy probable que Message Processor necesite más tiempo para activar el proxy de API.
  3. Si el tamaño del paquete del proxy de API es superior a 15 MB, continúa con el paquete de proxy de API superior a 15 MB.

Resolución

Nota: Solo los usuarios de la nube privada perimetral pueden realizar los siguientes pasos. Si estás en la nube pública de Edge, comunícate con el equipo de asistencia de Apigee Edge.

Aumenta el tiempo de espera de RPC en el servidor de administración a fin de que Message Processor tenga tiempo suficiente para activar conjuntos de proxy de API grandes. Sigue estos pasos para aumentar el valor de tiempo de espera de RPC:

  1. Crea el archivo /opt/apigee/customer/application/management-server.properties en la máquina del servidor de administración, si aún no existe.
  2. Agrega la siguiente línea a este archivo:
    conf_cluster_rpc.connect.timeout=<time in seconds>
    

    El tiempo de espera predeterminado de RPC es 10 y se recomienda aumentarlo a 40 segundos. Establécela de la siguiente manera:

    conf_cluster_rpc.connect.timeout=40
    
  3. Asegúrate de que este archivo sea propiedad de Apigee:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    
  4. Reinicia el servidor de administración:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    
  5. Si tienes más de un servidor de administración, repite los pasos anteriores en todos ellos.

Si el problema persiste, comunícate con el equipo de asistencia de Apigee Edge para obtener más ayuda.