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
- 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
". - 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:
- 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
- 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.
- Verifique se o processador de mensagens está detectando na porta 4528:
- Se o problema persistir, teste a conectividade do servidor de gerenciamento com o processador
de mensagens na porta 4528 usando as seguintes etapas:
- Se o telnet estiver disponível, use o telnet:
telnet <MessageProcessor_IP> 4528
- Se o telnet não estiver disponível, use o netcat para verificar a conectividade da seguinte maneira:
nc -vz <MessageProcessor_IP> 4528
- 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.
- Se o telnet estiver disponível, use o telnet:
- Teste a conectividade do processador de mensagens com o servidor de gerenciamento na porta 4526
seguindo estas etapas:
- Se o telnet estiver disponível, use o telnet:
telnet <management-server-IP> 4526
- Se o telnet não estiver disponível, use o netcat para verificar a conectividade da seguinte maneira:
nc -vz <management-server-IP> 4526
- 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.
- Se o telnet estiver disponível, use o telnet:
- Trabalhe com sua equipe de operações de rede e faça o seguinte:
- Verifique se o protocolo RPC é permitido no servidor de gerenciamento e no processador de mensagens.
- 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.
- Verifique novamente o status da implantação (consulte a etapa 1 acima). Se nenhum erro for exibido, isso indica que o erro foi resolvido.
- 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
- 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.
- Siga estas etapas para aumentar o tempo limite da RPC:
- Crie o arquivo
/opt/apigee/customer/application/management-server.properties
a máquina do servidor de gerenciamento, se ela ainda não existir. - 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
- Verifique se este arquivo é de propriedade da Apigee:
chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- Reinicie o servidor de gerenciamento:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Se você tiver mais de um servidor de gerenciamento, repita as etapas acima em todos eles.
- 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.
- Crie o arquivo
- 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:
- Execute o comando tcpdump abaixo no servidor de gerenciamento:
tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
- Execute o comando tcpdump abaixo no processador de mensagens:
tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
- Entre em contato com o suporte do Apigee Edge para receber ajuda na análise de tcpdumps e solucionar outros problemas do problema.
- Execute o comando tcpdump abaixo no servidor de gerenciamento:
Pacote grande de proxy de API
Diagnóstico
- Verifique o tamanho do pacote de proxy de API para o qual o erro de implantação está sendo observado.
- 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.
- 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:
- Crie o arquivo
/opt/apigee/customer/application/management-server.properties
na máquina do servidor de gerenciamento, se ele ainda não existir. - 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
- Verifique se este arquivo é de propriedade da Apigee:
chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- Reinicie o servidor de gerenciamento:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- 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.