Por que tenho problemas de alta latência com o Kinesis Data Streams?

3 minuto de leitura
0

Quero saber por que meu Amazon Kinesis Data Stream tem alta latência ao obter registros de dados.

Breve descrição

GetRecords.Latency pode aumentar se houver um aumento na contagem ou tamanho de registros para cada solicitação GET. Se você reiniciar sua aplicação enquanto o produtor estiver ingerindo dados no fluxo, os registros poderão se acumular sem serem consumidos. Esse aumento na contagem de registros ou na quantidade de dados a serem buscados aumenta o valor de GetRecords.Latency. Se uma aplicação não conseguir acompanhar a taxa de ingestão, o IteratorAge aumentará.

Observação: ativar a criptografia do lado do servidor em seu fluxo de dados do Kinesis pode aumentar sua latência.

Resolução

Monitore o serviço Kinesis Data Streams com o Amazon CloudWatch. Verifique as métricas do CloudWatch, como GetRecords.Latency, para verificar se o aumento de latência é contínuo. Se o aumento de latência for contínuo, verifique se há também um aumento nas métricas IncomingRecords, IncomingBytes, GetRecords.Records e GetRecords.Bytes no CloudWatch. À medida que os volumes de dados aumentam, essas métricas aumentam e causam alta latência. Esse aumento ocorre porque GetRecords busca mais registros quando há mais registros disponíveis no fluxo de dados do Kinesis.

Se seu IteratorAge também aumentou, é provável que haja mais IncomingBytes colocados no fluxo. Verifique a métrica IncomingBytes no CloudWatch para verificar se o número de bytes aumentou. Você pode verificar se menos chamadas GetRecords são feitas para o fluxo. O aumento nos bytes de entrada indica que cada chamada GetRecords está recuperando mais dados, o que aumenta o valor de GetRecords.Latency.

Se você continuar observando uma alta latência (mesmo que não haja aumento em IncomingBytes ou IncomingRecords), talvez haja excesso de dados de entrada. Se a aplicação consumidora não conseguir acompanhar os dados recebidos, eles continuarão se acumulando no fluxo de dados do Kinesis. Mesmo se você reiniciar a aplicação, mais registros serão buscados em cada chamada GetRecords. O aumento nos registros ou dados buscados para cada chamada GetRecords aumentará o valor de GetRecords.Latency.

Para resolver esse problema, conclua as seguintes etapas:

  • Verifique sua aplicação para ver se foram feitas chamadas GetRecords suficientes para processar o volume de dados de entrada. Se você usa a aplicação Amazon Kinesis Client Library (KCL) ou o AWS Lambda como consumidor, aumente o número de fragmentos em seu fluxo. Um aumento na contagem de fragmentos aumenta a taxa de consumo do fluxo de entrega e diminui os valores de IteratorAge e GetRecords.Latency.
  • Aumente o período de retenção do fluxo de dados do Kinesis para evitar perdas de dados. Um período de retenção mais longo pode ajudar sua aplicação a acompanhar o acúmulo de dados.
  • Se você tiver uma aplicação consumidora, verifique a lógica de processamento e o tempo de processamento de registros.
  • Verifique a unidade central de processamento (CPU) e a utilização da memória do seu sistema para ver se você precisa liberar mais memória.
AWS OFICIAL
AWS OFICIALAtualizada há 5 meses