Esta é a documentação do Apigee Edge.
Acesse
Documentação da Apigee X. informações
Sintoma
O aplicativo cliente recebe um erro de tempo limite para solicitações de API ou a solicitação é encerrada abruptamente enquanto a solicitação de API ainda está sendo executada na Apigee.
Você vai observar o código de status 499
dessas solicitações de API na API Monitoring e
registros de acesso do NGINX. Às vezes, você verá códigos de status diferentes na API Analytics devido a
mostra o código de status retornado pelo processador de mensagens.
Mensagem de erro
Os aplicativos clientes podem encontrar erros como:
curl: (28) Operation timed out after 6001 milliseconds with 0 out of -1 bytes received
O que causa os tempos limite do cliente?
O caminho típico de uma solicitação de API na plataforma Edge é Cliente > Roteador > Processador de mensagens > Backend Server conforme mostrado na figura a seguir:
Os roteadores e processadores de mensagens na plataforma Apigee Edge são configurados valores de tempo limite padrão para garantir que as solicitações da API não demorem muito para serem concluídas.
Tempo limite no cliente
Os aplicativos clientes podem ser configurados com um valor de tempo limite adequado com base nas suas necessidades.
Clientes como navegadores da Web e apps para dispositivos móveis têm tempos limite definidos pelo sistema operacional.
Tempo limite no roteador
O tempo limite padrão configurado nos roteadores é de 57 segundos. Essa é a quantidade máxima de tempo que uma O proxy de API pode ser executado desde o recebimento da solicitação de API no Edge até a resposta ser enviada de volta, incluindo a resposta de back-end e todas as políticas que são executadas. O padrão pode ser substituído nos roteadores e hosts virtuais, conforme explicado na Como configurar o tempo limite de E/S nos roteadores.
Tempo limite nos processadores de mensagens
O tempo limite padrão configurado em processadores de mensagens é de 55 segundos. Este é o valor máximo tempo que o servidor de back-end pode levar para processar a solicitação e responder ao evento de Processador. O tempo limite padrão pode ser substituído nos processadores de mensagens ou na API proxy, conforme explicado em Configurar o tempo limite de E/S em processadores de mensagens.
Se o cliente encerrar a conexão com o roteador antes que o proxy de API atinja o tempo limite, você
observará o erro de tempo limite para a solicitação de API específica. O código de status 499 Client
Closed Connection
é registrado no Router para essas solicitações, que podem ser observados na API
Monitoring e registros de acesso do NGINX.
Causas possíveis
No Edge, as causas típicas do erro 499 Client Closed Connection
são:
Causa | Descrição | Instruções de solução de problemas aplicáveis para |
---|---|---|
O cliente fechou a conexão abruptamente | Isso acontece quando o cliente encerra a conexão porque o usuário final cancelou a antes que ela seja concluída. | Usuários de nuvem pública e privada |
Tempo limite do aplicativo cliente | Isso acontece quando o aplicativo cliente expira antes que o proxy de API tenha tempo para e enviar a resposta. Normalmente, isso acontece quando o tempo limite do cliente é menor que o tempo limite do roteador. | Usuários de nuvem pública e privada |
Etapas comuns do diagnóstico
Use uma das seguintes ferramentas/técnicas para diagnosticar esse erro:
- Monitoramento de APIs
- Registros de acesso do NGINX
Monitoramento de APIs
Para diagnosticar o erro usando a API Monitoring:
- Navegue até o menu Analisar > Monitoramento de APIs > Investigar.
- Filtre por
4xx
erros e selecione o período. - Relacione o Código de status com o Time.
- Selecione uma célula com
499
erros, conforme mostrado abaixo: - As informações sobre o erro
499
serão exibidas no painel direito. mostrados abaixo: - No painel à direita, clique em View logs.
Na janela Registros de tráfego, observe os detalhes a seguir para algumas
499
erros:- Solicitação:fornece o método de solicitação e o URI usados para fazer as chamadas.
- Tempo de resposta:fornece o tempo total decorrido da solicitação.
Também é possível acessar todos os registros com a API Monitoring GET logs. Para exemplo, consultando os registros para
org
,env
,timeRange
estatus
, você poderá fazer o download de todos os registros de transações em que o tempo limite do cliente expirou.Como a API Monitoring define o proxy como
-
para HTTP499
use a API (API Logs) para receber a proxy associado para o host virtual e o caminho.For example :
curl "https://apimonitoring.enterprise.apigee.com/logs/apiproxies?org=ORG&env=ENV&select=https://VIRTUAL_HOST/BASEBATH" -H "Authorization: Bearer $TOKEN"
- Revise o Tempo de resposta para ver se há mais erros
499
e verifique se o Tempo de resposta é consistente (digamos, 30 segundos) em todos os499
erros.
Registros de acesso do NGINX
Para diagnosticar o erro usando registros de acesso do NGINX:
- Se você for um usuário de nuvem privada, poderá usar registros de acesso do NGINX para determinar
as principais informações sobre erros HTTP
499
. - Verifique os registros de acesso do NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Pesquise se há erros
499
durante um período específico (se o problema tiver acontecido no passado) ou se houver alguma solicitação que ainda esteja falhando com499
: - Observe as informações a seguir para alguns dos erros
499
:- Tempo total de resposta
- URI de solicitação
- User agent
Exemplo de erro 499 do registro de acesso do NGINX:
2019-08-23T06:50:07+00:00 rrt-03f69eb1091c4a886-c-sy 50.112.119.65:47756 10.10.53.154:8443 10.001 - - 499 - 422 0 GET /v1/products HTTP/1.1 - okhttp/3.9.1 api.acme.org rrt-03f69eb1091c4a886-c-sy-13001-6496714-1 50.112.119.65 - - - - - - - -1 - - dc-1 router-pod-1 rt-214-190301-0020137-latest-7d 36 TLSv1.2 gateway-1 dc-1 acme prod https -
Neste exemplo, vemos as seguintes informações:
- Tempo total de resposta:
10.001
segundos. Isso indica que o tempo limite do cliente atingido após 10,001 segundos - Solicitação:
GET /v1/products
- Organizador:
api.acme.org
- User agent:
okhttp/3.9.1
- Verifique se o Tempo total de resposta e o User agent estão consistentes
entre todos os erros
499
.
Causa: o cliente fechou a conexão abruptamente
Diagnóstico
- Quando uma API é chamada por um app de página única em execução em um navegador ou aplicativo para dispositivos móveis, o navegador abortará a solicitação se o usuário final repentinamente fechar o navegador, navegar para outra página da Web na mesma guia ou interrompe o carregamento da página clicando ou tocando parar de carregar.
- Se isso acontecer, as transações com status HTTP
499
normalmente variam. no tempo de processamento de solicitação (Tempo de resposta) para cada uma das solicitações. -
Para determinar se essa é a causa, compare o Tempo de resposta e verifique se
ela é diferente para cada um dos erros
499
usando a API Monitoring ou o acesso NGINX registros, conforme explicado nas Etapas comuns de diagnóstico.
Resolução
- Isso é normal e não costuma ser um motivo de preocupação se os erros HTTP
499
estão acontecendo em pequenas quantidades. -
Se isso acontece com frequência no mesmo caminho de URL, pode ser porque o proxy específico associadas a esse caminho é muito lenta e os usuários não estão dispostos a esperar.
Quando você souber qual proxy pode ser afetado, use o Latência painel de análise para investigar melhor o que está causando a latência do proxy.
- Neste caso, determine o proxy que foi afetado usando as etapas em Etapas comuns de diagnóstico.
- Use o Painel de análise de latência para saber o que está causando a latência de proxy e corrigir o problema.
- Se achar que a latência é esperada para um determinado proxy, você pode ter para informar aos usuários que este proxy vai levar algum tempo para responder.
Causa: tempo limite do aplicativo cliente
Isso pode ocorrer em diversos cenários.
-
Espera-se que a solicitação leve um certo tempo (digamos, 10 segundos) para ser concluída.
em condições normais de operação. No entanto, o aplicativo cliente está configurado com uma
valor de tempo limite (digamos, 5 segundos), que faz com que o aplicativo cliente atinja o tempo limite antes
a solicitação de API é concluída, levando a
499
. Nesse caso, precisamos definir o tempo limite do cliente para um valor apropriado. - Um servidor de destino ou uma frase de destaque está demorando mais do que o esperado. Nesse caso, você precisa corrigir o componente apropriado e ajustar adequadamente os valores de tempo limite.
- O cliente não precisava mais da resposta e, por isso, desistiu. Isso pode acontecer para altos e frequência, como preenchimento automático ou sondagem curta.
Diagnóstico
Registros de acesso do API Monitoring ou do NGINX
Diagnostique o erro usando os registros de acesso do API Monitoring ou do NGINX:
- Verifique os registros de monitoramento da API ou os registros de acesso do NGINX para as transações HTTP
499
, conforme explicado em Etapas comuns de diagnóstico. - Determine se o Tempo de resposta é consistente para todos os erros
499
. - Se sim, pode ser que um aplicativo cliente específico tenha configurado um tempo limite fixo
por isso. Se um proxy de API ou servidor de destino estiver respondendo lentamente, o cliente atingirá o tempo limite
antes que o proxy atinja o tempo limite, resultando em grandes quantidades de
499s
HTTP para o mesmo caminho de URI. Nesse caso, determine o User agent nos registros de acesso do NGINX que pode ajudar a determinar o aplicativo cliente específico. - Também pode haver um balanceador de carga na Apigee, como a Akamai, F5, ELB da AWS e assim por diante. Se a Apigee estiver sendo executada atrás de um balanceador de carga personalizado, a solicitação do balanceador de carga precisa ser configurado para ser maior do que o tempo limite da API Apigee. De padrão, o roteador da Apigee expira após 57 segundos. Portanto, é adequado configurar uma solicitação de 60 segundos no balanceador de carga.
Trace
Diagnosticar o erro usando o Trace
Se o problema ainda estiver ativo (499
erros ainda estão acontecendo), execute o
etapas a seguir:
- Ative o Rastrear sessão da API afetada na interface do Edge.
- Aguarde a ocorrência do erro ou, caso tenha a chamada de API, faça algumas chamadas de API e reproduzir o erro.
- Verificar o tempo decorrido em cada fase e anotar aquela em que a maior parte do tempo é gasto.
- Se você observar o erro com o maior tempo decorrido logo após uma das
fases seguintes, isso indica que o servidor de back-end está lento ou demorando muito
para processar a solicitação:
- Solicitação enviada ao servidor de destino
- Política ServiceCallout
Confira um exemplo de trace de interface mostrando um tempo limite de gateway depois que a solicitação foi enviados ao servidor de destino:
Resolução
- Consulte Práticas recomendadas para configurar o tempo limite de E/S e entender quais valores de tempo limite devem ser definidos em diferentes componentes envolvidos no fluxo de solicitação de API pelo Apigee Edge.
- Defina um valor de tempo limite apropriado no aplicativo cliente de acordo com práticas recomendadas.
Se o problema persistir, acesse É preciso coletar informações de diagnóstico .
É necessário coletar informações de diagnóstico
Se o problema persistir, reúna as informações de diagnóstico a seguir e entre em contato com o suporte do Apigee Edge.
Se você for um usuário de 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 o erro de tempo limite - Arquivo de rastreamento das solicitações de API para as quais você está vendo erros de tempo limite do cliente
Se você é usuário de 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 das solicitações de API para as quais você está vendo erros de tempo limite do cliente
- Registros de acesso do NGINX (
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
) - Registros do sistema do processador de mensagens (
/opt/apigee/var/log/edge-message-processor/logs/system.log
)