Contemporaneità

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

Quando più istanze di container elaborano le richieste, vengono utilizzate più CPU e memoria, con costi più elevati. Quando è necessario avviare nuove istanze di container, l'elaborazione delle richieste potrebbe richiedere più tempo, con un conseguente peggioramento delle 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 contemporaneamente da una determinata istanza di 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, in confronto, le soluzioni Functions as a Service (FaaS) come Cloud Functions hanno una contemporaneità fissa pari a 1.

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

Il valore di contemporaneità specificato è un massimo e Knative serving potrebbe non inviare 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 contemporaneità a una richiesta alla volta

Puoi limitare la contemporaneità in modo da inviare una sola richiesta alla volta a ogni 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 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à, perché molte istanze di container dovranno avviarsi per gestire un picco nelle 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 prima riga verde mostra le richieste nel tempo, mentre la riga blu inferiore mostra 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 Knative serving impostato su una contemporaneità massima di 80. La prima riga verde mostra le richieste nel tempo, mentre la riga blu inferiore mostra il numero di istanze di container che hanno iniziato a gestire le richieste. Come vedi, sono necessarie molte meno istanze per gestire lo stesso volume di richieste.

Contemporaneità impostata su 80

Passaggi successivi

Per gestire la contemporaneità dei servizi Knative serving, consulta Impostazione della contemporaneità.

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