Configura i controlli di scalabilità personalizzati per i servizi

Per impostazione predefinita, Cloud Run è ottimizzato per prestazioni elevate con un target di utilizzo del 60% sia per la CPU che per la concorrenza e scala automaticamente il numero di istanze per gestire tutte le richieste in entrata. Tuttavia, per alcuni casi d'uso, potresti voler configurare i fattori di scalabilità da utilizzare, ad esempio solo la CPU, e impostare target personalizzati per l'utilizzo.

Cloud Run fornisce controlli di scalabilità per offrirti una maggiore proprietà dei comportamenti di scalabilità del tuo servizio, consentendoti di prendere decisioni informate sulla scalabilità del tuo carico di lavoro in base ai tuoi requisiti. Puoi configurare i seguenti target di utilizzo personalizzati:

  • Utilizzo target per lo scaling basato sulla CPU
  • Utilizzo target per la scalabilità basata sulla concorrenza

Con i controlli di scalabilità, puoi ottimizzare i costi e migliorare la prevedibilità dei tuoi servizi. Per saperne di più sul comportamento predefinito di scalabilità automatica dei servizi Cloud Run, consulta Informazioni sulla scalabilità automatica delle istanze nei servizi Cloud Run.

Limiti di configurazione

Ai target di scalabilità personalizzati si applicano i seguenti limiti:

Fattore di scalabilità Percentuale predefinita Percentuale minima configurabile Percentuale massima configurabile
CPU target utilization 60% 10% 90%
Concurrency target utilization 60% 10% 95%

Configura i target personalizzati

Definisci target di utilizzo personalizzati per ottimizzare i costi o migliorare le prestazioni dei tuoi workload configurando target di utilizzo specifici per CPU e concorrenza entro i limiti di configurazione.

Qualsiasi modifica alla configurazione comporta la creazione di una nuova revisione. Anche le revisioni successive riceveranno automaticamente questa impostazione di configurazione, a meno che tu non apporti aggiornamenti espliciti per modificarla.

Anche se configuri target di concorrenza personalizzati o disattivi lo scaling basato sulla CPU, la funzionalità di ottimizzazione della concorrenza adattiva (ACT) rimane attiva. Per i dettagli, consulta Informazioni sulla scalabilità automatica delle istanze.

Puoi configurare i controlli di scalabilità utilizzando la console Google Cloud , gcloud CLI, YAML o Terraform quando esegui il deployment di una nuova revisione.

Console

  1. Nella console Google Cloud , vai alla pagina Servizi di Cloud Run:

    Vai a Cloud Run

  2. Se stai configurando un nuovo servizio, fai clic su Deploy container per visualizzare la pagina Crea servizio.

  3. Se stai configurando un servizio esistente, fai clic sul servizio per aprire la pagina Dettagli servizio, quindi fai clic sulla scheda Scalabilità.

  4. Individua la sezione Scalabilità del servizio. Assicurati che l'opzione Scalabilità automatica sia selezionata. Espandi la sezione Personalizza i fattori di scalabilità automatica per configurare i seguenti target di utilizzo:

    • Per configurare l'utilizzo CPU target, fai clic su Utilizzo CPU e inserisci un valore compreso tra 10 e 90.

    • Per configurare l'utilizzo della concorrenza target, fai clic su Utilizzo delle richieste in parallelo e inserisci un valore compreso tra 10 e 95.

    • Fai clic su Fine in ogni configurazione di utilizzo.

  5. Fai clic su Crea per un nuovo servizio. Fai clic su Visualizza differenze e fai di nuovo il deployment, quindi su Esegui il deployment delle modifiche per un servizio esistente.

gcloud

Aggiorna i valori di utilizzo CPU target e utilizzo concorrenza target di una determinata revisione eseguendo il comando gcloud run services update.

  • Per aggiornare l'utilizzo della CPU di destinazione, esegui questo comando:

    gcloud run services update SERVICE --scaling-cpu-target=CPU_TARGET

    Sostituisci quanto segue:

    • SERVICE: il nome del servizio.

    • CPU_TARGET: il target per l'utilizzo della CPU. Specifica un valore da 0.1 a 0.90. Puoi configurare fino a due cifre dopo il separatore decimale.

  • Per aggiornare l'utilizzo della concorrenza target, esegui questo comando:

    gcloud run services update SERVICE --scaling-concurrency-target=CONCURRENCY_TARGET

    Sostituisci quanto segue:

    • SERVICE: il nome del servizio.

    • CONCURRENCY_TARGET: il target per l'utilizzo della concorrenza. Specifica un valore compreso tra 0,1 e 0,95. Puoi configurare fino a due cifre dopo la virgola.

  • Per aggiornare sia l'utilizzo della CPU di destinazione sia quello della concorrenza, esegui questo comando:

    gcloud run services update SERVICE --scaling-cpu-target=CPU_TARGET \
    --scaling-concurrency-target=CONCURRENCY_TARGET

    Sostituisci quanto segue:

    • SERVICE: il nome del servizio.
    • CPU_TARGET: il target per l'utilizzo della CPU. Specifica un valore da 0.1 a 0.90. Puoi configurare fino a due cifre dopo il separatore decimale.
    • CONCURRENCY_TARGET: il target per l'utilizzo della concorrenza. Specifica un valore compreso tra 0,1 e 0,95. Puoi configurare fino a due cifre dopo la virgola.

YAML

  1. Se stai creando un nuovo servizio, ignora questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Per aggiornare l'utilizzo target della CPU e della concorrenza, aggiungi gli attributi run.googleapis.com/scaling-cpu-target e run.googleapis.com/scaling-concurrency-target:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-cpu-target: 'CPU_TARGET'
            run.googleapis.com/scaling-concurrency-target: 'CONCURRENCY_TARGET'

    Sostituisci quanto segue:

    • SERVICE: il nome del servizio.
    • CPU_TARGET: il target per l'utilizzo della CPU. Specifica un valore da 0.1 a 0.90. Puoi configurare fino a due cifre dopo il separatore decimale.
    • CONCURRENCY_TARGET: il target per l'utilizzo della concorrenza. Specifica un valore compreso tra 0,1 e 0,95. Puoi configurare fino a due cifre dopo la virgola.
  3. Crea o aggiorna il servizio utilizzando il seguente comando:

    gcloud run services replace service.yaml

    Il comando gcloud run services replace utilizza per impostazione predefinita il file service.yaml, se presente.

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Aggiungi quanto segue a una risorsa google_cloud_run_v2_service nella configurazione Terraform:
resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE"
  location = "REGION"

  template {
    scaling {
      cpu_utilization         = CPU_TARGET
      concurrency_utilization = CONCURRENCY_TARGET
    }
    containers {
      image = "IMAGE_URL"
    }
  }
}

Sostituisci quanto segue:

  • SERVICE: il nome del servizio.
  • REGION: la Google Cloud regione, ad esempio europe-west1.
  • CPU_TARGET: il target per l'utilizzo della CPU. Specifica un valore da 0.1 a 0.90. Puoi configurare fino a due cifre dopo il separatore decimale.
  • CONCURRENCY_TARGET: il target per l'utilizzo della concorrenza. Specifica un valore compreso tra 0,1 e 0,95. Puoi configurare fino a due cifre dopo la virgola.
  • IMAGE_URL: un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL segue il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

Disattiva i controlli di scalabilità

Puoi disattivare i target di utilizzo della CPU o di concorrenza, ma non entrambi. Un driver di scalabilità deve essere sempre attivo. Per disattivare i controlli di scalabilità, ripristina i valori di utilizzo predefiniti anziché disattivarli. Quando disattivi un driver di scalabilità, Cloud Run ignora questa metrica durante il processo decisionale di scalabilità.

Puoi disattivare i controlli di scalabilità utilizzando la console Google Cloud , gcloud CLI, YAML o Terraform quando esegui il deployment di una nuova revisione.

Console

  1. Nella console Google Cloud , vai alla pagina Servizi di Cloud Run:

    Vai a Cloud Run

  2. Fai clic sul servizio per aprire la pagina Dettagli servizio, quindi fai clic sulla scheda Scalabilità.

  3. Individua la sezione Scalabilità del servizio. Assicurati che l'opzione Scalabilità automatica sia selezionata. Espandi la sezione Personalizza i fattori di scalabilità automatica:

    • Per scalare solo in base alla CPU, fai clic sull'icona di eliminazione accanto a Utilizzo delle richieste in parallelo e inserisci un valore per l'utilizzo della CPU target, se non è presente.

    • Per scalare solo in base alla concorrenza, fai clic sull'icona di eliminazione accanto a Utilizzo CPU e inserisci un valore per l'utilizzo della concorrenza target, se non è presente.

    • Fai clic su Fine in ogni configurazione di utilizzo.

  4. Fai clic su Crea per un nuovo servizio. Fai clic su Visualizza differenze e fai di nuovo il deployment, quindi su Esegui il deployment delle modifiche per un servizio esistente.

gcloud

Puoi disattivare l'utilizzo CPU target o l'utilizzo della concorrenza target eseguendo il comando gcloud run services update.

  • Per scalare solo in base alla CPU, disattiva il target di concorrenza eseguendo questo comando:

    gcloud run services update SERVICE --scaling-concurrency-target=disabled

    Sostituisci SERVICE con il nome del servizio.

  • Per scalare solo in base alla concorrenza, disattiva il target CPU eseguendo questo comando:

    gcloud run services update SERVICE --scaling-cpu-target=disabled

    Sostituisci SERVICE con il nome del servizio.

YAML

  1. Se stai creando un nuovo servizio, ignora questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Per scalare solo in base alla CPU, disabilita il target di concorrenza impostando l'attributo run.googleapis.com/scaling-concurrency-target su disabled:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-concurrency-target: disabled

    Sostituisci SERVICE con il nome del servizio.

  3. Per scalare solo in base alla concorrenza, disabilita il target CPU impostando l'attributo run.googleapis.com/scaling-cpu-target su disabled:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-cpu-target: disabled

    Sostituisci SERVICE con il nome del servizio.

  4. Crea o aggiorna il servizio utilizzando il seguente comando:

    gcloud run services replace service.yaml

    Il comando gcloud run services replace utilizza per impostazione predefinita il file service.yaml, se presente.

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Aggiungi quanto segue a una risorsa google_cloud_run_v2_service nella configurazione Terraform:
  • Per scalare solo in base alla CPU, disabilita il target di concorrenza impostando concurrency_utilization su 0:

    resource "google_cloud_run_v2_service" "default" {
      name     = "SERVICE"
      location = "REGION"
    
      template {
        scaling {
          cpu_utilization         = CPU_TARGET
          concurrency_utilization = 0
        }
        containers {
          image = "IMAGE_URL"
        }
      }
    }
    

    Sostituisci quanto segue:

    • SERVICE: il nome del servizio.
    • REGION: la Google Cloud regione, ad esempio europe-west1.
    • CPU_TARGET: il target per l'utilizzo della CPU. Specifica un valore da 0.1 a 0.90. Puoi configurare fino a due cifre dopo il separatore decimale.
    • IMAGE_URL: un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL segue il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • Per scalare solo in base alla concorrenza, disabilita il target CPU impostando cpu_utilization su 0:

    resource "google_cloud_run_v2_service" "default" {
      name     = "SERVICE"
      location = "REGION"
    
      template {
        scaling {
          cpu_utilization         = 0
          concurrency_utilization = CONCURRENCY_TARGET
        }
        containers {
          image = "IMAGE_URL"
        }
      }
    }
    

    Sostituisci quanto segue:

    • SERVICE: il nome del servizio.
    • REGION: la Google Cloud regione, ad esempio europe-west1.
    • CONCURRENCY_TARGET: il target per l'utilizzo della concorrenza. Specifica un valore compreso tra 0,1 e 0,95. Puoi configurare fino a due cifre dopo la virgola.
    • IMAGE_URL: un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL segue il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

Ripristina i valori predefiniti

Quando ripristini i valori di utilizzo della CPU target o della concorrenza target sui valori predefiniti, Cloud Run utilizza il target di utilizzo predefinito del 60% anziché i target personalizzati. Puoi ripristinare i controlli di scalabilità ai valori predefiniti utilizzando la console Google Cloud , gcloud CLI, YAML o Terraform quando esegui il deployment di una nuova revisione.

Console

  1. Nella console Google Cloud , vai alla pagina Servizi di Cloud Run:

    Vai a Cloud Run

  2. Fai clic sul servizio per aprire la pagina Dettagli servizio, quindi fai clic sulla scheda Scalabilità.

  3. Individua la sezione Scalabilità del servizio. Assicurati che l'opzione Scalabilità automatica sia selezionata. Espandi la sezione Personalizza i fattori di scalabilità automatica per configurare i seguenti target di utilizzo:

    • Se i target Utilizzo CPU e Utilizzo richieste in parallelo sono stati rimossi, fai clic su Aggiungi un indicatore per aggiungerli di nuovo.

    • Imposta i valori per Utilizzo CPU e Utilizzo richieste in parallelo su 60.

    • Fai clic su Fine in ogni configurazione di utilizzo.

  4. Fai clic su Crea per un nuovo servizio. Fai clic su Visualizza differenze e fai di nuovo il deployment, quindi su Esegui il deployment delle modifiche per un servizio esistente.

gcloud

Ripristina l'utilizzo CPU target e l'utilizzo concorrenza target ai valori predefiniti eseguendo il comando gcloud run services update.

  • Per ripristinare l'utilizzo target della CPU al valore predefinito, esegui il seguente comando:

    gcloud run services update SERVICE --scaling-cpu-target=default

    Sostituisci SERVICE con il nome del servizio.

  • Per ripristinare l'utilizzo della concorrenza target sul valore predefinito, esegui questo comando:

    gcloud run services update SERVICE --scaling-concurrency-target=default

    Sostituisci SERVICE con il nome del servizio.

  • Per ripristinare sia l'utilizzo target della CPU sia la concorrenza target ai valori predefiniti, esegui questo comando:

    gcloud run services update SERVICE --scaling-cpu-target=default \
    --scaling-concurrency-target=default

    Sostituisci SERVICE con il nome del servizio.

YAML

  1. Se stai creando un nuovo servizio, ignora questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Per ripristinare l'utilizzo di CPU e concorrenza ai target predefiniti, rimuovi gli attributi run.googleapis.com/scaling-cpu-target e run.googleapis.com/scaling-concurrency-target dal file YAML:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          # Remove the scaling target annotations to restore defaults
        ...

    Sostituisci SERVICE con il nome del servizio.

  3. Crea o aggiorna il servizio utilizzando il seguente comando:

    gcloud run services replace service.yaml

    Il comando gcloud run services replace utilizza per impostazione predefinita il file service.yaml, se presente.

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Aggiungi quanto segue a una risorsa google_cloud_run_v2_service nella configurazione Terraform:

Per ripristinare l'utilizzo di CPU e concorrenza ai target predefiniti, rimuovi gli attributi cpu_utilization e concurrency_utilization dal blocco scaling nella configurazione Terraform:

resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE"
  location = "REGION"

  template {
    scaling {
      # Remove the scaling target attributes to restore defaults
    }
    containers {
      image = "IMAGE_URL"
    }
  }
}

Sostituisci quanto segue:

  • SERVICE: il nome del servizio.
  • REGION: la Google Cloud regione, ad esempio europe-west1.
  • IMAGE_URL: un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL segue il formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

Visualizza la configurazione di scalabilità

Puoi visualizzare la configurazione di scalabilità utilizzando la console Google Cloud o gcloud CLI.

Console

  1. Nella console Google Cloud , vai alla pagina Servizi di Cloud Run:

    Vai a Cloud Run

  2. Fai clic sul servizio per aprire il riquadro Dettagli servizio.

  3. Fai clic sulla scheda Scalabilità per visualizzare le impostazioni di scalabilità.

gcloud

  1. Utilizza il seguente comando:

    gcloud run services describe SERVICE

    Sostituisci SERVICE con il nome del servizio.

  2. Individua il valore delle impostazioni Utilizzo CPU target e Utilizzo concorrenza target nella configurazione restituita.

Best practice

Puoi ottimizzare i costi ed evitare un overscaling diminuendo il numero di istanze oppure puoi migliorare il rendimento eseguendo lo scaling in modo più aggressivo in risposta a driver specifici. Per determinare i target di utilizzo ottimali per il tuo carico di lavoro, utilizza le seguenti strategie:

  • Prima di modificare i target, identifica la metrica che attiva lo scaling del servizio. Segui questi passaggi per identificare la metrica di scalabilità:

    1. Vai a Esplora metriche nella console Google Cloud per esaminare il grafico di monitoraggio del driver di scalabilità.

    2. Cerca e seleziona la metrica run.googleapis.com/scaling/recommended_instances e imposta Aggregazione su Nessuna aggregazione per visualizzare la metrica raggruppata in base al driver di scalabilità.

    Il driver con il valore più alto è quello che controlla il conteggio delle istanze del servizio. Se vuoi che un altro driver abbia la priorità o se vuoi scalare in modo più o meno aggressivo, modifica il target di utilizzo per quel driver specifico.

    Se il driver di scalabilità è la regolazione adattiva della concorrenza (ACT), significa che l'utilizzo della CPU di 1 secondo supera il 90% per le singole istanze e Cloud Run limita dinamicamente la concorrenza delle richieste per proteggere il servizio. Per ridurre l'impatto di ACT sullo scaling, valuta la possibilità di aumentare l'allocazione della CPU o di modificare le impostazioni di concorrenza. Per saperne di più, consulta Informazioni sulla scalabilità automatica delle istanze.

  • Modifica i target in modo incrementale e attendi qualche minuto tra una modifica e l'altra per osservare l'effetto sul rendimento.

  • Utilizza la suddivisione del traffico per testare nuovi target di scalabilità indirizzando una piccola percentuale del traffico a una revisione separata prima di implementarli nell'intero servizio.

Informazioni sui target di utilizzo basso

Se abbassi il target di utilizzo al minimo di 0.1 (10%), la scalabilità del servizio cambia in modo significativo.

I vantaggi dell'impostazione di un target di utilizzo basso includono:

  • Elevata disponibilità del servizio: il servizio viene scalato molto prima, mantenendo un ampio buffer di capacità inattiva per gestire picchi di traffico improvvisi senza aumentare la latenza.

  • Scalabilità più rapida con un numero ridotto di istanze: i servizi vengono scalati in modo più affidabile prima di raggiungere i colli di bottiglia di utilizzo elevato.

Gli svantaggi dell'impostazione di target di utilizzo bassi includono:

  • Potenziale aumento dei costi: esegui più istanze del necessario per il carico attuale, il che comporta una fatturazione più elevata.
  • Decisioni di scalabilità più frequenti: a livelli di utilizzo inferiori, Cloud Run ha una tolleranza inferiore e non attende a lungo prima di scalare.

Passaggi successivi