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

Você está lendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

Vídeos

Assista o vídeo a seguir para saber mais sobre como resolver erros 503: Serviço indisponível.

Vídeo Descrição
Erro 503: 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 erro 503: Serviço 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

Você pode ver uma das seguintes mensagens de erro:

HTTP/1.1 503 Service Unavailable
HTTP/1.1 503 Service Unavailable: Back-end server is at capacity

Você também pode ver uma mensagem de erro como a seguinte 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 no momento. Normalmente, esse erro ocorre porque o servidor está muito ocupado ou está temporariamente inativo para manutenção.

As possíveis causas para a resposta 503: Serviço 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 além da capacidade e não pode processar novas solicitações de clientes. Usuários da nuvem pública e privada do Edge
Servidor em manutenção O servidor de back-end pode estar em manutenção temporariamente. Usuários da nuvem pública e privada do Edge

Causa: servidor sobrecarregado/servidor em manutenção

No Apigee Edge, o erro 503: Serviço 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 à manutenção.

Diagnóstico

Para diagnosticar o erro, use um dos três métodos a seguir:

  • Ferramenta Trace
  • 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 Trace

  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 rastreamento.
  3. Navegue por várias fases do rastreamento 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.

    Confira um exemplo de captura de tela de rastreamento mostrando a resposta 503: Serviço indisponível recebida do servidor de destino:

  5. Clique na fase Resposta recebida do servidor de destino e acesse as seções "Cabeçalhos de resposta" e "Conteúdo da resposta" para verificar se elas têm informações úteis:
    • Os cabeçalhos de resposta podem conter o cabeçalho do servidor, que indica onde a resposta de erro foi enviada.
    • O conteúdo da resposta pode conter informações adicionais sobre por que 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 de análise registrados) no rastreamento usando as etapas abaixo:
    1. Clique na fase AX (dados de análise registrados), conforme mostrado na captura de tela abaixo:
    2. Role para baixo os 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, você poderá confirmar que o erro 503 está vindo 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 de destino/endpoint de destino está invocando outro proxy na Apigee. Para determinar isso:
    1. Volte para a fase Solicitação enviada ao servidor de destino e clique no botão Mostrar Curl e determine o alias do host do servidor de destino.
    2. Se o alias do host do servidor de destino estiver apontando para um alias de host virtual, ele será o encadeamento de proxy. Nesse caso, repita todas as etapas acima para o proxy encadeado até determinar o que está causando o erro 503: Serviço indisponível. Nesses casos, o erro 503: Serviço indisponível também pode ocorrer em outros proxies encadeados em outras fases, que 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

Você também pode consultar os registros de acesso do NGINX para determinar se o código de status 503 foi enviado pelo servidor de back-end. Isso é especialmente útil se o problema tiver ocorrido no passado ou se o problema é intermitente e você não consegue capturar o rastreamento na interface. Siga as etapas abaixo para determinar essas informações nos 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 ocorreu no passado) ou para solicitações que ainda estão falhando com 503.
  3. Se houver erros 503, verifique se o erro está vindo 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 estará vindo do servidor de back-end:
    Cabeçalhos de resposta Valor
    X-Apigee-fault-source destino
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode

    Confira um exemplo de entrada mostrando o erro 503 causado pelo servidor de destino:

  4. Analise o proxy de API específico e verifique se você está usando o encadeamento de proxy, ou seja, se o servidor de destino/endpoint de destino não está invocando outro proxy na Apigee. Se você estiver usando encadeamento de proxy, repita todas as etapas acima para o proxy encadeado até determinar o que está causando o erro 503: Serviço indisponível. Nesses casos, o erro 503: Serviço indisponível também pode ocorrer em outros proxies encadeados em outras fases, que podem ser diagnosticados usando este manual.
  5. Se você confirmar que não está usando o encadeamento de proxy e o erro 503 está vindo do seu servidor de back-end, acesse Resolução.

Chamada para o servidor de back-end

Você pode fazer uma chamada direta para o servidor de back-end e verificar se está recebendo a mesma resposta 503: Serviço indisponível 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 necessários que precisam ser transmitidos ao servidor de back-end como parte da solicitação.
  2. Se o serviço de back-end for acessível publicamente, você poderá usar o comando curl, o 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, você poderá usar o comando curl, o Postman ou qualquer outro cliente REST e invocar a API do servidor de back-end diretamente do processador de mensagens.
  4. Verifique se o serviço de back-end está retornando o erro 503: Serviço indisponível.

Resolução

Se você determinar que o erro 503 está vindo 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á inativo para manutenção, você poderá colocar o servidor de back-end on-line após o período de manutenção.
  • Se o problema for causado porque o servidor de back-end está sobrecarregado, então corrija o problema se tiver acesso ao servidor de back-end. Caso contrário, talvez seja necessário trabalhar com a equipe do servidor de back-end para corrigir o problema.

Diagnosticar problemas usando a API Monitoring

A API Monitoring permite isolar á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 exemplo que demonstra como solucionar problemas 5xx com suas APIs usando a API Monitoring. Por exemplo, você pode configurar um alerta para ser notificado quando o número de falhas de 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, reúna as informações de diagnóstico a seguir e entre em contato 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 curl completo para reproduzir o erro 503
  • Arquivo de rastreamento contendo as solicitações com erro 503: Serviço 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ê for um usuário de nuvem privada, forneça as seguintes informações:

  • Mensagem de erro completa observada para as solicitações com falha.
  • Nome da organização, do ambiente e do proxy de API para o qual você está observando erros 503.
  • Pacote de proxy de API.
  • Arquivo de rastreamento contendo as solicitações com erro 503: Serviço 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 os erros 503 ocorreram.