Perché le sorgenti di eventi asincroni impiegano molto tempo per attivare la mia funzione Lambda?

4 minuti di lettura
0

Si verifica un ritardo quando le sorgenti di eventi asincroni attivano la mia funzione AWS Lambda.

Breve descrizione

Quando usi chiamate asincrone con le tue funzioni Lambda, potresti notare che gli eventi impiegano più tempo del previsto per essere attivati. In alternativa, i tuoi eventi potrebbero essere inviati alla coda di lettere morte (DLQ) senza essere prelevati dal servizio Lambda per un'ulteriore elaborazione.

Esistono diversi servizi AWS che richiamano funzioni Lambda in modo asincrono:

Risoluzione

Ritardi nella chiamata

Potresti riscontrare ritardi dovuti al metodo asincrono di gestione delle richieste.

  • Quando si effettua una richiesta, questa viene inviata a una coda asincrona interna. Lambda raccoglie le richieste dalla coda asincrona interna e quindi invia la richiesta alla funzione Lambda per un'ulteriore elaborazione. Potresti riscontrare un ritardo nei file di log Amazon CloudWatch relativi alla tua funzione se la tua funzione Lambda riscontra degli errori. I ritardi possono verificarsi anche se le richieste vengono limitate a livello di funzione.
  • Se non ci sono errori o punti dati sull'acceleratore a livello di funzione, controlla le metriche a livello regionale per errori e limitazioni. Se altre funzioni vengono richiamate in modo asincrono e quindi in caso di errori, queste funzioni vengono notevolmente ritardate. Pertanto, anche se la funzione non presenta punti dati relativi a errori o limitazioni, le chiamate o le richieste effettuate alla funzione potrebbero comunque subire ritardi.
  • Se altre funzioni che si trovano nella stessa regione della funzione Lambda, sono richiamate più volte in modo asincrono e la coda interna riscontra congestioni. Per risolvere il problema, aumenta la concomitanza a livello regionale.
  • Per controllare il backlog interno della coda, attiva AWS X-Ray sulla tua funzione Lambda. Quando AWS X-Ray è attivato, puoi utilizzare la proprietà dwell time. Questa proprietà mostra il tempo totale che le richieste trascorrono nella coda interna prima che il servizio Lambda le invii alla funzione Lambda per l'elaborazione.
  • Imposta una concomitanza per funzione, o concomitanza riservata, per proteggere le funzioni dal backlog della coda.

Chiamata duplicata

Lambda è un servizio distribuito e assicura che la funzione venga richiamata almeno una volta. Tuttavia, se la funzione viene richiamata più di una volta, possono verificarsi duplicati. Controlla i log di CloudWatch per queste chiamate duplicate.

  • È consigliabile assicurarsi che la funzione sia in grado di gestire richieste duplicate. Per ulteriori informazioni, vedi Come posso rendere idempotente la mia funzione Lambda?
  • Esamina i log di CloudWatch per Lambda e controlla gli ID delle richieste per la tua funzione. Dai registri, puoi verificare se gli eventi duplicati hanno ID di richiesta uguali o diversi. Gli ID di richiesta rimangono gli stessi per tutto il ciclo di vita di un richiamo asincrono per Lambda. Se gli ID di richiesta sono gli stessi, controlla se la funzione presenta punti dati di errore che abbiano causato un nuovo tentativo e la duplicazione della chiamata.
  • Se gli ID di richiesta sono diversi, le chiamate duplicate si verificano sul lato client.

Chiamate mancanti

Esamina i log di CloudWatch per distinguere tra chiamate mancanti e ritardate. Per le chiamate ritardate, segui i passaggi descritti in precedenza nella sezione Chiamate ritardate di questo articolo.

Le chiamate mancanti si verificano quando la concomitanza non è sufficiente per soddisfare la richiesta. Se la funzione ha una concomitanza riservata e la funzione incontra degli errori, la richiesta rimane a lungo nella coda asincrona. La richiesta viene quindi eliminata senza essere elaborata da Lambda. Esamina la metrica AsyncEventsDropped per verificare il numero di eventi che sono stati eliminati senza eseguire la funzione.

Se hai configurato DLQ, controlla il DLQ o la destinazione in caso di errore per la richiesta. Se un evento scade nella coda interna dopo sei ore, la richiesta può essere inviata al DLQ senza essere elaborata da Lambda.

Metriche per la chiamata asincrona

Per ulteriori informazioni sulla revisione di ulteriori metriche per le chiamate asincrone, consulta Introduzione di nuove metriche di chiamata asincrona per AWS Lambda.

Informazioni correlate

Chiamata asincrona

Gestione dell'idempotenza delle funzioni Lambda con AWS Lambda Powertools

Utilizzo delle metriche delle funzioni Lambda

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa