Serviço 503 indisponível - Servidor de back-end

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:
  • Introdução ao erro 503 Serviço indisponível no Apigee Edge
  • Solução de problemas e resolução de um serviço 503 indisponível em tempo real do servidor de back-end

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

  1. Ative a sessão de rastreamento e faça a chamada de API para reproduzir o problema - 503 Serviço indisponível.
  2. Selecione uma das solicitações com falha e examine o rastro.
  3. Navegue pelas várias fases do rastro e localize onde a falha ocorreu.
  4. 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:

  5. 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.
  6. 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:
    1. Clique na fase AX (Analytics Data Recorded), conforme mostrado na captura de tela abaixo:
    2. 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:
    3. 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
  7. 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:
    1. 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.
    2. 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.
    3. 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:

  1. Verifique os registros de acesso do NGINX.
    /opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
  2. 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.
  3. 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:

  4. 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.
  5. 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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.