In Knative serving, a ogni revisione viene scalato automaticamente al numero di istanze container necessario per gestire a tutte le richieste in arrivo.
Quando più istanze di container elaborano le richieste, più CPU e memoria con conseguente aumento dei costi. Quando è necessario avviare nuove istanze di container, le richieste potrebbero richiedere più tempo di essere elaborati, diminuendo le prestazioni del servizio.
Per offrirti un maggiore controllo, Knative serving fornisce un'impostazione di contemporaneità. che specifica il numero massimo di richieste che possono essere elaborate da una determinata istanza container.
Valori di contemporaneità
Per impostazione predefinita, le istanze di container Knative serving possono ricevere molte richieste contemporaneamente (fino a un massimo di 80). Tieni presente che, a confronto, le soluzioni Functions as a Service (FaaS) come Le funzioni Cloud Functions hanno una contemporaneità fissa pari a 1.
Sebbene sia necessario utilizzare il valore di contemporaneità predefinito, se necessario puoi
ridurre la contemporaneità massima. Ad esempio:
se il codice non può elaborare richieste parallele,
imposta la contemporaneità su 1
.
Il valore di contemporaneità specificato è un valore massimo e Knative serving potrebbe non inviare tante richieste a una determinata istanza di container se la CPU dell'istanza è già molto utilizzato.
Il seguente diagramma mostra come l'impostazione di contemporaneità influisce sul numero di Istanze di container necessarie per gestire le richieste simultanee in entrata:
Quando limitare la contemporaneità a una richiesta alla volta
Puoi limitare la contemporaneità in modo che venga inviata una sola richiesta alla volta ciascuna istanza di container in esecuzione. Ti consigliamo di farlo nei casi in cui:
- Ogni richiesta utilizza la maggior parte della CPU o della memoria disponibile.
- L'immagine container non è progettata per gestire più richieste a livello nello stesso momento, ad esempio, se il container si basa sullo stato globale richieste non possono condividere.
Tieni presente che una contemporaneità di 1
potrebbe influire negativamente sulla scalabilità
delle prestazioni, poiché molte istanze di container dovranno avviarsi per gestire
di richieste in entrata.
Case study
Le seguenti metriche mostrano un caso d'uso in cui 400 client effettuano 3 richieste al secondo a un servizio Knative serving impostato su una contemporaneità massima di 1. La riga superiore verde mostra le richieste nel tempo, la riga blu inferiore mostra il numero di istanze di container che sono state avviate a gestire le richieste.
Le seguenti metriche mostrano 400 clienti che effettuano 3 richieste al secondo per un Servizio Knative serving impostato su una contemporaneità massima di 80. Il verde la prima linea mostra le richieste nel tempo, la riga blu inferiore mostra il numero di container hanno iniziato a gestire le richieste. Nota che molto meno sono necessarie per gestire lo stesso volume di richieste.
Passaggi successivi
Per gestire la contemporaneità dei tuoi servizi Knative serving, vedi Impostazione della contemporaneità.
Per ottimizzare l'impostazione della contemporaneità, vedi suggerimenti di sviluppo per ottimizzare la contemporaneità.