In Knative serving, ogni revisione viene scalata automaticamente al numero di istanze container necessarie per gestire tutte le richieste in entrata. Quando una revisione non riceve traffico, per impostazione predefinita viene scalata a zero istanze 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 di contemporaneità
- L'impostazione del numero massimo di istanze di container
- L'impostazione del numero minimo di istanze di container
In alcuni casi, potresti voler limitare il numero totale di istanze di container che possono essere avviate, per motivi di controllo dei costi o per una migliore compatibilità con altre risorse utilizzate dal tuo servizio. Ad esempio, il tuo servizio Knative Serving potrebbe interagire con un database in grado di gestire solo un determinato numero di connessioni aperte simultanee.
Informazioni sul numero massimo di istanze di container
Puoi utilizzare l'impostazione del numero massimo di istanze di container per limitare il numero totale di istanze che possono essere avviate in parallelo, come documentato in Impostare un numero massimo di istanze di container.
Superamento del numero massimo di istanze
In circostanze normali, la revisione viene scalata orizzontalmente creando nuove istanze
per gestire il carico di traffico in entrata. Tuttavia, quando imposti un limite massimo di istanze, in alcuni
scenari non ci saranno istanze sufficienti per soddisfare il carico di traffico. In
questo caso, le richieste in entrata vengono messe in coda per un massimo di 60 secondi. Durante questo periodo di 60 secondi, se un'istanza termina l'elaborazione delle richieste, diventa disponibile per elaborare le richieste in coda. Se non diventano disponibili istanze durante la finestra di 60 secondi, la richiesta non va a buon fine e viene visualizzato un codice di errore 429
su Cloud Run.
Garanzie di scalabilità
Il limite massimo di istanze è un limite superiore. L'impostazione di un limite elevato non significa che la revisione verrà scalata al numero specificato di istanze 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, ad esempio in caso di picchi di traffico rapidi, Knative Serving potrebbe, per un breve periodo di tempo, creare un numero di istanze container leggermente superiore al valore massimo di istanze specificato. Se il tuo servizio non può tollerare questo comportamento temporaneo, ti consigliamo di tenere conto di un margine di sicurezza e impostare un valore massimo di istanze inferiore.
Deployment
Quando esegui il deployment di una nuova revisione, Knative Serving esegue la migrazione graduale del traffico dalla revisione precedente a quella nuova. Poiché i limiti massimi delle istanze sono impostati per ogni revisione, potresti superare temporaneamente il limite specificato nel periodo successivo al deployment.
Istanze inattive e riduzione al minimo degli avvii a freddo
Le risorse Kubernetes vengono utilizzate solo quando un'istanza gestisce una richiesta, ma ciò non significa che Knative Serving arresti immediatamente le istanze una volta gestite 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 picco improvviso di traffico.
Ad esempio, quando un'istanza container ha terminato di gestire le richieste, potrebbe rimanere inattiva per un periodo di tempo nel caso in cui debba essere gestita un'altra richiesta. Un'istanza di container inattiva può conservare risorse, ad esempio connessioni di database aperte. Tuttavia, per Cloud Run, la CPU non sarà disponibile
Per mantenere le istanze inattive disponibili in modo permanente, utilizza l'impostazione
min-instance
.
Passaggi successivi
- Per gestire il numero massimo di istanze dei tuoi servizi Knative, consulta Impostazione di un numero massimo di istanze container.
- Per gestire il numero massimo di richieste simultanee gestite da ciascuna istanza container, consulta Impostazione della concorrenza.
- Per ottimizzare l'impostazione della contemporaneità, consulta i suggerimenti per lo sviluppo per la regolazione della 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-instance
per attivare le istanze inattive.