In Knative serving, ogni revision viene scalata automaticamente in base al numero di istanze container necessarie per gestire tutte le richieste in entrata.
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 contemporaneamente da una determinata istanza di 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 in che modo l'impostazione della concorrenza influisce sul numero di istanze container necessarie per gestire le richieste in parallelo in entrata:
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 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 concorrenza di 1
potrebbe influire negativamente sul rendimento della scalabilità, perché molte istanze 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 pubblicazione Knative 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 container avviate per gestire le richieste.
Le seguenti metriche mostrano 400 client che inviano 3 richieste al secondo a un servizio di pubblicazione Knative impostato su una concorrenza massima di 80. La linea superiore verde mostra le richieste nel tempo, mentre la linea blu inferiore mostra il numero di istanze container avviate per gestire le richieste. Tieni presente che sono necessarie molte meno istanze per gestire lo stesso volume di richieste.
Passaggi successivi
Per gestire la concorrenza dei servizi di pubblicazione Knative, consulta Impostazione della concorrenza.
Per ottimizzare l'impostazione della contemporaneità, consulta i suggerimenti per gli sviluppatori per l'ottimizzazione della contemporaneità.