Risolvere i problemi relativi alla quota di operazioni simultanee di Compute Engine


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:

  1. Nella console Google Cloud, vai alla pagina Esplora log:

    Vai a Esplora log

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.

  2. 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 voci currentLocations: "us-central1"(Regionale) o currentLocations: "us-central1-a" indicano che la regione è "us-central1" o currentLocations: "global".

  3. 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.

  4. Identifica la posizione pertinente negli audit log.

  5. Controlla le quote e i limiti di Concurrent operations per project.

    Console

    1. Nella console Google Cloud, vai alla pagina Quote.

      Vai a 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.

    2. 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 o Service: Compute Engine API, type: System Limit e una parola chiave concurrent 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'operazione instances.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 regione us-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.

  6. 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: