Entendendo e Gerenciando Latência no APISIX: Um Guia Técnico Abrangente
December 29, 2023
Uma consulta comum dos usuários gira em torno da medição precisa da latência no APISIX. Ao utilizar o APISIX, como alguém deve abordar uma latência anormalmente alta?
Na realidade, as discussões sobre medição de latência estão centradas no desempenho e no tempo de resposta das solicitações de API. Compreender esses aspectos é crucial para garantir serviços de API eficientes, especialmente em software B2B, onde os clientes exigem alta disponibilidade e desempenho da API. Em cenários sensíveis, como software de negociação de ações nos mercados financeiros, a latência pode impactar significativamente os traders.
Então, o que é latência e o que é latência no APISIX? A latência no APISIX refere-se ao tempo necessário para todo o processo de uma solicitação de API, desde o envio pelo cliente até o recebimento da resposta. Esse atraso compreende fatores como a latência da rede do cliente, o tempo de processamento interno do APISIX e a latência de interação com os serviços upstream.
Para uma melhor compreensão e medição dessas latências, podemos categorizá-las em vários componentes-chave.
-
Latência de Rede do Cliente para o APISIX: Isso mede o tempo necessário para uma solicitação viajar do cliente para o APISIX, influenciado por fatores como a distância entre o cliente e o APISIX, congestionamento da rede, etc. Ferramentas especializadas podem ser empregadas para medir esse tempo.
-
Tempo de Processamento Interno do APISIX: Isso abrange o tempo que o APISIX leva para executar várias operações internamente, incluindo decisões de roteamento, autenticação, autorização e lógica personalizada implementada por meio de plugins.
-
Latência de Interação com o Serviço Upstream: Se o APISIX se comunica com serviços upstream (normalmente aplicativos de backend ou microsserviços), o tempo gasto nessa interação é incluído na latência geral. Isso envolve o tempo necessário para a solicitação viajar do APISIX para o serviço upstream e o tempo que leva para a resposta retornar.
A latência do APISIX pode ser calculada usando a fórmula: Latência do APISIX = Latência Total - Latência de Interação Upstream. A Latência Total representa o tempo desde o envio da solicitação até o recebimento da resposta, enquanto a Latência de Interação Upstream se concentra no tempo de comunicação entre o APISIX e o serviço upstream.
Nota: No Linux, o
upstream_response_time
é contado viaclock_gettime
(CLOCK_MONOTONIC_COARSE
), e com valores típicos deCONFIG_HZ=250
, pode ser de até 4 milissegundos. Ao mesmo tempo, o tempo para calcular orequest_time
não é um tempo monotônico, mas o resultado degettimeofday()
, que é o tempo de acordo com o relógio de parede. Portanto, em alguns casos, oupstream_response_time
pode ser ligeiramente maior que orequest_time
.Além disso, em ambientes de rede fraca ou cenários envolvendo upload/download de arquivos grandes, a latência entre o cliente e o gateway pode ser adicionada ao
apisix_latency
. Por favor, analise questões específicas caso a caso.
A latência do APISIX pode ser classificada em três tipos:
-
Latência Downstream: Inclui a latência de transmissão de rede e operações como a leitura do corpo da solicitação entre o APISIX e o cliente. Monitorar e analisar essa latência fornece insights sobre o desempenho da comunicação para otimização.
-
Latência do NGINX: Como o APISIX usa o NGINX para manipulação e roteamento de solicitações, o tempo de execução interno do NGINX afeta a latência geral. Ferramentas especializadas podem ser empregadas para monitoramento.
-
Latência de Execução do Código do Plugin Lua: Considerando os numerosos plugins Lua do APISIX, o tempo de execução de cada plugin é um fator significativo. Ferramentas especializadas são necessárias para análise.
Para resolver problemas de latência, uma análise sistemática pode ser conduzida com base nos componentes de latência identificados. As soluções incluem otimizar a arquitetura de rede, utilizar CDN para latência de rede do cliente, identificar código Lua problemático no APISIX e examinar interações com serviços upstream para possíveis problemas. O monitoramento e a análise contínuos permitem a detecção e resolução oportunas de problemas potenciais, facilitando uma melhor otimização dos serviços de API para atender às necessidades dos clientes finais.
Compreender e gerenciar a latência do APISIX é essencial para garantir o desempenho ideal da API. Por meio de uma análise minuciosa de cada componente, monitoramento contínuo e otimização estratégica, os serviços de API podem ser aprimorados para melhorar a disponibilidade e a capacidade de resposta, atendendo efetivamente às necessidades dos usuários finais.
Para dados de comparação de QPS e latência entre o APISIX e outros produtos de gateway, consulte "Por que o Apache APISIX é o Melhor Gateway de API?".