Contemporaneità

In Knative serving, 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, vengono utilizzate più CPU e memoria, con un conseguente aumento dei costi. Quando è necessario avviare nuove istanze di container, l'elaborazione delle richieste potrebbe richiedere più tempo, diminuendo il rendimento 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 concorrenza

Per impostazione predefinita, le istanze di container di Knative possono ricevere molte richieste contemporaneamente (fino a un massimo di 80). Tieni presente che, in confronto, le soluzioni Functions-as-a-Service (FaaS) come le funzioni Cloud Run hanno una concorrenza fissa pari a 1.

Sebbene sia consigliabile utilizzare il valore di concorrenza predefinito, se necessario puoi abbassare la concorrenza massima. Ad esempio, se il codice non può elaborare richieste parallele, imposta la concorrenza su 1.

Il valore di concorrenza specificato è un valore massimo e il servizio Knative potrebbe non inviare così tante richieste a una determinata istanza di container se la CPU dell'istanza è già molto utilizzata.

Il seguente diagramma mostra come l'impostazione di contemporaneità influisce sul numero di Istanze di container necessarie per gestire le richieste simultanee in entrata:

Diagramma di contemporaneità

Quando limitare la concorrenza 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 del contenitore non è progettata per gestire più richieste contemporaneamente, ad esempio se il contenitore si basa su uno stato globale che due 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 linea verde superiore mostra le richieste nel tempo, mentre la linea blu inferiore mostra il numero di istanze container avviate per gestire le richieste.

Contemporaneità impostata su uno

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. Tieni presente che sono necessarie molte meno istanze per gestire lo stesso volume di richieste.

Contemporaneità impostata su 80

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à.