Entendendo e Gerenciando Latência no APISIX: Um Guia Técnico Abrangente

December 29, 2023

Technology

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.

latency

Para uma melhor compreensão e medição dessas latências, podemos categorizá-las em vários componentes-chave.

  1. 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.

  2. 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.

  3. 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 via clock_gettime(CLOCK_MONOTONIC_COARSE), e com valores típicos de CONFIG_HZ=250, pode ser de até 4 milissegundos. Ao mesmo tempo, o tempo para calcular o request_time não é um tempo monotônico, mas o resultado de gettimeofday(), que é o tempo de acordo com o relógio de parede. Portanto, em alguns casos, o upstream_response_time pode ser ligeiramente maior que o request_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:

  1. 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.

  2. 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.

  3. 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?".

comparação de latência do APISIX e Kong

Tags: