Per impostazione predefinita, i servizi Cloud Run hanno un massimo di 100 istanze. Puoi aumentare questo numero fino al valore massimo consentito per la tua regione. Il limite massimo per ogni regione è influenzato anche dalla configurazione della CPU e della memoria per il servizio Cloud Run. Nello specifico, il numero massimo di istanze disponibili per il servizio è il minimo di ciascuno dei seguenti valori:
- la base di riferimento della quota regionale divisa per il multiplo richiesto di 1 CPU
- base di riferimento della quota regionale divisa per il multiplo richiesto di memoria da 2 GB
Ad esempio, una quota di base di 1000 istanze con 4 GB di memoria o 2 CPU avrà un limite effettivo di 500.
Puoi visualizzare la quota di riferimento per regione per la tua regione nella pagina delle quote della console.
Come aumentare la quota regionale di riferimento
Se hai bisogno di un numero massimo di istanze maggiore per la regione in cui è eseguito il deployment del servizio Cloud Run, puoi richiedere un aumento della quota.
Best practice per l'impostazione del numero massimo di istanze
La sezione seguente descrive le best practice per la configurazione dei limiti di istanze massime per i servizi.
Valore massimo ottimale dell'istanza per i servizi basati su eventi
I servizi basati su eventi, come le funzioni, possono registrare picchi di traffico sporadici in base agli eventi in entrata. Per determinare un valore massimo ottimale per le istanze di questi servizi, devi prendere in considerazione fattori quali il tempo di chiamata del servizio, la chiamata media prevista, la frequenza di chiamata di picco e la tolleranza agli errori per i fallimenti di chiamata.
Una buona regola empirica è iniziare con un valore di istanze massime pari a 3, quindi monitorare gli errori di chiamata e modificare il valore di istanze massime verso l'alto, se necessario.
Gestire le richieste quando tutte le istanze sono occupate
In circostanze normali, il servizio viene scalato creando nuove istanze per gestire il carico del traffico in entrata. Tuttavia, se hai impostato un limite di istanze massime, potresti riscontrare uno scenario in cui le istanze non sono sufficienti per soddisfare il carico del traffico in entrata.
In questo scenario, Cloud Run tenta di soddisfare una nuova richiesta in entrata per un massimo di 30 secondi:
- Se un'istanza termina l'elaborazione della richiesta durante questo periodo di tempo, potrebbe iniziare a elaborare la nuova richiesta in entrata.
- Se non viene creata alcuna istanza, la richiesta non andrà a buon fine.
Cloud Run salva automaticamente gli eventi destinati ai servizi basati su eventi fino a quando non è disponibile la capacità.
Limiti di istanze massime che superano la capacità di scalabilità di Cloud Run
Quando specifichi un limite massimo di istanze, specifichi un limite superiore. L'impostazione di un limite elevato non significa che il servizio verrà scalato fino al numero specificato di istanze. Significa solo che il numero di istanze che coesistono in un determinato momento non deve superare il limite.
Inoltre, l'impostazione di un limite massimo di istanze potrebbe influire sulle strategie di scalabilità impiegate da Cloud Run per soddisfare la domanda di traffico. In generale, Cloud Run darà la priorità al rispetto del limite specificato anziché eseguire lo scaling up e potenzialmente superarlo.
Gestire i picchi di traffico
In alcuni casi, ad esempio in caso di picchi di traffico rapidi, Cloud Run potrebbe, per un breve periodo di tempo, creare più istanze rispetto al limite di istanze massime specificato. Se il tuo servizio non può tollerare questo comportamento temporaneo, ti consigliamo di prendere in considerazione un margine di sicurezza e di impostare un valore di istanze massime inferiore a quello tollerato dal servizio.
Deployment
Quando esegui il deployment di una nuova revisione, Cloud Run esegue la migrazione del traffico dalla revisione precedente a quella nuova. Poiché i limiti massimi delle istanze sono impostati in modo indipendente per ogni revisione, potresti superare temporaneamente il limite specificato durante il periodo successivo al deployment.
Ad esempio, un servizio potrebbe avere un limite massimo di istanze pari a 5. In circostanze normali, il servizio esegue la scalabilità fino a 5 istanze man mano che gestisce le richieste. Quando esegui il deployment di una nuova revisione, questa ha un proprio limite di 5 istanze massime.
Le richieste già gestite dalla revisione precedente non vengono interrotte quando viene implementata una nuova revisione. Al contrario, queste richieste continuano a essere elaborate. Le nuove richieste in entrata verranno gestite dalla revisione appena implementata del servizio.
Pertanto, il servizio nell'esempio precedente potrebbe avere fino a 10 istanze totali (5 per ogni revisione) durante il periodo successivo al deployment della nuova revisione. Il tempo necessario per l'interruzione delle istanze della revisione precedente dipende dal tempo necessario per completare la gestione di eventuali richieste attive. Questo è un fattore aggiuntivo da prendere in considerazione quando si seleziona un limite di istanze massime appropriato.