Você está vendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. informações
Vídeos
Assista o vídeo a seguir para saber mais sobre como resolver erros 503 de serviço indisponível.
Video | Descrição |
---|---|
Erro 503 de serviço indisponível do servidor de back-end | Saiba mais sobre:
|
Sintoma
O aplicativo cliente recebe um status de resposta HTTP 503 com a mensagem Serviço indisponível após uma chamada de proxy de API.
Mensagens de erro
Uma das seguintes mensagens de erro será exibida:
HTTP/1.1 503 Service Unavailable
HTTP/1.1 503 Service Unavailable: Back-end server is at capacity
Talvez você também veja uma mensagem de erro como esta na resposta HTTP:
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
Observação:o código de resposta e a mensagem de erro acima são apenas exemplos. Em alguns casos, você pode receber apenas o código de resposta de erro, sem nenhuma mensagem de erro. O formato e o conteúdo do código de resposta de erro e da mensagem de erro podem variar dependendo da implementação do servidor de back-end.
Causas
O código de status HTTP 503 significa que o servidor não pode processar as solicitações recebidas. Normalmente, esse erro ocorre porque o servidor está muito ocupado ou está temporariamente fora do ar para manutenção.
As possíveis causas para a resposta 503 Service Indisponível são:
Causa | Descrição | Quem pode realizar as etapas de solução de problemas |
---|---|---|
Servidor sobrecarregado | O servidor de back-end está sobrecarregado ou ultrapassou sua capacidade e não consegue processar nenhuma nova solicitação de cliente recebida. | Usuários de nuvens públicas e privadas de borda |
Servidor em manutenção | O servidor de back-end pode estar temporariamente em manutenção. | Usuários de nuvens públicas e privadas de borda |
Causa: servidor/servidor sobrecarregado em manutenção
No Apigee Edge, o erro 503 Service Indisponível pode ser retornado de um servidor de back-end em uma das seguintes circunstâncias:
- Um servidor de back-end está sobrecarregado/ocupado e não pode processar novas solicitações.
- O servidor de back-end está inativo por um período temporário devido a manutenção.
Diagnóstico
Para diagnosticar o erro, você pode usar qualquer um destes três métodos:
- Ferramenta de rastreamento
- Registros de acesso do NGINX
- Chamada direta para o servidor de back-end
Clique nas guias abaixo para saber mais sobre cada método.
Ferramenta de rastreamento
- Ative a sessão de rastreamento e faça a chamada de API para reproduzir o problema - 503 Serviço indisponível.
- Selecione uma das solicitações com falha e examine o rastro.
- Navegue pelas várias fases do rastro e localize onde a falha ocorreu.
- Se você descobrir que o erro 503 é retornado como uma resposta do servidor de destino,
a causa do erro 503 é o servidor de destino.
Esta é uma captura de tela de rastros de exemplo que mostra a resposta "503 Serviço indisponível" recebida do servidor de destino:
- Clique na fase Resposta recebida do servidor de destino e consulte as seções "Cabeçalhos de resposta" e "Conteúdo da resposta" para ver se há informações úteis:
- Os cabeçalhos de resposta podem conter o cabeçalho "Servidor", que indica de onde a resposta de erro foi enviada.
- O conteúdo da resposta pode conter informações adicionais sobre o motivo pelo qual o servidor de destino enviou o código de resposta 503.
- Confirme se o erro 503 está vindo do servidor de destino, verificando
os valores de X-Apigee-fault-source e X-Apigee-fault-code na fase AX
(dados do Analytics gravados) no trace usando as etapas abaixo:
- Clique na fase AX (Analytics Data Recorded), conforme mostrado na captura de tela abaixo:
- Role para baixo nos detalhes da fase até a seção "Cabeçalhos de resposta" e determine os valores de X-Apigee-fault-code e X-Apigee-fault-source, conforme mostrado abaixo:
- Se os valores de X-Apigee-fault-source e X-Apigee-fault-code corresponderem aos valores
mostrados na tabela abaixo, é possível confirmar que o erro 503 vem do
servidor de destino:
Cabeçalhos de resposta Valor X-Apigee-fault-source destino X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
- Verifique se você está usando o encadeamento de proxy, ou seja, se o servidor/endpoint de destino está
invocando outro proxy na Apigee. Para determinar isso:
- Volte para a fase Solicitação enviada para o servidor de destino, clique no botão Mostrar curl e determine o alias do host do servidor de destino.
- Se o alias de host do servidor de destino estiver apontando para um alias de host virtual, ele será encadeamento de proxy. Nesse caso, é necessário repetir todas as etapas acima para o proxy encadeado até determinar o que está causando o erro 503 Service Indisponível. Nesses casos, o erro 503 "Serviço indisponível" pode acontecer em outros proxies encadeados em outros estágios. Eles também podem ser diagnosticados usando este manual.
- Se o alias do host do servidor de destino apontar para o servidor de back-end, acesse Resolução.
Registros de acesso do NGINX
Também é possível consultar os registros lccess do NGINX para determinar se o código de status 503 foi enviado pelo servidor de back-end. Isso é particularmente útil se o problema tiver ocorrido no passado ou se ele for intermitente e você não conseguir capturar o rastro na IU. Siga estas etapas para determinar essas informações dos registros de acesso do NGINX:
- Verifique os registros de acesso do NGINX.
/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
- Procure erros 503 para o proxy de API específico durante um período específico (se o problema tiver acontecido anteriormente) ou por qualquer solicitação que ainda falhe com 503.
- Se houver algum erro 503, verifique se ele vem do servidor de back-end.
Se os valores de X-Apigee-fault-source e X-Apigee-fault-code corresponderem aos
valores mostrados
na tabela abaixo, o erro 503 vai vir do servidor de back-end:
Cabeçalhos de resposta Valor X-Apigee-fault-source destino X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode Este é um exemplo de entrada que mostra o erro 503 causado pelo servidor de destino:
- Revise o proxy de API específico e verifique se você está usando o encadeamento de proxy, ou seja, se o servidor/endpoint de destino não estiver invocando outro proxy na Apigee. Se você estiver usando o encadeamento de proxy, será necessário repetir todas as etapas acima para o proxy encadeado até determinar o que está realmente causando o erro 503 Service Indisponível. Nesses casos, o erro 503 "Serviço indisponível" também pode acontecer em outros proxies encadeados em outros estágios, que podem ser diagnosticados usando este manual.
- Se você confirmar que não está usando o encadeamento de proxy e o erro 503 estiver vindo do servidor de back-end, acesse Resolução.
Chamada para o servidor de back-end
É possível fazer uma chamada direta para o servidor de back-end e verificar se está recebendo a mesma resposta 503 Service Indisponível que foi recebida quando a solicitação foi feita pelo Apigee Edge.
- Verifique se você tem todos os cabeçalhos, parâmetros de consulta e credenciais que precisam ser transmitidos ao servidor de back-end como parte da solicitação.
- Se o serviço de back-end estiver acessível publicamente, será possível usar 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 comando curl, Postman ou qualquer outro cliente REST e invoque a API do servidor de back-end diretamente do processador de mensagens.
- Verifique se o serviço de back-end realmente está retornando o erro 503 Serviço indisponível.
Resolução
Se você confirmar que o erro 503 vem do servidor de back-end, faça o seguinte para resolver o problema:
- Se o problema for causado porque o servidor de back-end está fora do ar para manutenção, deixe esse servidor on-line após esse período.
- Se o problema for causado porque o servidor de back-end está sobrecarregado, corrija-o se você tiver acesso a ele. Caso contrário, talvez seja necessário trabalhar com a equipe do servidor de back-end para corrigir o problema.
Diagnosticar problemas usando o monitoramento de APIs
Com o Monitoramento de APIs, é possível isolar áreas com problemas rapidamente para diagnosticar erros, desempenho e latência, bem como a origem delas, como apps de desenvolvedores, proxies de API, destinos de back-end ou a plataforma da API.
Consulte um cenário de exemplo que demonstra como solucionar problemas 5xx com suas APIs usando o API Monitoring. Por exemplo, configure um alerta para ser notificado quando o número de falhas messaging.adaptors.http.flow.ErrorResponseCode exceder um limite específico.
É necessário coletar informações de diagnóstico
Se o problema persistir mesmo depois de seguir as instruções acima, colete as informações de diagnóstico a seguir e entre em contato com o suporte da Apigee.
Se você é um usuário de nuvem pública, forneça as seguintes informações:
- Nome da organização
- Nome do ambiente
- Nome de proxy da API
- Conclua o comando curl para reproduzir o erro 503
- Arquivo de rastreamento que contém as solicitações com o erro "503 Service Indisponível"
- Se os erros 503 não estiverem ocorrendo no momento, forneça o período com as informações de fuso horário em que os erros 503 ocorreram no passado.
Se você é um usuário de nuvem privada, forneça as seguintes informações:
- Conclua a mensagem de erro observada para as solicitações com falha.
- Organização, nome do ambiente e nome do proxy da API para os quais você está observando erros 503.
- Pacote de proxy de API.
- Arquivo de rastreamento que contém as solicitações com o erro "503 Service Indisponível".
- 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
- O período com as informações de fuso horário em que ocorreram os erros 503.