In Knative serving, ogni revisione viene scalata automaticamente in base al numero di istanze container necessarie per gestire tutte le richieste in entrata. Quando una revisione non riceve traffico, per impostazione predefinita viene scalato a zero istanze di container. Tuttavia, se vuoi, puoi modificare questa impostazione predefinita per specificare un'istanza da mantenere inattiva o "in uso" utilizzando l'impostazione Istanze minime.
Il numero di istanze pianificate è influenzato da:
- La quantità di CPU necessaria per elaborare una richiesta
- L'impostazione della contemporaneità
- L'impostazione relativa al numero massimo di istanze di container
- L'impostazione del numero minimo di istanze di container
In alcuni casi è consigliabile limitare il numero totale di istanze di container che possono essere avviati, per motivi di controllo dei costi o per una migliore compatibilità ad altre risorse utilizzate dal tuo servizio. Ad esempio, la query Knative serving potrebbe interagire con un database che può gestire solo un certo numero e connessioni aperte simultanee.
Informazioni sul numero massimo di istanze di container
Puoi utilizzare l'impostazione Numero massimo di istanze di container per limitare il numero totale di di istanze che possono essere avviate in parallelo, come documentato Impostazione di un numero massimo di istanze di container.
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 mettono in coda fino a 60 secondi. Durante questi 60 secondi
finestra, se un'istanza termina l'elaborazione delle richieste, quest'ultima diventa disponibile
elaborare le richieste in coda. Se non vengono rese disponibili istanze durante il periodo di 60 secondi, la richiesta non va a buon fine con un codice di errore 429
su Cloud Run.
Garanzie di scalabilità
Il limite massimo di istanze è un limite massimo. Impostare un limite alto non significa che la revisione farà lo scale out del numero specificato di istanze di container. Significa solo che il numero di istanze di container in un determinato momento non deve superare il limite.
Picchi di traffico
In alcuni casi, come i rapidi picchi di traffico, Knative serving potrebbe, per brevi di tempo, crea un numero leggermente più elevato di istanze di container rispetto a quelle specificate il valore massimo di istanze. Se il tuo servizio non può tollerare questo comportamento temporaneo, ti consigliamo di prendere in considerazione un margine di sicurezza e impostare un valore di istanze massime inferiore.
Deployment
Quando esegui il deployment di una nuova revisione, il servizio Knative esegue gradualmente la migrazione del traffico dalla vecchia revisione alla nuova. Poiché sono stati impostati limiti massimi di istanze ogni revisione, potresti superare temporaneamente il limite specificato durante il periodo dopo il deployment.
Istanze inattive e riduzione al minimo degli avvii a freddo
Le risorse Kubernetes vengono utilizzate solo quando un'istanza gestisce una richiesta, ma questo non significa che Knative serving si arresti immediatamente. di Compute Engine dopo che hanno gestito tutte le richieste. Per ridurre al minimo l'impatto degli avvii a freddo, Knative serving potrebbe mantenere alcune istanze inattive. Queste istanze sono pronte a gestire le richieste in caso di un picco improvviso di traffico.
Ad esempio, quando un'istanza di container 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 di container inattiva può rendere persistenti le risorse, ad esempio e connessioni ai database. Tuttavia, per Cloud Run, La CPU non sarà disponibile
Per mantenere le istanze inattive disponibili permanentemente, utilizza l'impostazione
min-instance
.
Passaggi successivi
- Per gestire il numero massimo di istanze dei tuoi servizi Knative serving, consulta Impostazione di un numero massimo di istanze di container.
- Per gestire il numero massimo di richieste simultanee gestite da ciascuna istanza di container, 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.