Nella pubblicazione con Knative, ogni revisione viene scalata automaticamente in base al numero di istanze di container necessarie per gestire tutte le richieste in entrata. Quando una revisione non riceve traffico, per impostazione predefinita viene scalata fino a zero istanze di container. Tuttavia, se vuoi, puoi modificare questa impostazione predefinita per specificare un'istanza da mantenere inattiva o "tiepida" utilizzando l'impostazione Numero minimo di istanze.
Il numero di istanze pianificate è interessato 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 relativa al numero minimo di istanze di container.
In alcuni casi è consigliabile 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 servizio. Ad esempio, il tuo servizio di pubblicazione Knative 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 relativa al 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 fa lo scale out creando nuove istanze per gestire il carico del traffico in entrata. Tuttavia, quando imposti un limite massimo di istanze, in alcuni scenari le istanze non saranno sufficienti per soddisfare questo 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 completa l'elaborazione delle richieste, diventa disponibile per elaborare le richieste in coda. Se nessuna istanza diventa disponibile durante la finestra di 60 secondi, la richiesta non riesce e viene visualizzato un codice di errore 429
in Cloud Run.
Garanzie di scalabilità
Il limite massimo di istanze è un limite massimo. L'impostazione di un limite alto non significa che la revisione eseguirà lo scale out al numero specificato di istanze di container. Significa solo che il numero di istanze di container in qualsiasi momento non deve superare il limite.
Picchi di traffico
In alcuni casi, ad esempio per picchi di traffico rapidi, la pubblicazione Knative potrebbe, per un breve periodo di tempo, creare più istanze di container rispetto al valore di istanze massime specificato. Se il tuo servizio non può tollerare questo comportamento temporaneo, ti consigliamo di tenere conto di un margine di sicurezza e di impostare un valore massimo di istanze inferiore.
Deployment
Quando esegui il deployment di una nuova revisione, la gestione di Knative esegue gradualmente la migrazione del traffico dalla revisione precedente a quella nuova. Poiché sono impostati limiti massimi di istanze per ogni revisione, potresti superare temporaneamente il limite specificato durante il periodo successivo al deployment.
Istanze inattive e riduzione degli avvii a freddo
Le risorse Kubernetes vengono consumate solo quando un'istanza gestisce una richiesta, ma questo non significa che Knative Serving arresta immediatamente le istanze dopo che hanno gestito tutte le richieste. Per ridurre al minimo l'impatto degli avvii a freddo, la gestione di Knative potrebbe mantenere inattive alcune istanze. Queste istanze sono pronte per gestire le richieste in caso di un picco di traffico improvviso.
Ad esempio, quando un'istanza di container ha completato la gestione delle richieste, può rimanere inattiva per un determinato periodo di tempo nel caso in cui sia necessario gestire un'altra richiesta. Un'istanza di container inattiva potrebbe rendere persistenti risorse, ad esempio connessioni di database aperte. Tuttavia, per Cloud Run, la CPU non sarà disponibile
Per mantenere sempre disponibili le istanze inattive, utilizza l'impostazione min-instance
.
Passaggi successivi
- Per gestire il numero massimo di istanze dei servizi di pubblicazione Knative, consulta Impostare un numero massimo di istanze di container.
- Per gestire il numero massimo di richieste simultanee gestite da ogni istanza di container, consulta Impostare la contemporaneità.
- Per ottimizzare l'impostazione della contemporaneità, consulta i suggerimenti per lo sviluppo per l'ottimizzazione della contemporaneità.
- Per specificare un'istanza inattiva da mantenere in esecuzione al fine di ridurre al minimo la latenza o gli avvii a freddo nelle prime richieste, consulta Utilizzare
min-instance
per abilitare le istanze inattive.