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 questi 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 degli errori 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, questo nome deve corrispondere a quello del metodo API.LOCATION
: la posizione della risorsa. Può essere una regione, una zona o una risorsa 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 API per il quale è stata superata la limitazione 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 gli utilizzi 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 quelle a rischio di superamento.
Per filtrare l'elenco e visualizzare l'utilizzo e il limite di una quota specifica, seleziona Quota o Metrica nel campo Filtro.
Ad esempio, seleziona la quota per il 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 delle quote per le operazioni simultanee. In questo elenco puoi cercare una quota specifica. Per filtrare la quota per un'operazione specifica, aggiungi Dimensioni alla query di filtro e seleziona operation_type (o 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 negli audit log).
Ad esempio, seleziona
us-central1
per visualizzare l'utilizzo e il limite della quota per la regioneus-central1
.I filtri Regione e operation_type possono essere utilizzati insieme per visualizzare l'utilizzo e il limite della quota per un'operazione specifica in una determinata regione.
gcloud
Puoi utilizzare Google Cloud CLI per visualizzare l'utilizzo e il limite delle quote per operazioni simultanee.
Per utilizzare questo approccio, assicurati di aver installato il componente comandi alpha. Se utilizzi Cloud Shell per interagire con Google Cloud, troverai Google Cloud CLI già installato.
Per visualizzare una quota per una determinata operazione, 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:
- Livello globale o di regione
- Per progetto o per tipo di operazione per ciascun progetto
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 della quota durante il periodo dei log degli errori, significa che questo limite o quello del sistema sono stati superati.
Per visualizzare i grafici che mostrano l'utilizzo corrente e massimo, seleziona la quota e 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 le seguenti best practice 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
Riduci al minimo i nuovi tentativi lato client per rispettare i limiti di frequenza dell'API
Per ridurre al minimo i nuovi tentativi, puoi adottare uno dei seguenti metodi: