Configura il numero massimo di istanze

Puoi controllare il comportamento di scalabilità della funzione impostando un numero massimo di istanze di funzioni Cloud Run. L'impostazione del numero massimo di istanze consente di controllare i costi e impedisce alle risorse a valle di essere sopraffatte dal traffico.

Le funzioni Cloud Run si ridimensionano creando nuove istanze della funzione. Ogni di queste istanze può gestire una sola richiesta alla volta, pertanto picchi elevati nel volume delle richieste potrebbero comportare la creazione di molte istanze.

La scalabilità automatica è vantaggiosa nella maggior parte dei casi, ma in alcuni casi potresti volere limitare il numero totale di istanze che possono esistere in un determinato momento. Ad esempio, la funzione potrebbe interagire con un database che può gestire solo un determinato numero di connessioni aperte.

Le funzioni Cloud Run offrono la concorrenza come meccanismo di scalabilità aggiuntivo. Una funzione configurata per la concorrenza può eseguire più richieste contemporaneamente su una singola istanza. Puoi configurare una funzione in modo che utilizzi sia la concorrenza sia più istanze per ottimizzarne il rendimento. Per informazioni sulla configurazione della concorrenza, consulta Concorrenza delle funzioni Cloud Run.

Impostazione dei limiti di istanze massime

Puoi impostare un numero massimo di istanze per una funzione durante il deployment. Ogni funzione ha la propria impostazione di istanze massime. Le funzioni scalano in modo indipendente l'una dall'altra. Le funzioni Cloud Run richiedono un limite massimo di istanze definito.

Impostazione dei limiti di istanze massime

Puoi impostare un limite massimo di istanze utilizzando Google Cloud CLI o la console Google Cloud. Se non specifichi un limite, Cloud Run Functions imposta un valore predefinito di 100.

Per impostare un limite massimo di istanze:

Console

  1. Vai alla pagina Panoramica delle funzioni Cloud Run.

  2. Fai clic su Crea funzione.

  3. Compila i campi obbligatori per la funzione.

  4. Espandi la sezione Runtime, build… alla fine della pagina e fai clic sulla scheda Runtime.

  5. Nel campo Numero massimo di istanze della sezione Scalabilità automatica, inserisci un valore o utilizza quello predefinito.

gcloud

Per impostare un limite massimo di istanze, esegui il comando deploy con il flag --max-instances:

gcloud functions deploy FUNCTION_NAME --max-instances MAX_INSTANCE_LIMIT

Sostituisci quanto segue:

  • FUNCTION_NAME: il nome della funzione.

  • MAX_INSTANCE_LIMIT: il numero da impostare come limite massimo di istanze, ad esempio 3000.

Limiti e best practice

Questa sezione fornisce linee guida per l'utilizzo del numero massimo di istanze.

Scegli un valore massimo per l'istanza

Il valore ottimale per l'impostazione delle istanze massime dipende dalle caratteristiche della funzione, tra cui il tempo di esecuzione di una chiamata, la frequenza media e di picco prevista delle chiamate e la tolleranza dell'applicazione per gli errori di chiamata. Una buona regola empirica è iniziare con un valore di istanze massime pari a 3, quindi monitorare gli errori di chiamata e modificare il valore di istanze massime verso l'alto, se necessario.

Gestione delle richieste quando tutte le istanze sono occupate

In circostanze normali, la funzione esegue il ridimensionamento in alto creando nuove istanze per gestire il carico del traffico in entrata. Tuttavia, se hai impostato un limite di istanze massime, potresti riscontrare uno scenario in cui le istanze non sono sufficienti per soddisfare il carico del traffico in entrata.

In questo scenario, le funzioni Cloud Run tentano di soddisfare una nuova richiesta in entrata per un massimo di 30 secondi:

  • Se un'istanza termina l'elaborazione della richiesta durante questo periodo di tempo, potrebbe iniziare a elaborare la nuova richiesta in entrata.
  • Se non viene creata alcuna istanza, la richiesta non andrà a buon fine.

Le richieste inviate a funzioni HTTP sovraccarcate non vanno a buon fine con un codice di risposta 429 Too Many Requests.

Gli eventi destinati alle funzioni basate su eventi verranno salvati automaticamente fino a quando non sarà disponibile la capacità.

Limiti di istanze massime che superano la capacità di scalabilità delle funzioni Cloud Run

Quando specifichi un limite massimo di istanze, specifichi un limite superiore. L'impostazione di un limite elevato non significa che la funzione verrà scalata fino al numero specificato di istanze. Significa solo che il numero di istanze che coesistono in un determinato momento non deve superare il limite.

Inoltre, l'impostazione di un limite massimo di istanze potrebbe influire sulle strategie di scalabilità impiegate dalle funzioni Cloud Run per soddisfare la domanda di traffico. In generale, le funzioni Cloud Run daranno la priorità al rispetto del limite specificato anziché aumentare le dimensioni e potenzialmente superare il limite.

Gestione dei picchi di traffico

In alcuni casi, ad esempio in caso di picchi di traffico rapidi, le funzioni Cloud Run potrebbero, per un breve periodo di tempo, creare più istanze rispetto al limite di istanze massime specificato. Se la funzione non può tollerare questo comportamento temporaneo, ti consigliamo di prendere in considerazione un margine di sicurezza e di impostare un valore di istanze massime inferiore a quello tollerato dalla funzione.

Deployment

Quando esegui il deployment di una nuova versione della funzione, Cloud Run esegue la migrazione del traffico dalla versione precedente alla nuova. Poiché i limiti di istanze massime sono impostati in modo indipendente per ogni versione della funzione, potresti superare temporaneamente il limite specificato nel periodo successivo al deployment.

Ad esempio, una funzione potrebbe avere un limite massimo di istanze pari a 5. In circostanze normali, la funzione esegue lo scale up fino a 5 istanze man mano che gestisce le richieste. Quando viene eseguita il deployment di una nuova versione della funzione, questa ha un proprio limite di 5 istanze massime.

Le richieste già gestite dalla versione precedente della funzione non vengono interrotte quando viene implementata una nuova versione della funzione. Al contrario, queste richieste continueranno a essere elaborate. Le nuove richieste in entrata verranno gestite dalla versione appena implementata della funzione.

Pertanto, la funzione nell'esempio precedente potrebbe avere fino a 10 istanze totali (5 per ogni versione della funzione) durante il periodo successivo al deployment della nuova versione. Il tempo necessario per l'interruzione delle istanze della funzione precedente dipende dal tempo necessario per completare la gestione di eventuali richieste attive. Questo è un fattore aggiuntivo da prendere in considerazione quando si seleziona un limite di istanze massime appropriato.