Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Utilizzo di istanze massime

Puoi controllare il comportamento di scalabilità della tua funzione impostando un numero massimo di istanze di Cloud Functions.

Cloud Functions scala grazie alla creazione di nuove istanze della funzione. Ognuna di queste istanze è in grado di gestire una sola richiesta alla volta, quindi picchi elevati nel volume delle richieste potrebbero comportare la creazione di molte istanze.

La scalabilità automatica è quasi sempre vantaggiosa, ma in alcuni casi ti conviene limitare il numero totale di istanze che possono esistere in un determinato momento. Ad esempio, la funzione potrebbe interagire con un database in grado di gestire solo un determinato numero di connessioni aperte simultanee.

Impostazione e cancellazione dei limiti massimi di istanze

Puoi impostare un numero massimo di istanze per una funzione durante il deployment. Ogni funzione ha la propria impostazione relativa alle istanze massime. Le funzioni scalano indipendentemente l'una dall'altra.

Impostazione del limite massimo di istanze

Puoi impostare un limite massimo per le istanze utilizzando l'interfaccia a riga di comando di Google Cloud o Google Cloud Console.

Console

Per impostare un limite massimo di istanze per una nuova funzione:

  1. Vai alla pagina Panoramica di Cloud Functions.

  2. Fai clic su Crea funzione.

  3. Compila i campi obbligatori per la funzione.

  4. Fai clic su Impostazioni runtime, build e connessione.

  5. Nel campo Numero massimo di istanze nella sezione Scalabilità automatica, inserisci il valore desiderato. Il valore predefinito suggerito è 3000.

gcloud

Per impostare un limite massimo per le 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: nome della funzione.

  • MAX_INSTANCE_LIMIT: il numero da impostare come limite massimo per le istanze. Ad esempio, 3000.

È stato impostato il limite massimo di istanze.

Cancellazione dei limiti massimi per le istanze

Puoi cancellare un limite massimo di istanze utilizzando lo strumento a riga di comando gcloud o Google Cloud Console.

Console

Per cancellare un limite massimo di istanze:

  1. Vai alla pagina Panoramica di Cloud Functions.

  2. Fai clic su una funzione esistente per passare alla pagina dei dettagli.

  3. Fai clic su Modifica.

  4. Fai clic su Impostazioni runtime, build e connessione.

  5. Nel campo Istanze massime nella sezione Scalabilità automatica, inserisci 0 o lascia vuoto il campo.

gcloud

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

gcloud functions deploy FUNCTION_NAME --clear-max-instances

Il limite massimo di istanze è stato cancellato.

Limiti e best practice

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

Previeni le scale-up eccessive

Quando non viene specificato alcun limite --max-instances, Cloud Functions è progettato per favorire la scalabilità per soddisfare la domanda rispetto alla limitazione della velocità effettiva. Ciò significa che il numero di istanze simultanee che la funzione potrebbe avere è in realtà limitato, a meno che tu non abbia configurato un limite di questo tipo.

Ti consigliamo di assegnare un limite --max-instances a tutte le funzioni che inviano richieste a servizi downstream con vincoli di velocità effettiva o comunque non scalabili. Un limite massimo di istanze migliora la stabilità complessiva del sistema e aiuta a proteggersi da livelli di richiesta insolitamente elevati.

Richiedi gestione quando tutte le istanze sono occupate

In circostanze normali, la scalabilità della funzione viene creata creando nuove istanze per gestire il carico del traffico in entrata. Tuttavia, se hai impostato un limite massimo di istanze, potresti riscontrare uno scenario in cui le istanze non sono sufficienti per soddisfare il carico del traffico in entrata.

In questo scenario, Cloud Functions tenta di gestire una nuova richiesta in entrata per un massimo di 30 secondi:

  • Se un'istanza completa l'elaborazione della sua richiesta durante questo periodo di tempo, potrebbe iniziare a elaborare la nuova richiesta in entrata.
  • Se non è disponibile alcuna istanza, la richiesta non riesce.

Limiti massimi di istanze che superano la capacità di scalabilità di Cloud Functions

Un limite massimo per le istanze indica un limite massimo. 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 esistono in qualsiasi momento non deve superare il limite.

Inoltre, l'impostazione di un limite massimo di istanze potrebbe influire sulle strategie di scalabilità utilizzate da Cloud Functions per soddisfare la tua domanda di traffico. In generale, le funzioni Cloud avranno la priorità di rispettare il limite specificato anziché scalare verticalmente e potenzialmente superare il limite.

Gestione dei picchi di traffico

In alcuni casi, ad esempio picchi di traffico rapidi, Cloud Functions potrebbe creare, per un breve periodo di tempo, più istanze del limite massimo di istanze specificato. Se la tua funzione non è in grado di tollerare questo comportamento temporaneo, ti consigliamo di tenere conto di un margine di sicurezza e di impostare un valore massimo inferiore per le istanze rispetto alla funzione.

Deployment

Quando esegui il deployment di una nuova versione della funzione, Cloud Functions esegue la migrazione del traffico dalla versione precedente a quella nuova. Poiché i limiti massimi di istanze sono impostati in modo indipendente per ciascuna versione della funzione, potresti superare temporaneamente il limite specificato durante il periodo successivo al deployment.

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

Le richieste già gestite dalla versione precedente della funzione non vengono interrotte quando viene eseguito il deployment di una nuova versione della funzione. Tali richieste continueranno invece a progredire. Le nuove richieste in entrata verranno gestite dalla versione appena sottoposta a deployment 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 la terminazione delle istanze della funzione precedente dipende dal tempo necessario affinché tali istanze completino la gestione delle richieste attive. Si tratta di un fattore aggiuntivo da considerare quando si seleziona un limite massimo di istanze appropriato.

Cancellazione dei limiti massimi per le istanze

L'impostazione del numero massimo di istanze su 0 comporta la cancellazione dei limiti massimi per le istanze esistenti. L'impostazione di un valore 0 non mette in pausa la funzione.