In Cloud Run, a ogni revisione viene scalato automaticamente al numero di istanze necessario per gestire tutte le richieste in entrata, gli eventi o l'utilizzo della CPU.
Quando una revisione non riceve traffico, per impostazione predefinita viene scalata fino a zero
di Compute Engine. Tuttavia, se vuoi, puoi modificare questa impostazione predefinita in
specificare un'istanza da mantenere inattiva o "calda" utilizzando
numero minimo di istanze. Se
utilizzando la CPU al di fuori delle richieste, devi impostare un numero minimo di istanze uguale a
1
.
Oltre alla frequenza di richieste in entrata, eventi o utilizzo della CPU, di istanze pianificate è interessato da:
- L'utilizzo medio della CPU delle istanze esistenti in una finestra di un minuto, con targeting per mantenere le istanze pianificate su un utilizzo della CPU del 60%.
- La contemporaneità delle richieste attuale, confrontata con la contemporaneità massima nell'arco di un minuto.
- L'impostazione relativa al numero massimo di istanze
- L'impostazione relativa al numero minimo di istanze
Il gestore della scalabilità automatica di Cloud Run valuta questi aspetti ogni 5 secondi.
CPU sempre allocata e scalabilità automatica
Se configuri il servizio Cloud Run per avere CPU sempre allocata, il comportamento della scalabilità verso e da zero.
Scalabilità allocata della CPU sempre da zero. La scalabilità da zero può essere attivata solo da una richiesta, quindi un servizio che non elabora le richieste non può scalare zero. Per questi carichi di lavoro, puoi impostare il numero minimo di istanze > 0 o includi una "richiesta di sveglia" per riavviare l'elaborazione dopo la scalabilità a zero.
La CPU è sempre allocata con scalabilità fino a zero. dato che nessuna istanza è mai allo 0% la CPU, esaminando tutto l'utilizzo della CPU, non otterrebbe mai la scalabilità a zero. Ciò significa la decisione di scalare da uno a zero può essere presa solo controllando se se l'istanza sta elaborando una richiesta.
Informazioni sul numero massimo di istanze
In alcuni casi è consigliabile limitare il numero totale di istanze che possono essere avviati, per motivi di controllo dei costi o per una migliore compatibilità ad altre risorse utilizzate dal tuo servizio. Ad esempio, il tuo Cloud Run potrebbe interagire con un database che può gestire solo un certo numero e connessioni aperte simultanee.
Puoi utilizzare l'impostazione del numero massimo di istanze per limitare il numero totale di di istanze che possono essere avviate in parallelo, come documentato Impostazione di un numero massimo di istanze.
Superamento del numero massimo di istanze
In circostanze normali, la revisione fa lo scale out creando nuove istanze per gestire il carico del traffico in entrata. Ma quando imposti un limite massimo di istanze, in alcune In alcuni casi, le istanze non saranno sufficienti per soddisfare quel carico di traffico. Nella in questo caso, le richieste in entrata vengono messe in coda (in attesa) nel seguente modo:
- Se vengono avviate nuove istanze, ad esempio durante uno scale out, le richieste almeno il tempo di avvio medio delle istanze di container di questo servizio. Sono inclusi i casi in cui la richiesta avvia uno scale out, ad esempio durante la scalabilità partendo da zero.
- Se il tempo di avvio è inferiore a 10 secondi, le richieste scadranno per un massimo di 10 secondi.
- Se non sono presenti istanze in fase di avvio e la richiesta non avviano uno scale out, le richieste pendono per un massimo di per 10 secondi.
Durante questo intervallo di tempo, se un'istanza termina l'elaborazione delle richieste,
disponibili per elaborare le richieste in attesa in coda.
Se nessuna istanza è disponibile durante la finestra temporale, la richiesta non va a buon fine e
Codice di errore 429
.
Garanzie di scalabilità
Il limite massimo di istanze è un limite massimo per revisione e significa che di istanze per questa revisione non deve superare il limite massimo.
In circostanze normali, Cloud Run è in grado di fare lo scale out fino al massimo le istanze limitati molto rapidamente per gestire tutte le richieste o gli eventi in entrata. Tuttavia, Impostare un limite alto non significa che sarà possibile fare lo scale out della revisione il numero di istanze specificato in un dato momento. In casi eccezionali circostanze, Cloud Run può limitare la scalabilità per garantire un servizio di qualità per tutti i clienti.
Superamento del numero massimo di istanze a causa di picchi di traffico
In alcuni casi, ad esempio rapidi picchi di traffico o manutenzione del sistema, Per un breve periodo di tempo, Cloud Run potrebbe creare rispetto a quelle specificate nell'impostazione del numero massimo di istanze. Le nuove istanze possono essere iniziato superando l'impostazione del numero massimo di istanze per sostituire le istanze esistenti e fornire un periodo di tolleranza per il completamento dell'elaborazione delle richieste in corso.
Il limite massimo di istanze può essere superato in condizioni di funzionamento normale alcune volte settimana. Il periodo di tolleranza dura in genere fino a 15 minuti o fino a il valore specificato nell'impostazione di timeout della richiesta. Queste istanze aggiuntive vengono eliminate entro 15 minuti dal loro stato di inattività.
Se sono necessarie molte sostituzioni, gli aggiornamenti in genere vengono distribuiti nell'arco di molti minuti o ore, ma ogni sostituzione ha un'istanza in eccesso solo per il periodo di tolleranza. Le istanze che superano il valore massimo sono normalmente inferiori al doppio del valore ha configurato il limite massimo di istanze, ma può essere molto maggiore in caso di picchi di traffico elevati e improvvisi.
I test di carico subiscono più istanze che superano l'impostazione del numero massimo di istanze perché il sistema potrebbe cambiare la posizione in cui vengono pubblicati i picchi di traffico, in modo da preservare la capacità per i carichi di lavoro esistenti. con pattern di carico sostenuto.
Se il tuo servizio non tollera questo comportamento temporaneo, ti consigliamo di per calcolare un margine di sicurezza e impostare un valore massimo più basso per le istanze.
Suddivisione del traffico
Poiché il limite massimo di istanze è un limite per ogni revisione, se il servizio suddivide il traffico tra più revisioni, il numero totale di istanze per il servizio può superare il numero massimo di istanze per revisione. Puoi vedere questo aspetto nella sezione Conteggio istanze metriche di valutazione.
Deployment
Quando esegui il deployment di una nuova revisione per gestire il 100% del traffico, Cloud Run avvia un numero sufficiente di istanze della nuova revisione prima di indirizzare e il traffico verso di essi. In questo modo si riduce l'impatto dei nuovi deployment delle revisioni su richiesta e la latenza minima, in particolare quando si gestiscono livelli elevati di traffico. Poiché il limite massimo di istanze è un limite per ogni revisione, durante un deployment, il numero totale di istanze per il servizio può superare il limite massimo istanze per revisione. Puoi vedere questo aspetto nella sezione Conteggio istanze metriche di valutazione.
Istanze inattive e riduzione al minimo degli avvii a freddo
Cloud Run non arresta immediatamente le istanze dopo che sono state e ha gestito tutte le richieste. Per ridurre al minimo l'impatto degli avvii a freddo, Cloud Run potrebbe mantenere alcune istanze inattivo per un massimo di 15 minuti. Queste istanze sono pronte a gestire le richieste in caso di un picco di traffico improvviso.
Ad esempio, quando un'istanza ha terminato di gestire le richieste, rimangono inattive per un certo periodo di tempo nel caso in cui sia necessario un'altra richiesta gestire. Un'istanza inattiva potrebbe rendere persistenti le risorse, ad esempio aprire e connessioni ai database. Tieni presente che la CPU viene allocata solo durante l'elaborazione delle richieste a meno che non configuri esplicitamente il servizio CPU sempre allocata.
Per mantenere le istanze inattive permanentemente disponibili, utilizza
min-instance
. Tieni presente che l'utilizzo
questa funzionalità costituirà dei costi anche quando il servizio non è
che pubblica attivamente le richieste.
Scalabilità automatica e richieste in attesa
- Se vengono avviate nuove istanze, ad esempio durante uno scale out, le richieste almeno il tempo di avvio medio delle istanze di container di questo servizio. Sono inclusi i casi in cui la richiesta avvia uno scale out, ad esempio durante la scalabilità partendo da zero.
- Se il tempo di avvio è inferiore a 10 secondi, le richieste scadranno per un massimo di 10 secondi.
- Se non sono presenti istanze in fase di avvio e la richiesta non avviano uno scale out, le richieste pendono per un massimo di per 10 secondi.
Impatto della scalabilità automatica sui servizi di supporto
Con l'aumento automatico del numero di istanze, Il servizio Cloud Run potrebbe riscontrare limiti con i suoi servizi di supporto. Ad esempio, Cloud SQL prevede un limite di quota API. Assicurati che questi servizi di supporto abbiano una quota sufficiente e possano gestire le connessioni da tutte le istanze del tuo servizio Cloud Run. Valuta la possibilità di impostare un numero massimo di istanze per evitare di sovraccaricare i servizi di backup.
Scalabilità automatica e Pub/Sub
Google consiglia di utilizzare le sottoscrizioni push per consumare i messaggi provenienti da un un argomento Pub/Sub in Cloud Run. I messaggi inviati tramite push vengono ricevuti, richieste HTTP da parte del container, attivando così lo stesso comportamento di scalabilità automatica.
Passaggi successivi
- Per gestire il numero massimo di istanze dei 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 contemporaneità.
- Per ottimizzare l'impostazione della contemporaneità, vedi suggerimenti di sviluppo per ottimizzare la contemporaneità.
- Specificare un'istanza inattiva da mantenere in esecuzione per ridurre al minimo la latenza o gli avvii a freddo.
sulle prime richieste, vedi
Utilizzo di
min-instance
per abilitare le istanze inattive.