Contemporaneità

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 più istanze di container elaborano richieste, vengono utilizzate più CPU e memoria, con un conseguente costo maggiore. Quando è necessario avviare nuove istanze di container, l'elaborazione delle richieste potrebbe richiedere più tempo, con una conseguente diminuzione delle prestazioni del servizio.

Per offrirti un maggiore controllo, la pubblicazione di Knative fornisce un'impostazione di contemporaneità che specifica il numero massimo di richieste che possono essere elaborate contemporaneamente da una determinata istanza di container.

Valori di contemporaneità

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

Anche se devi utilizzare il valore di contemporaneità predefinito, se necessario puoi ridurre la contemporaneità massima. Ad esempio, se il tuo codice non può elaborare richieste parallele, imposta la contemporaneità su 1.

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

Il seguente diagramma mostra in che modo l'impostazione di contemporaneità influisce sul numero di istanze di container necessarie per gestire le richieste in entrata in parallelo:

Diagramma di contemporaneità

Quando limitare la contemporaneità a una richiesta alla volta

Puoi limitare la contemporaneità in modo che venga inviata una sola richiesta alla volta a ogni istanza di container in esecuzione. Ti consigliamo di farlo nei seguenti casi:

  • Ogni richiesta utilizza la maggior parte della CPU o della memoria disponibile.
  • L'immagine container non è progettata per gestire più richieste contemporaneamente, ad esempio se il container si basa su uno stato globale che due richieste non possono condividere.

Tieni presente che una contemporaneità di 1 potrebbe influire negativamente sulle prestazioni di scalabilità, poiché molte istanze di container dovranno essere avviate per gestire un picco di richieste in entrata.

Case study

Le seguenti metriche mostrano un caso d'uso in cui 400 client inviano 3 richieste al secondo a un servizio di gestione di Knative impostato su una contemporaneità massima di 1. La riga superiore verde mostra le richieste nel tempo, la riga blu inferiore indica il numero di istanze di container che hanno iniziato a gestire le richieste.

Contemporaneità impostata su uno

Le seguenti metriche mostrano 400 client che effettuano 3 richieste al secondo a un servizio di gestione Knative impostato su un massimo di 80 contemporaneità. La prima riga verde mostra le richieste nel tempo, la riga blu in basso il numero di istanze di container che hanno iniziato a gestire le richieste. Nota 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 di gestione di Knative, consulta Impostare la contemporaneità.

Per ottimizzare l'impostazione della contemporaneità, consulta i suggerimenti per lo sviluppo per l'ottimizzazione della contemporaneità.