Perché ho problemi di latenza elevata con Flussi di dati Kinesis?

3 minuti di lettura
0

Voglio sapere perché il mio Flusso di dati Amazon Kinesis ha una latenza elevata durante la ricezione dei record di dati.

Breve descrizione

Il valore GetRecords.Latency può aumentare se aumenta il numero di record o la dimensione dei record per ogni richiesta GET. Se riavvii l'applicazione mentre il produttore sta inserendo dati nel flusso, i record possono accumularsi senza essere consumati. Questo aumento del numero di record o della quantità di dati da recuperare aumenta il valore di GetRecords.Latency. Se un'applicazione non riesce a sincronizzarsi con la frequenza di acquisizione, il valore IteratorAge aumenta.

Nota: l'attivazione della crittografia lato server sul flusso di dati Kinesis può aumentare la latenza.

Risoluzione

Monitora il servizio Flussi di dati Kinesis con Amazon CloudWatch. Controlla i parametri di CloudWatch, come GetRecords.Latency, per verificare se l'aumento della latenza è continuo. Se l'aumento della latenza è continuo, controlla se c'è anche un aumento nei parametri IncomingRecords, IncomingBytes, GetRecords.Records e GetRecords.Bytes in CloudWatch. Con l'aumentare dei volumi di dati, questi parametri aumentano e causano un'elevata latenza. Questo aumento si verifica perché il valore GetRecords recupera più record quando ci sono più record disponibili nel flusso di dati Kinesis.

Se anche il tuo valore IteratorAge è aumentato, è probabile che ci siano più IncomingBytes inseriti nel flusso. Controlla il parametro IncomingBytes in CloudWatch per verificare se il numero di byte è aumentato. Puoi verificare se vengono effettuate meno chiamate GetRecords al flusso. Un numero maggiore di byte in entrata indica che ogni chiamata GetRecords sta recuperando più dati andando ad aumentare il valore di GetRecords.Latency.

Se continui a osservare una latenza elevata (anche se non si verifica un aumento nei parametri IncomingBytes o IncomingRecords), potrebbero esserci troppi dati in entrata. Se l'applicazione consumer non riesce a sincronizzarsi con i dati in entrata, i dati continueranno ad accumularsi nel flusso di dati Kinesis. Anche se riavvii l'applicazione, vengono recuperati più record all'interno di ogni chiamata GetRecords. L'aumento dei record o dei dati recuperati per ogni chiamata GetRecords aumenta quindi il valore di GetRecords.Latency.

Per risolvere questo problema, completa i passaggi seguenti:

  • Controlla la tua applicazione per vedere se viene effettuato un numero sufficiente di chiamate GetRecords per elaborare il volume di dati in entrata. Se utilizzi l'applicazione Amazon Kinesis Client Library (KCL) o AWS Lambda come consumatore, aumenta il numero di shard nel tuo flusso. Un aumento del numero di shard aumenterà la frequenza di consumo del flusso di consegna e ridurrà i valori di IteratorAge e GetRecords.Latency.
  • Aumenta il periodo di conservazione del flusso di dati Kinesis per evitare perdite di dati. Un periodo di conservazione più lungo può aiutare l'applicazione a sincronizzarsi con il backlog dei dati.
  • Se disponi di un'applicazione consumer, controlla la logica di elaborazione e registra il tempo di elaborazione.
  • Controlla l'unità di elaborazione centrale (CPU) e l'utilizzo della memoria del tuo sistema per verificare se hai bisogno di liberare più memoria.
AWS UFFICIALE
AWS UFFICIALEAggiornata 5 mesi fa