Perché la mia metrica Lambda Iteratorage aumenta e come posso ridurla?

6 minuti di lettura
0

Vedo un aumento (o picchi) nella metrica IteraTorage della mia funzione AWS Lambda.

Breve descrizione

L'età dell'iteratore di una funzione Lambda aumenta quando la funzione non è in grado di elaborare in modo efficiente i dati scritti nei flussi che richiamano la funzione. Per ridurre la](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-metrics.html#monitoring-metrics-performance) metrica[ IteraTorage della funzione, è necessario aumentare la velocità di elaborazione effettiva dello stream.

I seguenti fattori influenzano la** metrica** Iteratorage di una funzione:

Leggi questo articolo per capire come ogni fattore influisce sull'età dell'iteratore. Quindi, riconfigura la funzione o il flusso di dati per ridurre l'età dell'iteratore della funzione in base al tuo caso d'uso. Per ulteriori informazioni sulle chiamate Lambda, consulta Working with AWS Lambda (Utilizzo delle metriche delle funzioni di AWS Lambda).

**Nota:**Per gli stream Amazon DynamoDB, vedi Perché la metrica Lambda Iteratorage aumenta per i miei flussi Amazon DynamoDB?

Risoluzione

Riduci la durata di esecuzione della tua funzione

Una durata di esecuzione elevata aumenta l'età dell'iteratore di una funzione. La riduzione della durata aumenta la produttività di una funzione, il che riduce l'età dell'iteratore di una funzione.

Per ridurre la durata di esecuzione della funzione, esegui una o entrambe le seguenti operazioni:

  1. Aumenta la quantità di memoria allocata alla funzione. Lambda alloca la potenza della CPU in proporzione alla memoria.

  2. Ottimizza il codice delle funzioni in modo che sia necessario meno tempo per elaborare i record.

Nota: Per ulteriori informazioni sulla durata e sulle prestazioni di Lambda, consulta Utilizzo di AWS Lambda e AWS X-Ray.

Aumenta le dimensioni del batch del tuo stream

Se la durata del runtime della funzione è indipendente dal numero di record in un evento, l'aumento della dimensione del batch della funzione riduce l'età dell'iteratore.

Per aumentare la dimensione del batch della funzione, segui le istruzioni in Configurazione di uno stream come origine di eventi.

**Nota:**Se la durata della funzione dipende dal numero di record in un evento, l'aumento della dimensione del batch della funzione non riduce l'età dell'iteratore. Per ulteriori informazioni, consulta Lavorare con il flusso.

Assicurati che la tua funzione gestisca correttamente gli errori di chiamata

Gli errori di chiamata possono far sì che una funzione Lambda impieghi più tempo per elaborare un evento o elaborare lo stesso evento più di una volta. Poiché i record degli eventi vengono letti in sequenza, una funzione non può passare a record successivi se un batch di record causa un errore ogni volta che viene riprovato. In questa situazione, l'età dell'iteratore aumenta linearmente con l'invecchiamento di quei record.

Se la funzione restituisce un errore, Lambda riprova continuamente il batch. I tentativi in batch continuano fino al completamento dell'elaborazione, al raggiungimento del numero massimo di tentativi o alla scadenza dei dati dal flusso.

Assicurati che la tua funzione gestisca correttamente i record scritti nello stream. Man mano che sviluppi la tua funzione, la registrazione e la strumentazione del codice possono aiutarti a diagnosticare gli errori.

Per ulteriori informazioni, consulta quanto segue:

Gestisci la frequenza dell'acceleratore

Poiché i record degli eventi vengono letti in sequenza, una funzione non può passare al record successivo se la chiamata corrente è limitata. In questa situazione, l'età di Iterator aumenterà mentre Lambda riprova le invocazioni limitate.

Per gestire la limitazione della velocità della funzione Lambda, puoi richiedere un aumento della concorrenza o esaminare i problemi di prestazioni della funzione.

Distribuisci uniformemente i record nello stream

Le chiavi di partizione in ogni record di dati determinano gli shard del flusso in cui vengono scritti i record. Un aumento del traffico verso il tuo stream con record contenenti la stessa chiave di partizione fa sì che uno shard riceva un numero sproporzionato di record. Il risultato è un frammento caldo.

Le metriche avanzate a livello di frammento di Kinesis consentono di verificare la velocità di ingestione in ogni frammento e risolvere i problemi relativi a un frammento caldo.

Per ulteriori informazioni, consulta Sotto il cofano: scalare il flusso di dati Kinesis.

Aumenta il numero di partizioni del tuo stream

Un numero basso di partizione in uno stream aumenta l'età dell'iteratore di una funzione. L'aumento del numero di partizione in uno stream aumenta il numero di funzioni Lambda simultanee utilizzate dal flusso, il che riduce la durata dell'iteratore di una funzione.

Per aumentare il numero di partizioni del tuo stream, segui le istruzioni in Riparare uno stream.

**Nota:**La suddivisione delle partizioni non ha un effetto immediato sull'età dell'iteratore di una funzione. I record esistenti rimangono nelle partizioni su cui sono stati scritti. Questi frammenti devono recuperare il loro arretrato prima che l'età degli iteratori per le partizioni diminuisca. Per ulteriori informazioni, consulta Lavorare con il flusso.

Aumenta la velocità di elaborazione dello stream testando diverse impostazioni dei fattori di parallelizzazione e utilizzando un fan-out avanzato

Per testare le impostazioni del fattore di parallelizzazione

È possibile migliorare l'elaborazione dello stream configurando il fattore di parallelizzazione della funzione per aumentare il numero di chiamate Lambda simultanee per ogni partizione di un flusso. Ciò viene fatto specificando il numero di batch simultanei che Lambda esegue il sondaggio da ogni partizione. Questo è configurato nella configurazione dell'origine dell'evento.

Se il fattore di parallelizzazione è impostato su 10, è possibile avere fino a 50 chiamate Lambda simultanee per elaborare cinque partizioni di dati Kinesis.

Ad esempio, esecuzioni simultanee = numero di partizioni x batch simultanei per partizione (fattore di parallelizzazione).

Per ulteriori informazioni, consulta Utilizzo di AWS Lambda con Amazon Kinesis e Nuovi controlli di scalabilità di AWS Lambda per le sorgenti di eventi Kinesis e Amazon DynamoDB.

**Nota:**Quando si aumenta il numero di batch simultanei per partizione, Lambda convalida l'elaborazione in ordine a livello della chiave di partizione.

Per utilizzare un fan-out avanzato

È possibile ridurre la latenza e aumentare la velocità di lettura creando un consumatore di flussi di dati con fanout migliorato. Gli utenti dello streaming ottengono una connessione dedicata a ogni partizione che non ha alcun impatto sulle altre applicazioni che leggono anch'esse dallo stream.

Per ulteriori informazioni, consulta Sviluppo di consumatori personalizzati con throughput dedicato (fan-out avanzato) e Utilizzo di AWS Lambda con Amazon Kinesis.

**Nota:**È consigliabile utilizzare un fan-out avanzato se si hanno molte applicazioni che leggono gli stessi dati o se si stanno rielaborando stream con record di grandi dimensioni.

Informazioni correlate

Le migliori pratiche per lavorare con le funzioni Lambda

Strumento di mappatura dell’origine delle sorgenti degli eventi Lambda

Ridimensionamento delle funzioni AWS Lambda

Ridimensionamento, ridimensionamento ed elaborazione parallela

Configurazione del flusso di dati e della funzione

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa