Usando AWS re:Post, accetti AWS re:Post Termini di utilizzo

Perché la mia funzione Lambda con un'origine eventi Amazon SQS non si ridimensiona in modo ottimale?

5 minuti di lettura
0

La funzione AWS Lambda per l'origine eventi della mia coda Amazon Simple Queue Service (Amazon SQS) non si ridimensiona come previsto. Voglio configurare una simultaneità ottimale.

Risoluzione

Nota: quando configuri una coda Amazon SQS come origine di eventi, le funzioni Lambda possono ridimensionarsi in modo ottimale aggiungendo fino a un massimo di 300 istanze al minuto. Il numero massimo di esecuzioni simultanee per le code standard è 1.250. Se utilizzi lo strumento di mappatura dell'origine degli eventi FIFO (first-in, first-out), le funzioni possono ridimensionarsi simultaneamente rispetto al numero di gruppi di messaggi attivi.

Identifica e risolvi i problemi di invocazione delle funzioni Lambda

Per prevenire errori su vasta scala, Lambda limita il ridimensionamento delle funzioni quando si verificano errori di invocazione. Dopo la risoluzione dei problemi, Lambda continua a ridimensionare la funzione. Per ulteriori informazioni, consulta Backoff strategy for failed invocations. Per risolvere gli errori di invocazione delle funzioni Lambda, vedi Handling errors for an SQS event source in Lambda e Come faccio a risolvere i problemi relativi alla funzione Lambda?

Configura la funzione Lambda con una simultaneità ottimale

Simultaneità riservata

Se hai configurato la simultaneità riservata sulla tua funzione, Lambda limiterà la funzione quando questa raggiungerà il valore riservato. Gli strumenti di mappatura dell'origine degli eventi non includono la simultaneità riservata e possono elaborare dalla coda più messaggi di quanti ne possano inviare alla funzione.

La simultaneità minima riservata per la funzione deve essere 1.250 per le code SQS standard e uguale al totale dei gruppi di messaggi attivi per le code FIFO. È consigliabile impostare la simultaneità riservata su un valore superiore al numero di gruppi di messaggi nella coda FIFO. Una simultaneità riservata inferiore può causare ritardi di elaborazione dalla coda FIFO e limitare la funzione.

Importante: per limitare il numero di invocazioni simultanee, utilizza l'impostazione della simultaneità massima per le origini degli eventi Amazon SQS invece della simultaneità riservata.

Simultaneità predefinita

Per gli account AWS è impostata una quota di simultaneità predefinita uguale a 1.000 per tutte le funzioni nello stesso account e regione AWS. Le funzioni si ridimensionano fino a raggiungere la massima simultaneità disponibile. Quando tutte le funzioni utilizzano il pool di 1.000 invocazioni concorrenti, Lambda limita le invocazioni.

Lambda limita la velocità con cui le funzioni aumentano le istanze, in modo che picchi improvvisi di traffico non causino un aumento eccessivo. Inizialmente, l'aumento delle istanze delle funzioni Lambda si basa sulla frequenza di dimensionamento simultaneo. Poiché la frequenza di dimensionamento simultaneo è definita a livello di funzione, ogni funzione dell'account può ridimensionarsi indipendentemente dalle altre. Inoltre, la frequenza di dimensionamento simultaneo è diversa dalla quota di simultaneità a livello di account, che indica la simultaneità complessiva disponibile per le tue funzioni.

Nota: la simultaneità predefinita è diversa da quella assegnata. Per ulteriori informazioni, consulta Understanding reserved concurrency and provisioned concurrency.

Impostazione della simultaneità massima

Quando imposti la simultaneità massima per un'origine degli eventi, il valore si applica solo all'origine specifica. Le altre origini degli eventi senza simultaneità massima utilizzeranno la quota di simultaneità rimanente dell'account o la simultaneità riservata.

L'impostazione della simultaneità massima e la simultaneità riservata possono essere utilizzate insieme. È consigliabile impostare la simultaneità massima su un valore inferiore rispetto alla simultaneità riservata, in modo che la funzione non subisca limitazioni.

Verifica che ci siano abbastanza messaggi nella coda di Amazon SQS per consentire l'aumento delle invocazioni alla funzione Lambda

Se hai configurato una coda Amazon SQS per invocare una funzione Lambda, Lambda aumenterà le invocazioni solo se ci sono messaggi nella coda.

Per utilizzare Amazon CloudWatch per verificare quanti messaggi nella coda devono essere elaborati, vedi la metrica ApproximateNumberOfMessagesVisible della coda.

Se la metrica ha un valore basso o pari a 0, la funzione non può aumentare le istanze.

Se la metrica ha un valore elevato e non ci sono problemi di invocazione, aumenta la dimensione del batch nella notifica degli eventi fino a quando la metrica Durata non raggiunge un picco. Per ulteriori informazioni sulle metriche per Lambda, consulta Types of metrics.

Nota: la dimensione massima del batch per una coda Amazon SQS standard è di 10.000 record. Per le code FIFO, la dimensione massima del batch è di 10 record.

Verifica che Amazon SQS aggiunga i messaggi a una coda

Per verificare che Amazon SQS aggiunga i nuovi messaggi a una coda, vedi la metrica NumberOfMessagesSent della coda.

Verifica che il consumer stia effettuando la chiamata all'API ReceiveMessage

Per verificare che il consumer stia effettuando la chiamata all'API ReceiveMessage, vedi la metrica NumberOfMessagesReceived della coda.

Nota: la presenza di picchi nella metrica NumberOfEmptyReceives mostra che il consumer sta effettuando la chiamata all'API ReceiveMessage, ma la chiamata non restituisce un messaggio dalla coda. Questo problema si verifica quando nella coda non ci sono messaggi.

Informazioni correlate

Utilizzo di Lambda con Amazon SQS

Managing AWS Lambda function concurrency

AWS UFFICIALE
AWS UFFICIALEAggiornata un mese fa