Erro de tempo limite

Esta é a documentação do Apigee Edge.
Acesse Documentação da Apigee X.
informações

Sintoma

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

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

Estas são as causas mais comuns desse problema:

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

Problema de conectividade de rede

Observação:apenas os usuários da nuvem privada de borda podem seguir as etapas abaixo. Se você estiver no Edge Public Cloud, entre em contato com o suporte do Apigee Edge.

Diagnóstico

  1. Para conseguir o status da implantação da API específica que mostra o erro, use o comando a seguir: 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 com 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"
                    } 
    

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

  2. Com base na saída do status de implantação do seu proxy de API, faça login em cada uma das Os processadores com o UUID correspondente que mostraram o erro e realizam as seguintes etapas:
    1. Verifique se o processador de mensagens está ouvindo na porta 4528:
      netstat -an | grep LISTEN | grep 4528
      

      Se o processador de mensagens não estiver ouvindo na porta 4528, reinicie a mensagem Processador:

      /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 da 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 Management Server com o Message Processador na porta 4528 seguindo estas 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 "Connection Refused" ou "O tempo limite de conexão expirou", então 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 "Connection Refused" ou "O tempo limite de conexão expirou", ative o a 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 na mensagem Processador
    2. Remova as restrições de firewall ou as regras de segurança configuradas entre os servidores de gerenciamento e processadores de mensagens para permitir a conectividade com a porta 4526 no servidor de gerenciamento. conectividade do servidor de gerenciamento para os processadores de mensagens na porta 4528.
  6. Verifique novamente o status da implantação (consulte a etapa 1 acima). Se não houver erros, 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) pode 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 de chamada atingido 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ê encontrar um erro semelhante ao mostrado no exemplo acima, aumente o RPC. tempo limite no servidor de gerenciamento para que, se houver alguma lentidão na rede, ele tempo para o servidor de gerenciamento se conectar ao processador de mensagens.

Resolução

Observação:apenas os usuários da nuvem privada de borda podem seguir as etapas abaixo. Se você estiver no Edge Public Cloud, entre em contato com o suporte do Apigee Edge.

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

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

      conf_cluster_rpc.connect.timeout=40
      
    3. Verifique se esse 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 Servidores de gerenciamento.
    6. Implante o proxy de API na interface do Edge ou usando a chamada de API de gerenciamento do Edge. Se o O proxy de API é implantado sem nenhum problema, e isso indica que o problema foi resolvido.
  2. Se o problema persistir, colete tcpdump no servidor de gerenciamento e no processador de mensagens. Ativar o tcpdump em cada um dos servidores e, em seguida, 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 sobre analisar os tcpdumps e resolver o problema.

Grande Pacote de proxy de API

Diagnóstico

  1. Verifique o tamanho do pacote do proxy de API com o erro de implantação observados.
  2. Se o tamanho for razoavelmente grande (10 MB ou mais), é muito provável que o Message O processador pode precisar de mais tempo para ativar o proxy de API.
  3. Se o tamanho do pacote do proxy de API for maior do que 15 MB, prossiga para pacote de proxy de API maior que 15 MB.

Resolução

Observação:apenas os usuários da nuvem privada de borda podem seguir as etapas abaixo. Se você estiver no Edge Public Cloud, 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 pacotes grandes de proxy de API. Siga as etapas a seguir para aumentar o tempo limite do RPC. :

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

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

    conf_cluster_rpc.connect.timeout=40
    
  3. Verifique se esse 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 Servidores.

Se o problema persistir, entre em contato com o suporte do Apigee Edge e mais assistência.