Error de tiempo de espera

Estás viendo la documentación de Apigee Edge.
Ir a la documentación de Apigee X.
info

Síntoma

La implementación de las revisiones del proxy de API a través de la IU de Edge o la API de administración 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 Falla de comunicación entre el servidor de administración y el Message Processor debido a problemas de conectividad de red o reglas de firewall Solo usuarios de la nube privada
Paquete de proxy de API grande El Message Processor puede tardar mucho en activarse si el paquete de proxy de API es grande en tamaño, lo que genera tiempos de espera de RPC. Usuarios de la nube privada y pública

Problema de conectividad de red

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

Diagnóstico

  1. Para obtener el estado de implementación de la API específica que muestra el error, usa 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>

    Ejemplo de resultado 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 muestra anterior, se muestra que el error se produjo en uno de los Message Processors que tiene el UUID "ebbc1078-cbde-4a00-a7db-66a3c1b2b748".

  2. Según el resultado del estado de implementación de tu proxy de API, accede a cada uno de los Message Processors con el UUID correspondiente que mostró el error y realiza los siguientes pasos:
    1. Verifica si el Message Processor está escuchando en el puerto 4528:
      netstat -an | grep LISTEN | grep 4528

      Si el Message Processor no está escuchando 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 anterior. Si no hay errores, eso indica que el problema se resolvió.
  3. Si el problema persiste, prueba la conectividad del servidor de administración al Message Processor en el puerto 4528 con los siguientes pasos:
    1. Si telnet está disponible, úsalo:
      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 "Connection timed out", comunícate tu equipo de operaciones de red.
  4. Prueba la conectividad del Message Processor al servidor de administración en el puerto 4526 con los siguientes pasos:
    1. Si telnet está disponible, úsalo:
      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 "Connection timed out", comunícate con tu 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 RPC esté permitido en el servidor de administración y en el Message Processor.
    2. Quita las restricciones de firewall o las reglas de seguridad configuradas entre los servidores de administración y los Message Processors para permitir la conectividad al puerto 4526 en el servidor de administración y la conectividad del servidor de administración a los Message Processors en el puerto 4528.
  6. Vuelve a verificar el estado de implementación (consulta el paso 1 anterior). Si no ves ningún error, eso indica que el error se resolvió.
  7. Si el problema persiste, verifica si hay un problema de red en el Message Processor. 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, consulta los registros del servidor de administración en: (/opt/apigee/var/log/edge-management-server/logs/system.log).

    Ejemplo de error de tiempo de espera de llamada 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 RPC en el servidor de administración para que, si hay alguna ralentización de la red, se le dé tiempo al servidor de administración para conectarse al Message Processor.

Solución

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

  1. Realiza los siguientes 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 valor predeterminado del tiempo de espera de RPC es 10, y se recomienda aumentarlo a 40 segundos. Configúralo 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 los servidores de administración.
    6. Implementa el proxy de API en la IU de Edge o con la llamada a la API de administración de Edge. Si el proxy de API se implementa sin problemas, eso indica que el problema se resolvió.
  2. Si el problema persiste, recopila el comando tcpdump del servidor de administración y del Message Processor. 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 el Message Processor:
      tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
    3. Comunícate con el equipo de asistencia de Apigee Edge para obtener ayuda para analizar los tcpdumps y solucionar el problema.

Paquete de proxy de API grande

Diagnóstico

  1. Verifica el tamaño del paquete de proxy de 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 el Message Processor necesite más tiempo para activar el proxy de API.
  3. Si el tamaño del paquete de proxy de API es superior a 15 MB, continúa con Paquete de proxy de API superior a 15 MB.

Solución

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

Aumenta el tiempo de espera de RPC en el servidor de administración para que el Message Processor tenga suficiente tiempo para activar paquetes de proxy de API grandes. Realiza los siguientes pasos para aumentar el valor del 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 valor predeterminado del tiempo de espera de RPC es 10, y se recomienda aumentarlo a 40 segundos. Configúralo 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 los servidores de administración.

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