Contemporaneità

In Knative serving, ogni revisione viene scalata automaticamente al numero di istanze container necessarie per gestire tutte le richieste in entrata.

Quando più istanze container elaborano le richieste, vengono utilizzate più CPU e memoria, con conseguenti costi più elevati. Quando è necessario avviare nuove istanze di container, l'elaborazione delle richieste potrebbe richiedere più tempo, riducendo le prestazioni del servizio.

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

Valori di concorrenza

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

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

Il valore di concorrenza specificato è un valore massimo e Knative Serving potrebbe non inviare un numero elevato di 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 concorrenza influisce sul numero di istanze container necessarie per gestire le richieste simultanee in entrata:

Diagramma di concorrenza

Quando limitare la concorrenza a una richiesta alla volta

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

  • Ogni richiesta utilizza la maggior parte della CPU o della memoria disponibile.
  • L'immagine del 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 concorrenza di 1 influirà probabilmente in modo negativo sul rendimento della scalabilità, perché molte istanze container dovranno avviarsi per gestire un picco 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 concorrenza massima di 1. La linea verde superiore mostra le richieste nel tempo, mentre la linea blu inferiore mostra il numero di istanze di container avviate per gestire le richieste.

Contemporaneità impostata su uno

Le seguenti metriche mostrano 400 client che effettuano 3 richieste al secondo a un servizio Knative che è impostato su una concorrenza massima di 80. La linea superiore verde mostra le richieste nel tempo, mentre la linea inferiore blu mostra il numero di istanze di container avviate per 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 concorrenza dei servizi Knative Serving, consulta Impostazione della concorrenza.

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