Comprensión y gestión de la latencia en APISIX: una guía técnica integral

December 29, 2023

Technology

Una consulta común de los usuarios gira en torno a la medición precisa de la latencia en APISIX. Al utilizar APISIX, ¿cómo se debe abordar una latencia inusualmente alta?

En realidad, las discusiones sobre la medición de la latencia se centran en el rendimiento y el tiempo de respuesta de las solicitudes de API. Comprender estos aspectos es crucial para garantizar servicios de API eficientes, especialmente en software B2B donde los clientes exigen una alta disponibilidad y rendimiento de las API. En escenarios sensibles como el software de comercio de acciones en mercados financieros, la latencia puede afectar significativamente a los operadores.

Entonces, ¿qué es la latencia y qué es la latencia en APISIX? La latencia en APISIX se refiere al tiempo que toma todo el proceso de una solicitud de API, desde que es enviada por el cliente hasta que se recibe la respuesta. Este retraso comprende factores como la latencia de la red del cliente, el tiempo de procesamiento interno de APISIX y la latencia de interacción con los servicios ascendentes.

latencia

Para una mejor comprensión y medición de estas latencias, podemos categorizarlas en varios componentes clave.

  1. Latencia de red entre el cliente y APISIX: Mide el tiempo que tarda una solicitud en viajar desde el cliente hasta APISIX, influenciado por factores como la distancia entre el cliente y APISIX, la congestión de la red, etc. Se pueden emplear herramientas especializadas para medir este tiempo.

  2. Tiempo de procesamiento interno de APISIX: Incluye el tiempo que APISIX tarda en ejecutar varias operaciones internamente, como decisiones de enrutamiento, autenticación, autorización y lógica personalizada implementada a través de plugins.

  3. Latencia de interacción con los servicios ascendentes: Si APISIX se comunica con servicios ascendentes (normalmente aplicaciones backend o microservicios), el tiempo invertido en esta interacción se incluye en la latencia general. Esto implica el tiempo que tarda la solicitud en viajar desde APISIX hasta el servicio ascendente y el tiempo que tarda la respuesta en regresar.

La latencia de APISIX se puede calcular utilizando la fórmula: Latencia de APISIX = Latencia Total - Latencia de Interacción Ascendente. La Latencia Total representa el tiempo desde el envío de la solicitud hasta la recepción de la respuesta, mientras que la Latencia de Interacción Ascendente se centra en el tiempo de comunicación entre APISIX y el servicio ascendente.

Nota: En Linux, upstream_response_time se cuenta mediante clock_gettime(CLOCK_MONOTONIC_COARSE), y con valores típicos de CONFIG_HZ=250, puede ser de hasta 4 milisegundos. Al mismo tiempo, el tiempo para calcular request_time no es un tiempo monótono, sino el resultado de gettimeofday(), que es el tiempo según el reloj de pared. Por lo tanto, en algunos casos, upstream_response_time puede ser ligeramente mayor que request_time.

Además, en entornos de red débiles o escenarios que involucran la carga/descarga de archivos grandes, la latencia entre el cliente y la puerta de enlace puede agregarse a apisix_latency. Por favor, analice los problemas específicos caso por caso.

La latencia de APISIX se puede clasificar en tres tipos:

  1. Latencia descendente: Incluye la latencia de transmisión de red y operaciones como la lectura del cuerpo de la solicitud entre APISIX y el cliente. Monitorear y analizar esta latencia proporciona información sobre el rendimiento de la comunicación para su optimización.

  2. Latencia de NGINX: Dado que APISIX utiliza NGINX para el manejo y enrutamiento de solicitudes, el tiempo de ejecución interno de NGINX afecta la latencia general. Se pueden emplear herramientas especializadas para su monitoreo.

  3. Latencia de ejecución del código de los plugins de Lua: Considerando los numerosos plugins de Lua en APISIX, el tiempo de ejecución de cada plugin es un factor significativo. Se requieren herramientas especializadas para su análisis.

Para resolver problemas de latencia, se puede realizar un análisis sistemático basado en los componentes de latencia identificados. Las soluciones incluyen optimizar la arquitectura de red, utilizar CDN para la latencia de red del cliente, identificar código Lua problemático en APISIX y examinar las interacciones con los servicios ascendentes en busca de posibles problemas. El monitoreo y análisis continuos permiten la detección y resolución oportuna de problemas potenciales, facilitando una mejor optimización de los servicios de API para cumplir con los requisitos de los clientes finales.

Comprender y gestionar la latencia de APISIX es esencial para garantizar un rendimiento óptimo de las API. A través de un análisis exhaustivo de cada componente, monitoreo continuo y optimización estratégica, los servicios de API pueden mejorarse para aumentar la disponibilidad y la capacidad de respuesta, satisfaciendo eficazmente las necesidades de los usuarios finales.

Para datos de comparación de QPS y latencia entre APISIX y otros productos de puerta de enlace, consulte "¿Por qué Apache APISIX es la mejor puerta de enlace de API?".

comparación de latencia de APISIX y Kong

Tags: