Erro de tempo limite

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

Sintoma

A implantação de revisões de proxy de API por meio da IU do Edge ou da API de gerenciamento falha com um erro de tempo limite.

Mensagens de erro

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 possíveis

As causas mais comuns desse problema são:

Causa Detalhes Para
Problema de conectividade de rede Falha de comunicação entre o servidor de gerenciamento e o processador de mensagens devido a problemas de conectividade de rede ou regras de firewall. Apenas usuários da nuvem privada
Pacote de proxy de API grande O processador de mensagens poderá levar muito tempo para ativar se o pacote de proxy da API for grande, levando a tempos limite de RPC. Usuários de nuvem privada e pública

Problema de conectividade de rede

Observação: apenas usuários da nuvem privada do Edge podem realizar as etapas a seguir. Se você estiver na nuvem pública do Edge, entre em contato com o suporte do Apigee Edge.

Diagnóstico

  1. Confira o status de implantação da API específica que mostra o erro usando a seguinte chamada de API de gerenciamento:
    curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
    

    Exemplo de saída mostrando o erro:

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

    A amostra de saída acima mostra que o erro ocorreu em um dos processadores de mensagens com o UUID "ebbc1078-cbde-4a00-a7db-66a3c1b2b748".

  2. Com base no status da implantação do proxy de API, faça login em cada um dos processadores de mensagens com o UUID correspondente que mostrou o erro e execute as seguintes etapas:
    1. Verifique se o processador de mensagens está detectando na porta 4528:
      netstat -an | grep LISTEN | grep 4528
      

      Se o processador de mensagens não estiver detectando na porta 4528, reinicie-o:

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
      
    2. Verifique novamente o status da implantação do proxy de API usando a chamada de API de gerenciamento mostrada na etapa 1 acima. Se não houver erros, isso indica que o problema foi resolvido.
  3. Se o problema persistir, teste a conectividade do servidor de gerenciamento com o processador de mensagens na porta 4528 usando as seguintes etapas:
    1. Se o telnet estiver disponível, use o telnet:
      telnet <MessageProcessor_IP> 4528
      
    2. Se o telnet não estiver disponível, use o netcat para verificar a conectividade da seguinte maneira:
      nc -vz <MessageProcessor_IP> 4528
      
    3. Se você receber a resposta "Conexão recusada" ou "Tempo limite de conexão esgotado", entre em contato com sua equipe de operações de rede.
  4. Teste a conectividade do processador de mensagens com o servidor de gerenciamento na porta 4526 seguindo estas etapas:
    1. Se o telnet estiver disponível, use o telnet:
      telnet <management-server-IP> 4526
      
    2. Se o telnet não estiver disponível, use o netcat para verificar a conectividade da seguinte maneira:
      nc -vz <management-server-IP> 4526 
      
    3. Se você receber a resposta "Conexão recusada" ou "Tempo limite de conexão esgotado", entre em contato com sua equipe de operações de rede.
  5. Trabalhe com sua equipe de operações de rede e faça o seguinte:
    1. Verifique se o protocolo RPC é permitido no servidor de gerenciamento e no processador de mensagens.
    2. Remova todas as restrições de firewall ou regras de segurança configuradas entre os servidores de gerenciamento e os processadores de mensagens para permitir a conectividade com a porta 4526 no servidor de gerenciamento e a conectividade do servidor de gerenciamento com os processadores de mensagens na porta 4528.
  6. Verifique novamente o status da implantação (consulte a etapa 1 acima). Se nenhum erro for exibido, isso indica que o erro foi resolvido.
  7. Se o problema persistir, verifique se há um problema de rede no processador de mensagens. Se houver um problema de rede, reiniciar o processador de mensagens específico que mostra o erro de tempo limite (de acordo com a saída do status da implantação) poderá corrigir o problema:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  8. Se o problema persistir, verifique os registros do servidor de gerenciamento em: (/opt/apigee/var/log/edge-management-server/logs/system.log).

    Exemplo de erro de tempo limite da chamada do registro do servidor de gerenciamento

    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] 
            
    

    Se você observar um erro semelhante, conforme mostrado no exemplo acima, aumente o tempo limite do RPC no servidor de gerenciamento para que, se houver alguma lentidão na rede, ele dê tempo para que o servidor de gerenciamento se conecte ao processador de mensagens.

Resolução

Observação: apenas usuários da nuvem privada do Edge podem realizar as etapas a seguir. Se você estiver na nuvem pública do Edge, entre em contato com o suporte do Apigee Edge.

  1. Siga estas etapas para aumentar o tempo limite da RPC:
    1. Crie o arquivo /opt/apigee/customer/application/management-server.properties a máquina do servidor de gerenciamento, se ela ainda não existir.
    2. Adicione a seguinte linha a esse arquivo:
      conf_cluster_rpc.connect.timeout=<time in seconds>
      

      O valor padrão do tempo limite da RPC é 10, e é recomendável aumentá-lo para 40 segundos. Defina da seguinte maneira:

      conf_cluster_rpc.connect.timeout=40
      
    3. Verifique se este arquivo é de propriedade da Apigee:
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
      
    4. Reinicie o servidor de gerenciamento:
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
      
    5. Se você tiver mais de um servidor de gerenciamento, repita as etapas acima em todos eles.
    6. Implante o proxy de API na interface do Edge ou usando a chamada de API de gerenciamento do Edge. Se o proxy de API for implantado sem problemas, isso indica que o problema foi resolvido.
  2. Se o problema persistir, colete o comando tcpdump do servidor de gerenciamento e do processador de mensagens. Ative o comando tcpdump em cada um dos servidores e inicie a implantação do proxy de API pela interface ou usando a API de gerenciamento:
    1. Execute o comando tcpdump abaixo no servidor de gerenciamento:
      tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
      
    2. Execute o comando tcpdump abaixo no processador de mensagens:
      tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
      
    3. Entre em contato com o suporte do Apigee Edge para receber ajuda na análise de tcpdumps e solucionar outros problemas do problema.

Pacote grande de proxy de API

Diagnóstico

  1. Verifique o tamanho do pacote de proxy de API para o qual o erro de implantação está sendo observado.
  2. Se o tamanho for razoavelmente grande (10 MB ou mais), é muito provável que o processador de mensagens precise de mais tempo para ativar o proxy de API.
  3. Se o tamanho do pacote de proxy de API for maior que 15 MB, prossiga para Pacote de proxy de API maior que 15 MB.

Resolução

Observação: apenas usuários da nuvem privada do Edge podem realizar as etapas a seguir. Se você estiver na nuvem pública do Edge, entre em contato com o suporte do Apigee Edge.

Aumente o tempo limite de RPC no servidor de gerenciamento para que o processador de mensagens tenha tempo suficiente para ativar grandes pacotes de proxy de API. Siga estas etapas para aumentar esse valor:

  1. Crie o arquivo /opt/apigee/customer/application/management-server.properties na máquina do servidor de gerenciamento, se ele ainda não existir.
  2. Adicione a seguinte linha a este arquivo:
    conf_cluster_rpc.connect.timeout=<time in seconds>
    

    O valor padrão do tempo limite de RPC é 10 e é recomendado aumentá-lo para 40 segundos. Defina da seguinte maneira:

    conf_cluster_rpc.connect.timeout=40
    
  3. Verifique se este arquivo é de propriedade da Apigee:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    
  4. Reinicie o servidor de gerenciamento:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    
  5. Se você tiver mais de um servidor de gerenciamento, repita as etapas acima em todos eles.

Se o problema persistir, entre em contato com o suporte do Apigee Edge para mais ajuda.