Esta é a documentação do Apigee Edge.
Acesse
Documentação da Apigee X. informações
Sintoma
O aplicativo cliente recebe o código de status HTTP 504 com a mensagem "Tempo limite do gateway" em resposta a chamadas de API.
Essa resposta de erro indica que o cliente não recebeu uma resposta em tempo hábil do Apigee Edge ou do servidor de back-end durante a execução de uma chamada de API.
Mensagem de erro
O aplicativo cliente recebe o seguinte código de resposta:
HTTP/1.1 504 Gateway Timeout
Esse código pode ser seguido por uma mensagem de erro semelhante a esta:
<html> <head><title>504 Gateway Timeout</title></head> <body bgcolor="white"> <center><h1>504 Gateway Timeout</h1></center> </body> </html>
O que causa os tempos limite de gateway?
O caminho típico para uma solicitação de API feita pelo Apigee Edge é Client -> Roteador -> Processador de mensagens -> Servidor de back-end, como mostra a figura abaixo:
O aplicativo cliente, os roteadores e os processadores de mensagens estão configurados com valores de tempo limite adequados. O Apigee Edge espera uma resposta para cada solicitação de API dentro de um período com base nos valores de tempo limite. Se a resposta não for recebida dentro do período especificado, uma resposta de tempo limite do gateway 504 será retornada.
Causas possíveis
No Apigee Edge, a causa típica de uma resposta "504" de tempo limite de gateway do servidor de back-end é:
Causa | Descrição | Instruções para solução de problemas |
---|---|---|
O servidor de back-end responde com o tempo limite do gateway 504 | O servidor de back-end atinge o tempo limite e retorna uma resposta de tempo limite de gateway 504 para o processador de mensagens. | Usuários de nuvem pública e privada de borda |
O servidor de back-end responde com tempo limite do gateway 504
O servidor de back-end pode responder com o código de resposta HTTP 504 Tempo limite do gateway.
Diagnóstico
Esta seção explica como diagnosticar corretamente um tempo limite de gateway 504. Os procedimentos para regulamentos particulares e Os usuários da nuvem pública são listados.
Procedimento no 1: como usar o Trace (usuários da nuvem privada e pública)
- Ative o Trace na interface da Apigee para a API afetada.
- Enviar uma solicitação ao servidor de back-end.
- Se a solicitação de API com falha mostrar uma resposta 504 do servidor de back-end no Trace, a causa do tempo limite do gateway 504 é o servidor de back-end.
- Para determinar o tempo de resposta, clique em Resposta recebida do servidor de destino.
no Trace. No exemplo mostrado, o tempo decorrido é de 60.004 ms:
A seção "Detalhes da fase" oferece mais informações:
- Ela destaca a resposta 504 Gateway Timeout recebida do servidor de back-end.
- A seção Conteúdo da resposta exibe todo o corpo da resposta do servidor de back-end. Como observado anteriormente, o formato e o conteúdo do payload da resposta podem ser diferentes com base na implementação do servidor de back-end.
- O campo Cabeçalho de resposta > Server pode indicar a origem da resposta.
- Para visualizar dados do Google Analytics e confirmar o diagnóstico, clique em Dados do Google Analytics registrados
no Trace, conforme mostrado na figura abaixo:
A seção Cabeçalhos de resposta de "Detalhes da fase" exibe os valores dos
X-Apigee-fault-code
eX-Apigee-fault-source
, conforme mostrado Figura abaixo:Se esses campos contiverem os valores mostrados na tabela abaixo, a resposta de erro 504 terá origem do servidor de back-end:
Cabeçalhos de resposta Valor X-Apigee-fault-source target X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode -
Procurar
encadeamento de proxy. Siga estas etapas para determinar se o servidor de back-end está invocando outro proxy
na Apigee:
- Navegue de volta para a fase Solicitação enviada ao servidor de destino e clique no Botão Mostrar curl para ver o alias do host do servidor de back-end.
- Se o alias de host do servidor de back-end apontar para um alias de host virtual, o encadeamento de proxy estará lugar Repita as etapas acima para cada proxy encadeado para diagnosticar a causa do gateway 504 Resposta de erro de tempo limite. 504 Tempos limite de gateway que ocorrem em proxies encadeados em outros estágios do o ciclo de solicitação/resposta pode ser diagnosticado usando neste manual.
- Se o alias de host do servidor de back-end apontar para o servidor de back-end, prossiga para Resolução.
Procedimento no 2: invocar a API do servidor de back-end diretamente (usuários da nuvem pública e privada)
Chame o servidor de back-end diretamente para confirmar o mesmo comportamento de resposta de tempo limite do gateway 504 encontrado quando a solicitação é feita pelo Apigee Edge.
- Verifique se você tem todos os cabeçalhos, parâmetros de consulta e credenciais necessários para passados para o servidor de back-end como parte da solicitação.
- Se o serviço de back-end estiver acessível publicamente, use o comando
curl
. Postman ou qualquer outro cliente REST e invocar a API do servidor de back-end diretamente. - Se o servidor de back-end só puder ser acessado pelos processadores de mensagens, use o
curl
, Postman ou qualquer outro cliente REST para invocar a API do servidor de back-end diretamente da Processador de mensagens - Se o serviço de back-end retornar uma resposta de tempo limite de gateway 504, prossiga para Resolução.
Procedimento no 3: verificar os registros de acesso do NGINX (somente usuários da nuvem privada)
Os registros de acesso do NGINX podem ajudar a determinar se a resposta de erro 504 foi enviada pelo servidor de back-end. Isso é útil principalmente se o problema ocorreu no passado, é intermitente ou não pode ser identificado no Trace. Siga estas etapas para verificar os registros de acesso do NGINX:
- Visualize os registros de acesso do NGINX usando este comando:
/opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log
- Verifique se há respostas de erro 504 para o proxy de API afetado. É possível verificar um período específico, se o problema ocorreu no passado ou se as solicitações ainda estão falhando com uma resposta de erro 504.
- Se houver alguma resposta de erro 504, determine se a resposta de erro é originada do servidor de back-end.
- Analise o proxy de API afetado para verificar o encadeamento de proxy. Por exemplo, o servidor de back-end/endpoint de destino está invocando outro proxy na Apigee. Se o proxy de API estiver usando encadeamento de proxy , repita as etapas acima para cada proxy encadeado para diagnosticar a causa do tempo limite do gateway 504. resposta de erro. 504 Tempos limite de gateway que ocorrem em proxies encadeados em outros estágios podem ser diagnosticados usando este playbook.
- Se não houver encadeamento de proxy, e a resposta de erro 504 tem origem no servidor de back-end. acesse Resolução.
A figura abaixo é um exemplo de entrada de registro NGINX que mostra uma resposta de erro 504 causada pelo servidor de destino:
Se os campos X-Apigee-fault-source
e X-Apigee-fault-code
contiverem o
valores mostrados na tabela abaixo, a resposta 504 tem origem no servidor de back-end:
Cabeçalhos de resposta | Valor |
---|---|
X-Apigee-fault-source | target |
X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
Procedimento no 4: como usar o monitoramento de APIs (somente usuários da nuvem pública)
O API Monitoring permite isolar o problema rapidamente para diagnosticar problemas de erro, desempenho e latência, além das origens deles, como apps para desenvolvedores, Proxies de API, destinos de back-end ou a plataforma de API.
Veja um exemplo de cenário que demonstra como resolver problemas 5xx com suas APIs usando a API Monitoring. Por exemplo: configurar um alerta para notificar os administradores quando o número de códigos de status 504 exceder um determinado limite;
Resolução
Ao usar os procedimentos de diagnóstico descritos acima, é possível trabalhar com a equipe de servidores de back-end para corrigir o problema no servidor de back-end. Isso pode incluir o ajuste de tempos limite nos servidores de back-end ou em qualquer balanceador de carga na frente dos servidores de destino.
Coletar informações de diagnóstico
Se o problema persistir, compartilhe as informações de diagnóstico a seguir com o suporte da Apigee.
Se você é usuário da nuvem pública, forneça as seguintes informações:
- Nome da organização
- Nome do ambiente
- Nome do proxy da API
- Comando
curl
completo usado para reproduzir a resposta de erro 504 - Arquivo de rastreamento com solicitações de API que recebem uma resposta de erro de tempo limite do gateway 504
Se você é usuário da nuvem privada, forneça as seguintes informações:
- Mensagem de erro completa observada para as solicitações com falha
- Nome do ambiente
- Pacote de proxy de API
- Arquivo de rastreamento com solicitações de API que recebem a resposta de erro 504 Tempo limite do gateway
- Registros de acesso do NGINX
/opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log
- Registros do processador de mensagens
/opt/apigee/var/log/edge-message-processor/logs/system.log