Per impostazione predefinita, Cloud Run è ottimizzato per prestazioni elevate con un utilizzo target 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 darti maggiore controllo sui comportamenti di scalabilità del tuo servizio, consentendoti di prendere decisioni informate sulla scalabilità del tuo carico di lavoro in base ai tuoi requisiti. Puoi attivare il comportamento di scalabilità avanzata mantenendo i target di utilizzo predefiniti oppure configurare i seguenti target di utilizzo personalizzati:
- Utilizzo target per la scalabilità basata 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à | % predefinito | Percentuale minima configurabile | Percentuale massima configurabile |
|---|---|---|---|
CPU target utilization |
60% | 10% | 95% |
Concurrency target utilization |
60% | 10% | 95% |
Attivare il comportamento di scalabilità avanzato
Lo strumento di scalabilità automatica di Cloud Run risponde in modo preciso ai target che configuri, anche per i servizi con un numero ridotto di istanze. Valuta la possibilità di attivare questa funzionalità per una migliore prevedibilità dello scaling, anche se intendi mantenere i target di utilizzo predefiniti del 60% sia per la CPU che per la concorrenza.
Per attivare questa funzionalità, puoi utilizzare gcloud CLI o YAML quando esegui il deployment di una nuova revisione.
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.
gcloud
Imposta i valori di utilizzo CPU target e utilizzo concorrenza target di una determinata revisione
eseguendo il seguente comando gcloud beta run services update:
gcloud beta run services update SERVICE --scaling-cpu-target=0.6 \ --scaling-concurrency-target=0.6
Sostituisci SERVICE con il nome del servizio.
YAML
Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:
gcloud run services describe SERVICE --format export > service.yaml
Aggiungi gli attributi
run.googleapis.com/scaling-cpu-targeterun.googleapis.com/scaling-concurrency-target.apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/launch-stage: BETA name: SERVICE spec: template: metadata: annotations: run.googleapis.com/scaling-cpu-target: '0.6' run.googleapis.com/scaling-concurrency-target: '0.6'
Sostituisci SERVICE con il nome del servizio.
Crea o aggiorna il servizio utilizzando il seguente comando:
gcloud run services replace service.yaml
Configurare target personalizzati
Definisci target di utilizzo personalizzati per ottimizzare i costi o migliorare il rendimento 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.
Puoi configurare i controlli di scalabilità utilizzando gcloud CLI o YAML quando esegui il deployment di una nuova revisione.
gcloud
Aggiorna i valori di utilizzo CPU target e utilizzo concorrenza target di una determinata revisione eseguendo il comando gcloud beta run services update.
Per aggiornare l'utilizzo della CPU di destinazione, esegui questo comando:
gcloud beta 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 compreso tra 0,1 e 0,95. Puoi configurare fino a due cifre dopo la virgola decimale.
Per aggiornare l'utilizzo della concorrenza target, esegui questo comando:
gcloud beta 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 decimale.
Per aggiornare sia la CPU target sia l'utilizzo della concorrenza, esegui questo comando:
gcloud beta 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 compreso tra 0,1 e 0,95. Puoi configurare fino a due cifre dopo la virgola 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 decimale.
YAML
Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:
gcloud run services describe SERVICE --format export > service.yaml
Per aggiornare l'utilizzo target della CPU e della concorrenza, aggiungi gli attributi
run.googleapis.com/scaling-cpu-targeterun.googleapis.com/scaling-concurrency-target:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/launch-stage: BETA 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 compreso tra 0,1 e 0,95. Puoi configurare fino a due cifre dopo la virgola 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 decimale.
Crea o aggiorna il servizio utilizzando il seguente comando:
gcloud run services replace service.yaml
Disattivare i controlli di scalabilità
Puoi disattivare i target di utilizzo della CPU o di utilizzo della 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 quando prende decisioni di scalabilità.
Puoi disattivare i controlli di scalabilità utilizzando gcloud CLI o YAML quando esegui il deployment di una nuova revisione.
gcloud
Puoi disattivare l'utilizzo CPU target o l'utilizzo concorrenza target eseguendo il comando gcloud beta run services update.
Per scalare solo in base alla CPU, disattiva il target di concorrenza eseguendo questo comando:
gcloud beta 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 beta run services update SERVICE --scaling-cpu-target=disabled
Sostituisci SERVICE con il nome del servizio.
YAML
Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:
gcloud run services describe SERVICE --format export > service.yaml
Per scalare solo in base alla CPU, disattiva il target di concorrenza impostando l'attributo
run.googleapis.com/scaling-concurrency-targetsudisabled:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/launch-stage: BETA name: SERVICE spec: template: metadata: annotations: run.googleapis.com/scaling-concurrency-target: disabled
Sostituisci SERVICE con il nome del servizio.
Per scalare solo in base alla concorrenza, disabilita il target CPU impostando l'attributo
run.googleapis.com/scaling-cpu-targetsudisabled:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/launch-stage: BETA name: SERVICE spec: template: metadata: annotations: run.googleapis.com/scaling-cpu-target: disabled
Sostituisci SERVICE con il nome del servizio.
Crea o aggiorna il servizio utilizzando il seguente comando:
gcloud run services replace service.yaml
Ripristina i valori predefiniti
Quando ripristini i valori di utilizzo della CPU di destinazione o della concorrenza di destinazione sui valori predefiniti, disattivi la funzionalità dei controlli di scalabilità. Puoi ripristinare i controlli di scalabilità ai valori predefiniti utilizzando gcloud CLI o YAML quando esegui il deployment di una nuova revisione.
gcloud
Ripristina i valori predefiniti di utilizzo CPU target e utilizzo concorrenza target eseguendo il comando gcloud beta run services update.
Per ripristinare l'utilizzo target della CPU al valore predefinito, esegui questo comando:
gcloud beta run services update SERVICE --scaling-cpu-target=default
Sostituisci SERVICE con il nome del servizio.
Per ripristinare l'utilizzo della concorrenza target al valore predefinito, esegui questo comando:
gcloud beta run services update SERVICE --scaling-concurrency-target=default
Sostituisci SERVICE con il nome del servizio.
Per ripristinare l'utilizzo target della CPU e la concorrenza target ai valori predefiniti, esegui questo comando:
gcloud beta run services update SERVICE --scaling-cpu-target=default \ --scaling-concurrency-target=default
Sostituisci SERVICE con il nome del servizio.
YAML
Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:
gcloud run services describe SERVICE --format export > service.yaml
Per ripristinare l'utilizzo di CPU e concorrenza ai target predefiniti, rimuovi gli attributi
run.googleapis.com/scaling-cpu-targeterun.googleapis.com/scaling-concurrency-targetdal file YAML:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/launch-stage: BETA name: SERVICE spec: template: metadata: # Remove the scaling target annotations to restore defaults ...
Sostituisci SERVICE con il nome del servizio.
Crea o aggiorna il servizio utilizzando il seguente comando:
gcloud run services replace service.yaml
Visualizza la configurazione di scalabilità
Puoi visualizzare la configurazione di scalabilità utilizzando gcloud CLI o YAML.
Console
Nella console Google Cloud , vai alla pagina Servizi di Cloud Run:
Fai clic sul servizio per aprire il riquadro Dettagli servizio.
Fai clic sulla scheda Revisioni.
Nel riquadro dei dettagli a destra, visualizza l'impostazione Metriche di scalabilità automatica elencata nella scheda Container.
gcloud
Utilizza il seguente comando:
gcloud run services describe SERVICE
Sostituisci SERVICE con il nome del servizio.
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 le prestazioni 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à:
Vai a Esplora metriche nella console Google Cloud per esaminare il grafico di monitoraggio per l'utilizzo della CPU e della concorrenza.
Cerca e seleziona la metrica
run.googleapis.com/scaling/recommended_instancese 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 dare la priorità a un altro driver o se vuoi scalare in modo più o meno aggressivo, modifica il target di utilizzo per quel driver specifico.
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 basso utilizzo
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 tuo servizio viene scalato molto prima, mantenendo un ampio buffer di capacità inattiva per gestire improvvisi picchi di traffico 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
- Per scoprire altre opzioni di scalabilità, consulta la scalabilità manuale.
- Per gestire il numero massimo di istanze dei tuoi servizi Cloud Run, consulta Impostazione di un numero massimo di istanze.
- Per gestire il numero massimo di richieste simultanee gestite da ogni istanza, consulta Impostazione della concorrenza.
- Per ottimizzare l'impostazione della contemporaneità, consulta i suggerimenti per lo sviluppo per ottimizzare la contemporaneità.
- Per specificare un'istanza inattiva da mantenere in esecuzione per ridurre al minimo la latenza o gli avvii a freddo
nelle prime richieste, consulta
Utilizzo di
min-instanceper attivare le istanze inattive.