¿Por qué tengo problemas de latencia alta con Kinesis Data Streams?

3 minutos de lectura
0

Quiero saber por qué Amazon Kinesis Data Stream tiene una latencia alta a la hora de obtener registros de datos.

Breve descripción

GetRecords.Latency puede aumentar si hay un aumento en el recuento o el tamaño de los registros para cada solicitud GET. Si reinicia la aplicación mientras el productor está incorporando datos a la secuencia, los registros se pueden acumular sin consumirse. Este aumento en el recuento de registros o en la cantidad de datos que se van a obtener aumenta el valor de GetRecords.Latency. Si una aplicación no puede alcanzar la tasa de ingesta, el valor de IteratorAge aumenta.

Nota: Activar el cifrado del lado del servidor en su secuencia de datos de Kinesis puede aumentar la latencia.

Solución

Supervise el servicio Kinesis Data Streams con Amazon CloudWatch. Compruebe las métricas de CloudWatch, como GetRecords.Latency, para comprobar si el aumento de la latencia es continuo. Si el aumento de la latencia es continuo, compruebe si también hay un aumento en las métricas IncomingRecords, IncomingBytes, GetRecords.Records y GetRecords.Bytes en CloudWatch. A medida que aumentan los volúmenes de datos, estas métricas aumentan y provocan una latencia alta. Este aumento se produce porque GetRecords obtiene más registros cuando hay más registros disponibles en la secuencia de datos de Kinesis.

Si su valor de IteratorAge también aumentó, es probable que haya más métricas IncomingBytes en la secuencia. Compruebe la métrica IncomingBytes en CloudWatch para comprobar si la cantidad de bytes aumentó. Puede comprobar si se realizan menos llamadas de GetRecords a la secuencia. Un número mayor de bytes entrantes indica que cada llamada a GetRecords recupera más datos y aumenta el valor de GetRecords.Latency.

Si sigue observando una latencia alta (aunque no haya ningún aumento en IncomingBytes o IncomingRecords), es posible que haya demasiados datos entrantes. Si la aplicación para consumidores no puede ponerse al día con los datos entrantes, los datos seguirán acumulándose en la secuencia de datos de Kinesis. Incluso si reinicia la aplicación, se obtienen más registros en cada llamada a GetRecords. El aumento de registros o datos recuperados para cada llamada a GetRecords aumenta entonces el valor de GetRecords.Latency.

Para resolver este problema, complete estas tareas:

  • Revise su aplicación para ver si se han realizado suficientes llamadas a GetRecords para procesar el volumen de datos entrantes. Si usa la aplicación Amazon Kinesis Client Library (KCL) o AWS Lambda como consumidor, aumente la cantidad de particiones en la secuencia. Un aumento en el recuento de particiones aumenta la tasa de consumo de la secuencia de entrega y reduce los valores de IteratorAge y GetRecords.Latency.
  • Aumente el período de retención de la secuencia de datos de Kinesis para evitar cualquier pérdida de datos. Un período de retención más largo puede ayudar a su aplicación a ponerse al día con la acumulación de datos.
  • Si tiene una solicitud para un consumidor, compruebe la lógica de procesamiento y registre el tiempo de procesamiento.
  • Compruebe el uso de la unidad central de procesamiento (CPU) y de la memoria del sistema para ver si necesita liberar más memoria.
OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 4 meses