Questo documento descrive come risolvere i problemi relativi ai limiti di operazioni simultanee in Compute Engine causati da errori rateLimitExceeded
.
Per identificare la causa di un errore rateLimitExceeded
, segui i seguenti passaggi per la risoluzione dei problemi:
-
Nella console Google Cloud, vai alla pagina Esplora log:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.
Per filtrare i log di errore generati dall'API Compute Engine, inserisci la seguente query di logging nell'editor di query.
log_id("cloudaudit.googleapis.com/activity") protoPayload.serviceName="compute.googleapis.com" protoPayload.response.error.code=403 protoPayload.status.message="Rate Limit Exceeded"
I log degli errori filtrati dovrebbero avere un aspetto simile al seguente:
"protoPayload":{ "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "status": { "message": "Rate Limit Exceeded" } "serviceName": "compute.googleapis.com", "methodName": "METHOD_NAME", ... ... "response": { "error": { "message": "Rate Limit Exceeded", "code": 403, "errors": [ { "message": "Rate Limit Exceeded", "reason": "rateLimitExceeded", "domain": "usageLimits" } ] }, "@type": "type.googleapis.com/error" }, "resourceLocation": { "currentLocations": [ "LOCATION" ] }, ... ...
I dettagli dell'errore contengono i seguenti valori:
METHOD_NAME
: il nome del metodo o dell'operazione del servizio. Per le chiamate API, deve essere il nome del metodo API.LOCATION
: la posizione della risorsa. Può essere una regione, una zona o globale. Ad esempio, le vocicurrentLocations: "us-central1"
(Regionale) ocurrentLocations: "us-central1-a"
indicano che la regione è"us-central1"
ocurrentLocations: "global"
.
Identifica il valore
methodName
associato dal log degli errori. Questo nome rappresenta il metodo dell'API per il quale è stato superato il limite di frequenza, ad esempio:v1.compute.instances.stop
.Identifica la posizione pertinente negli audit log.
Controlla le quote e i limiti di
Concurrent operations per project
.Console
Nella console Google Cloud, vai alla pagina Quote.
La pagina Quote elenca l'utilizzo e i limiti delle quote per il progetto. Per impostazione predefinita, l'elenco è ordinato in modo da mostrare innanzitutto le quote più utilizzate, permettendoti di individuare le quote che rischiano di essere superate.
Per filtrare l'elenco e visualizzare l'utilizzo e il limite per una quota specifica, selezionate Quota o Metrica nel campo Filtro.
Ad esempio, seleziona la quota per nome
Concurrent global operations per project operation type
oService: Compute Engine API
,type: System Limit
e una parola chiaveconcurrent
per elencare tutte le quote per le operazioni simultanee. Il filtro fornisce un elenco di quote concorrenti. In questo elenco puoi cercare la quota interessata. Per filtrare la quota per un'operazione specifica, aggiungi Dimensioni alla query di filtro e seleziona operation_type (visualizzato come methodName negli audit log).Ad esempio, seleziona
instances_stop
per visualizzare l'utilizzo e il limite della quota per l'operazioneinstances.stop
.Per filtrare la quota per una regione specifica, aggiungi Dimensioni alla query di filtro e seleziona la regione (indicata come currentLocations nei log di controllo).
Ad esempio, seleziona
us-central1
per visualizzare l'utilizzo e il limite della quota per la regioneus-central1
.I filtri region e operation_type possono essere utilizzati insieme per visualizzare l'utilizzo e il limite della quota per un'operazione specifica in una regione specifica.
gcloud
Puoi utilizzare Google Cloud CLI per visualizzare l'utilizzo e il limite delle quote di operazioni contemporaneamente.
Per utilizzare questo approccio, assicurati di aver installato il componente comandi alpha. Se utilizzi Cloud Shell per interagire con Google Cloud, Google Cloud CLI è già installato.
Per visualizzare una quota di operazioni, utilizza il seguente comando:
gcloud alpha services quota list \ --service=compute.googleapis.com \ --consumer=projects/PROJECT_ID
Sostituisci
PROJECT_ID
con l'ID del progetto per il quale vuoi visualizzare la quota.In genere, queste quote sono raggruppate in due categorie:
- Globale o regionale
- Per progetto o per progetto e tipo di operazione
Per ulteriori informazioni, consulta Gruppi di quote per le operazioni simultanee.
Controlla il grafico di utilizzo della quota. Se l'utilizzo è vicino o superiore al limite di quota durante il periodo dei log degli errori, significa che la quota o il limite di sistema è stato superato.
Per visualizzare i grafici che mostrano l'utilizzo corrente e di picco, vai alla quota e poi fai clic su
Monitoraggio. Potrebbe essere necessario scorrere verso destra fino alla fine della tabella.Il grafico di monitoraggio confermerà la causa dell'errore
rateLimitExceeded
, con la quota/il limite specifico. Se i valori correnti sono superiori ai valori limite, significa che il limite di sistema è stato superato. Poiché i limiti di sistema non possono essere modificati, ti consigliamo di seguire le best practice riportate di seguito per ridurre il numero di operazioni simultanee.Di seguito sono riportate alcune best practice:
- Attendi il completamento delle operazioni
- Fai affidamento sui codici di errore, non sui messaggi di errore
Ridurre al minimo i tentativi frontend per rispettare i limiti di frequenza delle richieste API
Per ridurre al minimo le riattempi, puoi utilizzare uno dei seguenti metodi: