Perché la mia funzione Lambda con un'origine degli eventi Amazon SQS non esegue il dimensionamento in modo ottimale?

5 minuti di lettura
0

Per l'origine degli eventi della coda Amazon Simple Queue Service (Amazon SQS) desidero che la mia funzione AWS Lambda abbia una simultaneità ottimale.

Risoluzione

Nota: quando configuri una coda Amazon SQS come origine degli eventi, le funzioni Lambda possono eseguire il dimensionamento in modo ottimale aumentando fino a un massimo di 300 istanze aggiuntive al minuto. Il numero massimo di invocazioni simultanee è 1.000 per le code standard. Se si utilizza lo strumento di mappatura dell'origine degli eventi FIFO, le funzioni possono essere dimensionate simultaneamente rispetto al numero di gruppi di messaggi attivi. Per ulteriori informazioni, consulta la pagina Ridimensionamento ed elaborazione.

Identifica e risolvi eventuali errori di invocazione della funzione Lambda

Per prevenire errori su vasta scala, Lambda limita il dimensionamento delle funzioni quando si verificano errori di invocazione. Una volta risolti gli errori, Lambda continua a scalare la funzione. Per ulteriori informazioni, consulta la pagina Backoff strategy for failed invocations. Per conoscere le best practice su come risolvere gli errori di invocazione delle funzioni Lambda, consulta le pagine Risoluzione dei problemi in Lambda e Come faccio a risolvere i problemi relativi alla funzione Lambda?

Configura la tua funzione Lambda con una simultaneità ottimale per il tuo caso d'uso

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 tengono conto della simultaneità riservata e possono elaborare più messaggi dalla coda di quanti ne possano essere inviati alla funzione.

La quantità di simultaneità riservata alla funzione deve avere i seguenti valori minimi:

  • Per le code Amazon SQS standard: 1.000
  • Per le code FIFO: il numero di gruppi di messaggi attivi

Non è consigliabile avere una simultaneità riservata inferiore al numero di gruppi di messaggi nella coda FIFO. In tal caso, infatti, si potrebbero riscontrare ritardi di elaborazione dalla coda FIFO e limitazioni della funzione.

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

Simultaneità non riservata

Se non configuri la simultaneità riservata sulla tua funzione, questa avrà una quota di simultaneità non riservata predefinita di 1.000. Questa quota predefinita si applica ad altre funzioni nello stesso account AWS e nella stessa Regione AWS. Se nella regione della funzione sono disponibili almeno 1.000 simultaneità non riservate, la funzione scalerà fino a raggiungere la simultaneità massima disponibile. Quando viene utilizzata tutta la simultaneità del tuo account, Lambda limita le chiamate.

Nota: le funzioni Lambda inizialmente scalano in base alla frequenza di dimensionamento simultaneo.

Per evitare un dimensionamento eccessivo dovuto a improvvisi picchi di traffico, Lambda ha delle restrizioni sulla velocità di dimensionamento delle funzioni. La frequenza di dimensionamento simultaneo definisce la velocità massima con cui le funzioni all'interno del tuo account possono aumentare in risposta a un aumento delle richieste.

Importante: la frequenza di dimensionamento simultaneo è un limite a livello di funzione. Ogni funzione del tuo account può scalare indipendentemente dalle altre funzioni. La frequenza di dimensionamento simultaneo è inoltre diversa dal limite di simultaneità a livello di account, che fornisce il numero totale di simultaneità disponibili per le tue funzioni.

Impostazione della simultaneità massima

L'impostazione della simultaneità massima limita il numero massimo di esecuzioni simultanee della funzione Lambda affinché non venga superato un valore configurato. Quando si imposta la simultaneità massima per un'origine degli eventi, tale valore si applica solo a quella specifica origine degli eventi. Qualsiasi altra origine degli eventi priva di simultaneità massima utilizzerà la quota di simultaneità rimanente dell'account o la simultaneità riservata.

L'impostazione della simultaneità massima e la simultaneità riservata possono essere utilizzate insieme. Onde evitare limitazioni, è consigliabile non impostare la simultaneità massima con un valore superiore alla simultaneità riservata della funzione.

Verifica che ci siano abbastanza messaggi nella coda di Amazon SQS per consentire alla funzione Lambda di scalare

Se una coda Amazon SQS è configurata per richiamare una funzione Lambda, Lambda scalerà le invocazioni solo quando ci sono messaggi nella coda.

Per verificare quanti messaggi nella tua coda Amazon SQS devono essere elaborati, consulta il parametro ApproximateNumberOfMessagesVisible.

Se il parametro è basso o pari a 0, la funzione non può essere scalata.

Se il parametro è elevato e non ci sono errori di invocazione, aumenta la dimensione del batch nella notifica dell'evento. Aumenta la dimensione del batch finché il parametro durata non aumenta più velocemente del parametro dimensione batch. Per ulteriori informazioni, consulta la pagina Monitoraggio delle funzioni sulla console Lambda.

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. Per ulteriori informazioni, consulta la pagina ReceiveMessage.

Informazioni correlate

Utilizzo di Lambda con Amazon SQS

Managing AWS Lambda function concurrency

AWS UFFICIALE
AWS UFFICIALEAggiornata un mese fa