Configura il numero massimo di istanze (2ª generazione)

Puoi controllare il comportamento di scalabilità della funzione impostando un valore massimo di istanze Cloud Functions. Impostazione dei controlli per il numero massimo di istanze ed evita che le risorse downstream vengano sovraccaricate dal traffico.

Cloud Functions scala creando nuove istanze della funzione. Ciascuna istanze possono gestire una sola richiesta alla volta, per cui potrebbe comportare la creazione di molte istanze.

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

Cloud Functions offre la contemporaneità come ulteriore scalabilità meccanismo di attenzione. Una funzione configurata per la contemporaneità può eseguire più richieste contemporaneamente su una singola istanza. Puoi configurare una funzione in modo che utilizzi entrambi e di più istanze per ottimizzarne le prestazioni. Per saperne di più configurazione della contemporaneità, consulta Contemporaneità di Cloud Functions.

Impostazione dei limiti massimi di istanze

Puoi impostare un numero massimo di istanze per una funzione durante il deployment. Ciascuna ha la propria impostazione del numero massimo di istanze. Le funzioni scalano indipendentemente tra loro. Cloud Functions richiede un valore massimo definito di istanze gestite.

Impostazione dei limiti massimi di istanze

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

Per impostare un limite massimo di istanze:

Console

  1. Vai alla sezione Pagina Panoramica di Cloud Functions.

  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 su la scheda Runtime.

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

gcloud

Per impostare un limite massimo di istanze, esegui il comando deploy con 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 numero massimo di istanze limite, ad esempio 3000.

Limiti e best practice

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

Scegli un valore massimo per l'istanza

Il valore ottimale per l'impostazione del numero massimo di istanze dipende dal parametro della funzione caratteristiche, tra cui il tempo necessario per l'esecuzione di una chiamata, le sue previsioni frequenza di chiamata media e massima, nonché la tolleranza della tua applicazione errori di chiamata. Una buona regola pratica è iniziare con un numero massimo di istanze valore 3, quindi monitora gli errori di chiamata e regola il numero massimo o aumentare il valore delle istanze.

Gestione delle richieste quando tutte le istanze sono occupate

In circostanze normali, la funzione fa lo scale up creando nuove istanze per per gestire il carico del traffico in entrata. Ma se imposti un limite massimo di istanze, potresti riscontrare uno scenario in cui non ci sono istanze sufficienti da soddisfare carico di traffico in entrata.

In questo scenario, Cloud Functions tenta di gestire una nuova richiesta in entrata Fino a 30 secondi:

  • Se un'istanza termina di elaborare la sua richiesta durante questo periodo di tempo, potrebbe iniziare a elaborare la nuova richiesta in entrata.
  • Se nessuna istanza diventa disponibile, la richiesta avrà esito negativo.

Richieste inviate a funzioni HTTP con sovraccarico. con un codice di risposta 429 Too Many Requests.

Gli eventi destinati alle funzioni basate su eventi verranno salvati automaticamente fino al giorno e la capacità di archiviazione è disponibile.

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

Quando specifichi un limite massimo di istanze, indichi un limite superiore. L'impostazione di un limite elevato non implica lo scale up della funzione di istanze VM specificato. Significa solo che il numero di istanze coesistenza in qualsiasi momento non deve superare il limite.

Inoltre, l'impostazione di un limite massimo di istanze potrebbe influire sulle strategie di scalabilità usate da Cloud Functions per soddisfare la tua domanda di traffico. In generale, Cloud Functions darà la priorità al rispetto del limite specificato anziché fare lo scale up e superare potenzialmente il limite.

Gestione dei picchi di traffico

In alcuni casi, come i rapidi picchi di traffico, Cloud Functions, per una breve di un periodo di tempo, crea un numero maggiore di istanze rispetto al numero massimo specificato limite. Se la funzione non è in grado di tollerare questo comportamento temporaneo, è consigliabile per calcolare un margine di sicurezza e impostare un valore massimo di istanze più basso del tuo una funzione può tollerare.

Deployment

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

Ad esempio, una funzione potrebbe avere un limite massimo di istanze pari a 5. In condizioni normali in circostanze eccezionali, la funzione fa lo scale up fino a 5 istanze mentre gestisce le richieste. Quando viene eseguito il deployment di una nuova versione della funzione, la nuova versione ha il proprio di 5 istanze.

Richieste già gestite dalla versione precedente della funzione non vengano interrotti quando viene eseguito il deployment di una nuova versione della funzione. Invece, queste richieste continueranno a progredire. Le nuove richieste in entrata verranno e gestita dalla versione della funzione di cui è stato appena eseguito il deployment.

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 del nuovo completamente gestita. La quantità di tempo richiesta alle istanze della funzione precedente per la terminazione dipende dal tempo necessario al completamento della gestione delle istanze eventuali richieste attive. Questo è un altro fattore da tenere in considerazione quando selezionando un limite massimo di istanze appropriato.