Contemporaneità

Cloud Functions (2nd gen) supporta la gestione di più richieste in parallelo su un'unica istanza di funzione. Questo può essere utile per evitare gli avvii a freddo poiché un'istanza già riscaldata può elaborare più richieste contemporaneamente, riducendo così la latenza complessiva.

Quando è abilitata la contemporaneità, Cloud Functions (2nd gen) non fornisce l'isolamento tra le richieste in parallelo elaborate dalla stessa istanza di funzione. In questi casi, devi assicurarti che il codice della funzione possa essere eseguito in sicurezza in contemporanea. Tieni presente le seguenti considerazioni relative a determinati runtime dei linguaggi:

  • Node.js è di per sé a thread singolo. Per sfruttare la contemporaneità, usa lo stile di codice asincrono di JavaScript, idiomatico in Node.js. Per i dettagli, consulta Controllo del flusso asincrono nella documentazione ufficiale di Node.js.

  • Ti consigliamo di iniziare con una contemporaneità più bassa, ad esempio 8, e di aumentarla. Iniziare con una contemporaneità troppo elevata potrebbe portare a comportamenti indesiderati a causa di vincoli delle risorse (come memoria o CPU).

Per impostazione predefinita, le istanze di funzione gestiscono una sola richiesta alla volta. Puoi modificare questo comportamento per ogni funzione impostando un valore di contemporaneità, come mostrato nella sezione successiva.

Imposta un valore di contemporaneità

Il valore predefinito di contemporaneità è 1. Puoi impostare il valore di contemporaneità di una funzione per sostituire il valore predefinito. Il valore di contemporaneità rappresenta il numero massimo di richieste in parallelo che una singola istanza della funzione può gestire.

Un valore di contemporaneità maggiore di 1 determina l'esecuzione contemporanea del codice della funzione su una singola istanza. Il valore massimo di contemporaneità è 1000 (anche se consigliamo di iniziare con un valore inferiore e di avanzare gradualmente). L'impostazione di un valore di contemporaneità maggiore di 1 richiede che una funzione abbia 1 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:

Imposta la contemporaneità utilizzando Cloud Functions

gcloud

Puoi impostare un valore di contemporaneità utilizzando gcloud CLI eseguendo il deployment di una funzione di 2ª generazione con il flag --concurrency:

gcloud functions deploy YOUR_FUNCTION_NAME \
--gen2 \
--concurrency=CONCURRENCY_VALUE \
FLAGS...

Dove CONCURRENCY_VALUE è il numero massimo di richieste in parallelo consentite per istanza container. Non specificare la contemporaneità per ricevere il valore predefinito del server.

Console

Per impostare un valore di contemporaneità utilizzando la console Google Cloud:

  1. Vai alla pagina Panoramica di Cloud Functions nella console Google Cloud.
  2. Fai clic sul nome della funzione per andare alla relativa pagina Dettagli funzione.
  3. Fai clic su Modifica.
  4. Espandi la sezione Runtime, build... alla fine della pagina e fai clic sulla scheda Runtime.
  5. In Contemporaneità, inserisci un valore di contemporaneità nel campo denominato Numero massimo di richieste in parallelo per istanza.
  6. Tocca Avanti.
  7. Fai clic su Esegui il deployment.

    Si tratta di un passaggio necessario per l'applicazione delle modifiche.

Imposta la contemporaneità utilizzando Cloud Run

gcloud

Per impostare un valore di contemporaneità utilizzando gcloud CLI, 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 richieste in parallelo consentite per istanza container. Non specificare la contemporaneità per ricevere il valore predefinito del server.

Console

Per impostare un valore di contemporaneità utilizzando la console Google Cloud:

  1. Vai alla pagina Panoramica di Cloud Functions nella console Google Cloud.
  2. Fai clic sul nome della funzione per andare alla relativa pagina Dettagli funzione.
  3. Nel riquadro denominato Powered by Cloud Run, fai clic sul nome della funzione per andare alla pagina Dettagli servizio del servizio Cloud Run sottostante.
  4. Fai clic su Modifica ed esegui il deployment di nuova revisione nella parte superiore della pagina.
  5. Apri la scheda Contenitore.
  6. Inserisci un valore di contemporaneità nel campo denominato 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 Container. Assicurati che il campo CPU contenga un valore pari o superiore a 1.

  7. Fai clic su Esegui il deployment.

    Si tratta di un passaggio necessario per l'applicazione delle modifiche.

Le funzioni Cloud Functions di 2ª generazione si basano sul supporto della contemporaneità fornito da Cloud Run. Per scoprire di più, consulta Numero massimo di richieste in parallelo per istanza (servizi) nella documentazione di Cloud Run.