¿Cómo soluciono los problemas de latencia alta en mis solicitudes de API Gateway integradas con Lambda?

6 minutos de lectura
0

Los tiempos de respuesta son lentos cuando hago solicitudes a una API de Amazon API Gateway que está integrada con una función de AWS Lambda. ¿Cómo determino la causa de la latencia alta?

Resolución

Se debe abordar la latencia alta cuando un punto de conexión de la API que está integrado con una función de Lambda tarda demasiado en enviar respuestas a un cliente. Revise las métricas de API Gateway para identificar la sección del flujo de solicitud/respuesta que está causando una latencia alta. Después de determinar la causa de la latencia alta, puede trabajar para reducir los retrasos.

Filtrar las métricas de CloudWatch para revisar las métricas de latencia en la API

Para identificar la sección del flujo de solicitud/respuesta que está causando una latencia alta, primero realice los siguientes pasos:

  1. Observe la latencia del cliente después de enviar una solicitud a la API.
  2. Después de observar la latencia general, abra la consola de Amazon CloudWatch. En el panel de navegación izquierdo, elija Metrics (Métricas), All metrics (Todas las métricas). En el cuadro de búsqueda de métricas, ingrese APIGateway. En los resultados de la búsqueda, seleccione API Gateway, ApiId (ID de API).
  3. En la lista de API, filtre la API especificada mediante el ID de API o el nombre de la API. Tras filtrar, active las casillas IntegrationLatency (Latencia de integración) y Latency (Latencia).
    Nota: El ID de API y el nombre de la API están disponibles en la consola de API Gateway.
  4. Abra la pestaña Graphed metrics (Métricas gráficas). En Statistic (Estadística), elija Maximum (Máximo). En Period (Periodo), seleccione 1 minute (1 minuto). Encima del gráfico, seleccione el período Custom (Personalizado). Elija el período durante el cual el cliente experimentó una latencia alta.
  5. Revise las métricas IntegrationLatency (Latencia de integración) y Latency (Latencia). Tenga en cuenta los valores y las marcas de tiempo cuando estas métricas tengan valores altos. Los valores pueden explicar la causa de la latencia alta.

Comparar las métricas para identificar la causa de la latencia alta

Continúe revisando las métricas relacionadas con el flujo de solicitud/respuesta para encontrar la causa de la latencia alta:

  1. Compare la métrica Latency (Latencia) de API Gateway con el valor de latencia general observado en el cliente.
    Por ejemplo, una API tiene una métrica Latency (Latencia) con un valor Maximum (Máximo) que es aproximadamente igual al valor de Max Latency (Latencia máxima) del cliente. Estos valores sugieren que el retraso máximo en el flujo de solicitud/respuesta es el tiempo que API Gateway tarda en procesar las solicitudes. El tiempo de procesamiento de API Gateway incluye el tiempo necesario para enviar solicitudes a Lambda, esperar las respuestas de Lambda y enviar las respuestas a un cliente.
  2. Compare la métrica IntegrationLatency (Latencia de integración) con la métrica Latency (Latencia) de la API.
    Por ejemplo, la métrica IntegrationLatency (Latencia de integración) es más o menos igual que la métrica Latency (Latencia). Estos valores indican que la latencia en la API se debe principalmente a las solicitudes de backend enviadas a Lambda que tardan más en ser respondidas. La métrica IntegrationLatency (Latencia de integración) incluye el tiempo transcurrido entre que API Gateway envía una solicitud y API Gateway recibe una respuesta del backend
  3. Cuando la métrica IntegrationLatency (Latencia de integración) es baja en comparación con la métrica Latency (Latencia) de la API, los tiempos de respuesta del backend son bajos. En este escenario, se tarda más en procesar las solicitudes o respuestas de la API.
    Por ejemplo, las plantillas de mapeo configuradas en la API o en un autorizador Lambda de API Gateway pueden generar retrasos.
  4. Cuando la métrica Latency (Latencia) de la API es mucho más baja que la latencia observada en el cliente, la ruta puede estar provocando retrasos. Revise la ruta entre el cliente y API Gateway para confirmar si hay algún punto de conexión intermedio que esté agregando retrasos.
    Por ejemplo, las conexiones de VPN privadas o los proxies pueden generar retrasos.

Consultar las métricas de Lambda para identificar la causa de un valor de IntegrationLatency elevado

Por último, céntrese en las métricas de Lambda relacionadas con el flujo de solicitud/respuesta para encontrar la causa del valor alto de IntegrationLatency (Latencia de integración):

  1. Compruebe la métrica Duration (Duración) de la función de Lambda para confirmar si el tiempo de ejecución de la función de Lambda es superior. Si el tiempo de ejecución de la función de Lambda ha aumentado, revise el registro de CloudWatch para encontrar la sección de código que está causando una latencia alta. De forma predeterminada, las funciones de Lambda registran las instrucciones START (Iniciar), END (Terminar) y REPORT (Informe) en los registros de CloudWatch. Agregue instrucciones de registro personalizadas en cada sección lógica del código de la función de Lambda para obtener registros detallados de CloudWatch.
  2. Si la métrica Duration (Duración) no cambió durante el período de latencia alta en el cliente, determine si el tiempo de inicialización aumentó. El tiempo de inicialización de una función de Lambda es el tiempo que se tarda en configurar el entorno de ejecución para procesar una solicitud. Las solicitudes que provienen de API Gateway pueden requerir un nuevo entorno para su procesamiento. Esto se configura a través de Lambda. Normalmente, el código que está presente fuera del controlador de funciones de Lambda se ejecuta durante el tiempo de inicialización. El código que tarda más en completarse puede provocar retrasos en los tiempos generales de respuesta al cliente.
    Nota: El tiempo de inicialización se conoce como INIT o arranque en frío.
  3. Confirme si hay algún aumento en el valor de Duration (Duración) para el tiempo de inicialización al verificar las instrucciones del informe en los registros de funciones de Lambda. El tiempo de inicialización elevado para algunas solicitudes puede provocar un aumento en la métrica IntegrationLatency (latencia de integración) de API Gateway.

Información relacionada

Trabajar con métricas para API HTTP

Dimensiones y métricas de Amazon API Gateway

Supervisión de la ejecución de la API de WebSocket con métricas de CloudWatch

Visualización de métricas en la consola de CloudWatch

Ciclo de vida del entorno de ejecución de Lambda

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año