Contemporaneità
Le funzioni Cloud Run supportano la gestione di più richieste in parallelo su una singola istanza di funzione. Ciò può essere utile per evitare avvii a freddo un'istanza già riscaldata può elaborare più richieste contemporaneamente, riducendo così la latenza complessiva.
Quando la concorrenza è attivata, le funzioni Cloud Run non forniscono isolamento tra le richieste concorrenti elaborate dalla stessa istanza di funzione. In questi casi, devi assicurarti che il codice della funzione sia sicuro da eseguire contemporaneamente. Tieni presente le seguenti considerazioni su determinati runtime di lingua:
Node.js è intrinsecamente single-threaded. Per sfruttare la contemporaneità, utilizza Lo stile del codice asincrono di JavaScript, che è idiomatico in Node.js. Consulta Controllo asincrono del flusso nella documentazione ufficiale di Node.js per maggiori dettagli.
Ti consigliamo di iniziare con una concorrenza inferiore, ad esempio 8, per poi aumentarla. Iniziare con una concorrenza troppo elevata potrebbe comportare un comportamento imprevisto a causa di vincoli di risorse (ad esempio memoria o CPU).
Per Python 3.8 e versioni successive, supporto di un'elevata contemporaneità per istanza di funzione richiede un numero sufficiente di thread per gestire la contemporaneità. Ti consigliamo di impostare una variabile di ambiente runtime in modo che il valore di thread sia uguale al valore di concorrenza, ad esempio:
THREADS=8
.
Per impostazione predefinita, le istanze di funzione gestiscono una sola richiesta alla volta. Puoi modificare questo comportamento per funzione impostando un valore di concorrenza come mostrato nella sezione successiva.
Impostare un valore di concorrenza
Il valore di concorrenza predefinito è 1. Puoi impostare il valore di contemporaneità di una funzione per sostituire il valore predefinito. Il valore di contemporaneità rappresenta il valore massimo di richieste in parallelo che una singola istanza della funzione può gestire.
Un valore di concorrenza maggiore di 1 fa sì che il codice della funzione venga eseguito contemporaneamente su una singola istanza. Il valore massimo di concorrenza è 1000 (anche se consigliamo di iniziare con un valore inferiore e di aumentare gradualmente). L'impostazione di un valore di concorrenza maggiore di 1 richiede che una funzione abbia una o più vCPU. Consulta Limiti di memoria per i valori predefiniti di memoria e vCPU.
Puoi impostare la contemporaneità per una funzione in uno dei seguenti modi:
- Funzioni di Cloud Run: gcloud CLI o la console Google Cloud.
- Cloud Run: gcloud CLI o Google Cloud Console.
Impostare la concorrenza utilizzando le funzioni Cloud Run
gcloud
Puoi impostare un valore di contemporaneità utilizzando gcloud CLI eseguendo il deployment di un
con il
--concurrency
Segnala:
gcloud functions deploy YOUR_FUNCTION_NAME \ --gen2 \ --concurrency=CONCURRENCY_VALUE \ FLAGS...
Dove CONCURRENCY_VALUE è il numero massimo di simultanei consentite per ogni istanza di container. Lascia contemporaneità non specificata su ricevono il valore predefinito del server.
Console
Per impostare un valore di contemporaneità utilizzando la console Google Cloud:
- Vai alla pagina Panoramica delle funzioni Cloud Run nella console Google Cloud.
- Fai clic sul nome della funzione per andare alla pagina Dettagli funzione.
- Fai clic su Modifica.
- Espandi la sezione Runtime, build... alla fine della pagina e fai clic su la scheda Runtime.
- In Concorrenza, inserisci un valore di concorrenza nel campo Numero massimo di richieste in parallelo per istanza.
- Fai clic su Avanti.
Fai clic su Esegui il deployment.
Questo passaggio è necessario affinché le modifiche abbiano effetto.
Imposta contemporaneità utilizzando Cloud Run
gcloud
Per impostare un valore di concorrenza utilizzando l'interfaccia a riga di comando gcloud, aggiorna il servizio Cloud Run sottostante e specifica il flag --concurrency
:
gcloud run services update YOUR_FUNCTION_NAME --concurrency CONCURRENCY_VALUE
Dove CONCURRENCY_VALUE è il numero massimo di simultanei consentite per ogni istanza di container. Lascia contemporaneità non specificata su ricevono il valore predefinito del server.
Console
Per impostare un valore di concorrenza utilizzando la console Google Cloud:
- Vai alla pagina Panoramica delle funzioni Cloud Run nella console Google Cloud.
- Fai clic sul nome della funzione per andare alla pagina Dettagli funzione.
- Nel riquadro Basato su Cloud Run, fai clic sul nome della funzione per accedere alla pagina Dettagli servizio del servizio Cloud Run sottostante.
- Fai clic su Modifica e il deployment di una nuova revisione nella parte superiore della pagina.
- Apri la scheda Contenitore.
Inserisci un valore di concorrenza nel campo Numero massimo di richieste in parallelo per istanza.
Se il valore fornito per Numero massimo di richieste in parallelo per istanza è maggiore di 1, scorri la pagina verso il basso e apri la sezione Contenitori . Assicurati che il campo CPU contenga un valore pari o superiore a 1.
Fai clic su Esegui il deployment.
Questo passaggio è necessario affinché le modifiche abbiano effetto.
Le funzioni di Cloud Run si basano sul supporto della contemporaneità fornito da in Cloud Run. Per saperne di più, vedi Numero massimo di richieste in parallelo per istanza (servizi) nella documentazione di Cloud Run.