Você está lendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. info
Sintoma
O aplicativo cliente recebe um código de status HTTP 504 com a mensagem "Gateway Timeout" em resposta a chamadas de API.
Essa resposta de erro indica que o cliente não recebeu uma resposta oportuna 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 à abaixo:
<html> <head><title>504 Gateway Timeout</title></head> <body bgcolor="white"> <center><h1>504 Gateway Timeout</h1></center> </body> </html>
O que causa tempos limite de gateway?
O caminho típico para uma solicitação de API feita pelo Apigee Edge é Cliente -> Roteador -> Processador de mensagens -> Servidor de back-end, conforme mostrado na figura abaixo:

O aplicativo cliente, os roteadores e os processadores de mensagens sã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 de tempo limite do gateway 504 do servidor de back-end é:
| Causa | Descrição | Instruções de solução de problemas para |
|---|---|---|
| Servidor de back-end respondendo com tempo limite do gateway 504 | O servidor de back-end atinge o tempo limite e retorna uma resposta de tempo limite do gateway 504 para o processador de mensagens. | Usuários da nuvem pública e privada do Edge |
Servidor de back-end respondendo com tempo limite do gateway 504
O servidor de back-end pode responder com um código de resposta HTTP de tempo limite do gateway 504.
Diagnóstico
Esta seção explica como diagnosticar corretamente um tempo limite do gateway 504. Os procedimentos para usuários da nuvem pública e privada estão listados.
Procedimento 1: usar o Trace (usuários da nuvem pública e privada)
- Ative Trace na interface da Apigee para a API afetada.
- Envie uma solicitação para o 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 será o servidor de back-end.
- Para determinar o tempo de resposta, clique na fase Resposta recebida do servidor de destino
no Trace. No exemplo mostrado, o tempo decorrido é de 60004 ms:

A seção "Detalhes da fase" fornece mais informações:
- Ela destaca a resposta Tempo limite do gateway 504 recebida do servidor de back-end.
- A seção Conteúdo da resposta mostra o corpo completo da resposta do servidor de back-end. Como observado anteriormente, o formato e o conteúdo do payload de resposta podem variar com base na implementação do servidor de back-end.
- A seção Cabeçalho de resposta > Servidor pode indicar de onde a resposta se originou.
- Para conferir os dados do Analytics e confirmar o diagnóstico, clique na fase Dados do Analytics registrados
no Trace, conforme mostrado na figura abaixo:

A seção Cabeçalhos de resposta dos detalhes da fase mostra os valores de
X-Apigee-fault-codeeX-Apigee-fault-source, conforme mostrado na figura abaixo:
Se esses campos contiverem os valores mostrados na tabela abaixo, a resposta de erro 504 será originada do servidor de back-end:
Cabeçalhos de resposta Valor X-Apigee-fault-source destino X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode -
Verifique o
encadeamento de proxy. Siga estas etapas para determinar se o servidor de back-end está invocando outro proxy
na Apigee:
- Volte para a fase Solicitação enviada ao servidor de destino e clique no Mostrar Curl botão para conferir o alias do host do servidor de back-end.
- Se o alias do host do servidor de back-end apontar para um alias de host virtual, o encadeamento de proxy estará em vigor. Repita as etapas acima para cada proxy encadeado para diagnosticar a causa da resposta de erro de tempo limite do gateway 504. Os tempos limite do gateway 504 que ocorrem em proxies encadeados em outras fases do ciclo de solicitação/resposta podem ser diagnosticados usando este manual.
- Se o alias do host do servidor de back-end apontar para o servidor de back-end, acesse Resolução.
Procedimento 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 transmitir ao servidor de back-end como parte da solicitação.
- Se o serviço de back-end for acessível publicamente, use o comando
curl, o Postman ou qualquer outro cliente REST e invoque a API do servidor de back-end diretamente. - Se o servidor de back-end só puder ser acessado pelos processadores de mensagens, use o
curlcomando, o Postman ou qualquer outro cliente REST para invocar a API do servidor de back-end diretamente do processador de mensagens. - Se o serviço de back-end retornar uma resposta de tempo limite do gateway 504, acesse Resolução.
Procedimento 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 é especialmente útil se o problema ocorreu no passado, é intermitente ou não pode ser capturado no Trace. Siga estas etapas para verificar os registros de acesso do NGINX:
- Confira 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 determinar se as solicitações ainda estão falhando com uma resposta de erro 504.
- Se houver respostas 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 ou seja, 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 da resposta de erro de tempo limite do gateway 504. Os tempos limite do gateway 504 que ocorrem em proxies encadeados em outras fases podem ser diagnosticados usando este manual.
- Se não houver encadeamento de proxy e a resposta de erro 504 for originada do servidor de back-end, acesse Resolução.
A figura abaixo é um exemplo de entrada de registro do 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 os
valores mostrados na tabela abaixo, a resposta 504 será originada do servidor de back-end:
| Cabeçalhos de resposta | Valor |
|---|---|
| X-Apigee-fault-source | destino |
| X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
Procedimento 4: usar o Monitoramento de APIs (somente usuários da nuvem pública)
O Monitoramento de APIs permite isolar as áreas problemáticas rapidamente para diagnosticar problemas de erro, desempenho e latência e a origem delas, como aplicativos de desenvolvedor, proxies de API, destinos de back-end ou a plataforma de API.
Siga um cenário de amostra que demonstra como solucionar problemas 5xx com suas APIs usando o Monitoramento de APIs. Por exemplo, configure um alerta para notificar os administradores quando o número de códigos de status 504 exceder um limite específico.
Resolução
Usando os procedimentos de diagnóstico descritos acima, você pode trabalhar com a equipe do servidor 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 tempos limite em balanceadores de carga na frente dos servidores de destino.
Coletar informações de diagnóstico
Se o problema persistir, compartilhe as seguintes informações de diagnóstico com o suporte da Apigee.
Se você for um usuário da nuvem pública, forneça as seguintes informações:
- Nome da organização
- Nome do ambiente
- Nome do proxy de API
- Comando
curlcompleto 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ê for um 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 uma resposta de erro de tempo limite do gateway 504
- 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