Come posso risolvere gli errori di limitazione (della larghezza di banda della rete) "Rate exceeded" e "TooManyRequestsException" di una funzione Lambda?
La mia funzione AWS Lambda restituisce gli errori di limitazione (della larghezza di banda della rete) "Rate exceeded" e "TooManyRequestsException".
Risoluzione
Individua la risorsa che ha subito la limitazione (della larghezza di banda della rete)
Gli errori di limitazione (della larghezza di banda della rete) potrebbero non derivare dalla funzione Lambda. La limitazione potrebbe verificarsi nelle chiamate API durante l'invocazione della funzione.
Per individuare la risorsa che ha subito la limitazione, verifica la presenza di errori di limitazione (della larghezza di banda della rete) esaminando Amazon CloudWatch Logs e le metriche. Se non sono presenti metriche Throttles riferibili a Lambda, la limitazione è attribuibile alle chiamate API nel codice della funzione Lambda.
Controlla se nei log e nel codice della funzione sono presenti chiamate API cher hanno subito una limitazione (della larghezza di banda della rete)
Se ne individui, assicurati di utilizzare il backoff esponenziale nel codice per ritentare le chiamate API.
Nota: Se hai bisogno di una quota di transazioni al secondo (TPS) più elevata per una chiamata API, richiedi un aumento della quota di servizio. Non tutte le quote sono modificabili.
Controlla le metriche di CloudWatch sulla concorrenza delle funzioni
Controlla la metrica ConcurrentExecutions per la funzione nella Regione AWS in cui si verifica la limitazione (della larghezza di banda).
Visualizza la statistica Maximum per ConcurrentExecutions e la statistica Sum per Throttles. Verifica se il numero massimo di ConcurrentExecutions è prossimo alla quota di concorrenza a livello di account nella Regione, nonché punti dati corrispondenti nel grafico Throttles.
Verifica la quota di concorrenza
Verifica se hai superato la velocità di dimensionamento per esecuzioni concorrenti per la Regione della funzione. La velocità di dimensionamento per esecuzioni concorrenti è di 1.000 istanze di ambiente di esecuzione ogni 10 secondi. Per ulteriori informazioni, consulta Comportamento del dimensionamento di Lambda.
Nella pagina delle metriche per Lambda della console CloudWatch, riduci l'intervallo di tempo del grafico a 1 minuto. Se hai limiti di concorrenza di picchi, il grafico presenta un picco di Throttles che corrisponde a un andamento a scaletta di ConcurrentExecutions.
Per evitare limiti di concorrenza di picchi, puoi configurare la concorrenza assegnata. Puoi anche richiedere un aumento dei limiti di concorrenza per la funzione Lambda.
Controlla i picchi nelle metriche di durata relative alla funzione
La concorrenza dipende dalla durata della funzione. Se il completamento del codice della funzione richiede troppo tempo, è possibile che le risorse di elaborazione non siano sufficienti.
Rivedi il campo Memoria massima utilizzata nei log di esecuzione e confronta il valore con l'impostazione della memoria configurata per la funzione. Se il valore Memoria massima utilizzata è prossimo a quello della memoria configurata, la funzione è generalmente vincolata alla memoria. Per ulteriori informazioni, consulta Determinazione dell'impostazione di memoria appropriata per una funzione Lambda.
Configura la concorrenza riservata
Verifica di aver configurato la concorrenza riservata per la funzione. La concorrenza riservata funge da limite di concorrenza per la funzione proteggendola anche da altre funzioni che potrebbero consumare concorrenza non riservata. Sebbene la concorrenza riservata possa mitigare la limitazione (della larghezza di banda della rete) di una funzione, può anche involontariamente limitare la funzione.
Utilizza la console Lambda per verificare l'impostazione della concorrenza riservata. Se la concorrenza riservata non è configurata, la funzione utilizza la concorrenza non riservata. Quando le chiamate con funzioni superano la concorrenza non riservata, si verifica una limitazione.
Nota: se hai configurato una funzione con concorrenza riservata nulla, la funzione ha subito una limitazione perché non è in grado di elaborare alcun evento. Assicurati di aumentare il valore a un numero maggiore di zero.
Per configurare o aumentare la concorrenza riservata, consulta Configurazione della concorrenza riservata per una funzione. Per risolvere i problemi di concorrenza riservata, consulta Come posso risolvere i problemi di concorrenza riservata di Lambda?
Utilizza il backoff esponenziale
Per evitare errori di limitazione (della larghezza di banda della rete), utilizza il backoff esponenziale e la ripetizione dei tentativi quando effettui una chiamata API. È consigliabile utilizzare il backoff esponenziale nell'applicazione che effettua chiamate API per la funzione Lambda.
Per ulteriori informazioni, consulta Exponential backoff and jitter (Backoff esponenziale e jitter) e Comportamento di ripetizione. Assicurati di distribuire le chiamate API nel tempo. Pianifica le azioni con la randomizzazione in modo che si distribuiscano nel tempo.
Utilizza una coda DLQ
Per le origini di eventi asincrone, come Amazon Simple Storage Service (Amazon S3) e il Pianificatore Amazon EventBridge, configura la funzione con una coda DLQ. Quindi verifica la gestione degli errori per la configurazione delle invocazioni asincrone. La coda DLQ rileva tutti gli eventi scartati a causa di limitazioni costanti (della larghezza di banda della rete) e può proteggere i dati.
Nota: per le origini di eventi Amazon Simple Queue Service (Amazon SQS), devi configurare la coda DLQ sulla coda Amazon SQS.
Richiedi un aumento della quota di servizio
Se il carico di lavoro richiede una quota di servizio più elevata per le esecuzioni concorrenti, richiedi un aumento della quota di servizio.
Informazioni correlate
Best practice per l'utilizzo delle funzioni AWS Lambda
Risoluzione dei problemi di invocazione in Lambda
Informazioni sul comportamento relativo ai nuovi tentativi in Lambda
- Argomenti
- ServerlessCompute
- Tag
- AWS Lambda
- Lingua
- Italiano
Video correlati

