Come faccio a risolvere gli errori di limitazione (della larghezza di banda della rete) delle API o di "Frequenza superata" in Elastic Beanstalk?

5 minuti di lettura
0

Come faccio a risolvere gli errori di limitazione (della larghezza di banda della rete) delle API o di "Frequenza superata" quando utilizzo AWS Elastic Beanstalk?

Breve descrizione

Le chiamate API a qualsiasi servizio AWS non possono superare la frequenza massima consentita di richieste API al secondo. Il limite è condiviso tra tutte le risorse per account e per regione AWS.

Non importa se le chiamate provengono da un'applicazione, dall'interfaccia della linea di comando AWS (AWS CLI) o dalla Console di gestione AWS. Se le richieste API superano la velocità massima al secondo, viene visualizzato un errore "Frequenza superata" e le chiamate API vengono quindi limitate. Alcune chiamate API possono essere effettuate decine di volte al secondo, mentre altre sono limitate a poche chiamate consentite al secondo.

Nota: in caso di errori durante l'esecuzione dei comandi dell'interfaccia della linea di comando (AWS CLI), assicurati di utilizzare la versione più recente di AWC CLI.

Puoi ricevere errori dalle chiamate API effettuate direttamente a Elastic Beanstalk e da altri servizi AWS gestiti da Elastic Beanstalk, come AWS CloudFormation, Amazon Elastic Compute Cloud (Amazon EC2), Auto Scaling e Load Balancing. Il rischio di rallentamenti aumenta con l'aumentare dell'utilizzo dell'account o con l'aggiunta di più risorse allo stesso account.

Nota: il limite di chiamate può variare in base all'ora del giorno, poiché i nostri servizi si adattano in base al carico. È consigliabile regolare dinamicamente la frequenza di utilizzo dell'API per adattarla al comportamento dinamico dei limiti.

Risoluzione

Per prevenire o risolvere gli errori di "Frequenza superata" e la limitazione delle richieste, prova queste soluzioni:

Trova la fonte di chiamate API elevate

1.    Nel flusso di eventi di Elastic Beanstalk, identifica l'errore di limitazione (della larghezza di banda della rete). Annota l'intervallo di tempo in cui hai ricevuto l'errore. Oppure, se le chiamate API provengono da un'applicazione o da uno script, cerca l'intervallo di tempo nei log dell'applicazione.

2.    Per le richieste che hai riscontrato nell'intervallo di tempo con errori RequestLimitExceeded, utilizza AWS CloudTrail per visualizzare gli eventi e convalidare eventName, eventSource (il servizio) e userAgent. Abbina il timestamp dell'errore negli eventi Elastic Beanstalk o nei tuoi log con gli errori rilevati in CloudTrail. Questo ti aiuterà a sapere quale fonte del tuo account sta consumando la maggior parte delle chiamate API.

Nota: Il conteggio manuale dei record di CloudTrail può essere difficile. Puoi utilizzare le query di Athena anche su CloudTrail.

I parametri di utilizzo di Amazon CloudWatch possono aiutarti a monitorare l'utilizzo delle API nel tempo. Tieni presente che al momento non tutti i servizi e le chiamate API sono supportati nelle metriche di utilizzo.

Le applicazioni di terze parti possono effettuare chiamate continue a Elastic Beanstalk o ad altri servizi AWS gestiti da Elastic Beanstalk. Se concedi a un'applicazione di terze parti il diritto di effettuare chiamate API nel tuo account, assicurati di monitorare anche queste.

Utilizza le best practice per ridurre l'utilizzo delle API

Usa i nuovi tentativi di errore, i backoff esponenziali e il jitter per limitare la frequenza delle chiamate API. Sebbene ogni SDK AWS implementi una logica di riprova automatica e algoritmi di backoff esponenziale, potresti dover modificare le impostazioni di configurazione dell'SDK in base alle tue esigenze se la logica di riprova predefinita non è sufficiente.

Nota: Le impostazioni SDK sono solo una parte da considerare. Il tuo codice dovrebbe anche utilizzare la logica di backoff, retry e jitter quando chiami l'SDK.

Se disponi di uno script personalizzato che effettua chiamate API ogni secondo, valuta se è necessario. Per casi d'uso avanzati, prendi in considerazione la creazione di un livello di caching per ridurre il consumo di API. Puoi anche prendere in considerazione una strategia multi-account. È consigliabile evitare che un singolo account AWS cresca troppo. La separazione delle risorse di sviluppo o test dalle risorse di produzione può impedire alle risorse di sviluppo di sottrarre l'utilizzo delle API alle risorse di produzione.

Richiedi un aumento del limite della frequenza delle chiamate API

Se necessario, puoi richiedere un aumento del limite della frequenza di chiamata API. Questi limiti sono più difficili da aumentare rispetto ai limiti tipici basati sulle risorse e richiedono una solida giustificazione basata sul caso d'uso. I nostri team esamineranno le tue API e si assicureranno che vengano seguite le migliori pratiche. Le richieste devono essere effettuate con largo anticipo rispetto a qualsiasi necessità.

Quando richiedi un aumento, includi le seguenti informazioni:

  • La tua regione AWS e i tempi relativi ai problemi di throttling
  • La chiamata API che usi e la frequenza di chiamata di cui hai bisogno
  • Una giustificazione dettagliata del caso d'uso, ad esempio l'esigenza aziendale e la necessità tecnica dell'aumento

Assicurati di provare a utilizzare i ritentativi di errore, gli arretramenti esponenziali e i jitter prima di inviare la richiesta. Includi i risultati di questi tentativi nella richiesta e tutte le informazioni relative ai tentativi.


Informazioni correlate

Ritentativi di errore e backoff esponenziale in AWS

Backoff e jitter esponenziali

Registrazione delle chiamate API Elastic Beanstalk con AWS CloudTrail

Metriche di utilizzo di CloudWatch

Vantaggi dell'utilizzo di più account AWS

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa