Maximale Anzahl von Instanzen konfigurieren

Sie können das Skalierungsverhalten Ihrer Funktion steuern, indem Sie eine maximale Anzahl von Cloud Functions-Instanzen festlegen. Die Einstellung der maximalen Anzahl von Instanzen kontrolliert die Kosten und verhindert, dass nachgelagerte Ressourcen von Traffic überlastet werden.

In Cloud Functions wird die Skalierung durch das Erstellen neuer Instanzen Ihrer Funktion erreicht. Jede dieser Instanzen kann jeweils nur eine Anfrage gleichzeitig verarbeiten. Daher werden bei große Spitzen im Anfragevolumen unter Umständen viele Instanzen erstellt.

Die automatische Skalierung ist meistens von Vorteil. In einigen Fällen kann es aber sinnvoll sein, die Gesamtzahl der Instanzen zu begrenzen, die gleichzeitig vorhanden sein können. Beispielsweise könnte Ihre Funktion mit einer Datenbank interagieren, die nur eine bestimmte Anzahl geöffneter Verbindungen verarbeiten kann.

Cloud Functions (2nd gen) bietet Nebenläufigkeit als zusätzlichen Skalierungsmechanismus. Eine für Nebenläufigkeit konfigurierte Funktion kann mehrere Anfragen gleichzeitig auf einer einzelnen Instanz ausführen. Sie können eine Funktion so konfigurieren, dass sie sowohl Nebenläufigkeit als auch mehrere Instanzen verwendet, um die Leistung zu optimieren. Informationen zum Konfigurieren von Nebenläufigkeit finden Sie unter Nebenläufigkeit von Cloud Functions.

Limits für die Höchstzahl der Instanzen festlegen und löschen

Sie können für eine Funktion während der Bereitstellung eine maximale Anzahl von Instanzen festlegen. Jede Funktion hat ihre eigene Einstellung für die maximale Anzahl von Instanzen. Funktionen werden unabhängig voneinander skaliert.

Maximale Instanzlimits festlegen

Sie können ein maximales Instanzlimit entweder über die Google Cloud CLI oder die Google Cloud Console festlegen. Wenn Sie kein Limit angeben, legt Cloud Functions einen Standardwert fest:

  • 3.000 für Cloud Functions-Funktionen (1. Generation)
  • 100 für Cloud Functions-Funktionen (2. Generation)

So legen Sie ein Limit für die maximale Anzahl an Instanzen fest:

Console

  1. Zur Übersichtsseite zu Cloud Functions

  2. Klicken Sie auf Funktion erstellen.

  3. Füllen Sie die erforderlichen Felder für die Funktion aus.

  4. Maximieren Sie am Ende der Seite den Abschnitt Laufzeit, Build... und klicken Sie auf den Tab Laufzeit.

  5. Geben Sie im Abschnitt Automatische Skalierung des Felds Maximale Anzahl von Instanzen einen Wert ein oder verwenden Sie die Standardeinstellung.

gcloud

Führen Sie den Befehl deploy mit dem Flag --max-instances aus, um ein maximales Instanzlimit festzulegen:

gcloud functions deploy FUNCTION_NAME --max-instances MAX_INSTANCE_LIMIT

Dabei gilt:

  • FUNCTION_NAME: Der Name der Funktion.

  • MAX_INSTANCE_LIMIT: Die Zahl, die als Limit für die maximale Anzahl an Instanzen festgelegt werden soll, z. B. 3.000.

Maximale Instanzlimits löschen

Sie können ein maximales Instanzlimit für eine Cloud Functions-Funktion (1. Generation) über das gcloud-Befehlszeilentool oder die Google Cloud Console löschen. Für Cloud Functions-Funktionen (2. Generation) ist ein definiertes Limit für die maximale Anzahl an Instanzen erforderlich.

Console

So löschen Sie ein Limit für die maximale Anzahl an Instanzen für eine Cloud Functions-Funktion (1. Generation):

  1. Zur Übersichtsseite zu Cloud Functions

  2. Klicken Sie auf eine vorhandene Funktion, um die zugehörige Detailseite zu öffnen. Das aktuelle Limit für die maximalen Instanzen der Funktion finden Sie auf dem Tab Details.

  3. Klicken Sie auf Bearbeiten.

  4. Maximieren Sie am Ende der Seite den Abschnitt Laufzeit, Build... und klicken Sie auf den Tab Laufzeit.

  5. Geben Sie im Abschnitt Automatische Skalierung im Feld Maximale Anzahl von Instanzen den Wert 0 ein.

gcloud

Führen Sie den deploy-Befehl mit dem --clear-max-instances-Flag aus, um ein Limit für die maximale Anzahl an Instanzen für eine Cloud Functions-Funktion (1. Generation) zu löschen:

gcloud functions deploy FUNCTION_NAME --clear-max-instances

Limits und Best Practices

Dieser Abschnitt enthält Richtlinien für die Verwendung der Funktion für die Höchstzahl der Instanzen.

Maximalen Instanzwert wählen

Der optimale Wert für die Einstellung für maximale Instanzen hängt von den Eigenschaften Ihrer Funktion ab, einschließlich der Dauer der Ausführung eines Aufrufs, der erwarteten durchschnittlichen und maximalen Aufrufhäufigkeit und der Toleranz Ihrer Anwendung gegen Aufruffehler. Es empfiehlt sich, mit einem maximalen Instanzwert von 3 zu beginnen, dann auf Aufruffehler zu überwachen und den Wert der maximalen Anzahl an Instanzen nach Bedarf anzupassen.

Schutz vor übermäßigem Scale-up

Wenn kein maximales Instanzlimit angegeben ist, bevorzugt Cloud Functions (1. Generation) die Skalierung zur Deckung des Bedarfs gegenüber der Begrenzung des Durchsatzes. Dies bedeutet, dass die Anzahl der gleichzeitigen Instanzen, die Ihre Funktion der 1. Generation nutzen kann, praktisch unbegrenzt ist, es sei denn, Sie haben ein solches Limit konfiguriert. Cloud Functions (2. Generation) unterstützt Funktionen ohne maximales Instanzlimit nicht.

Es empfiehlt sich, allen Funktionen, die Anfragen an durchsatzbeschränkte oder anderweitig nicht skalierbare nachgelagerte Dienste senden, ein --max-instances-Limit zuzuweisen. Ein maximales Instanzlimit verbessert die allgemeine Systemstabilität und schützt vor ungewöhnlich hohen Anfragezahlen.

Anfrageverarbeitung, wenn alle Instanzen ausgelastet sind

Unter normalen Umständen wird Ihre Funktion hochskaliert, wenn neue Instanzen zum Verarbeiten des eingehenden Traffics erstellt werden. Wenn Sie jedoch ein Limit für die Höchstzahl der Instanzen festgelegt haben, kann es vorkommen, dass nicht genügend Instanzen vorhanden sind, um den eingehenden Traffic zu verarbeiten.

In diesem Szenario versucht Cloud Functions bis zu 30 Sekunden, eine neue eingehende Anfrage zu verarbeiten:

  • Wenn eine Instanz die Verarbeitung ihrer Anfrage während dieses Zeitraums abschließt, kann sie mit der Verarbeitung der neuen eingehenden Anfrage beginnen.
  • Wenn keine Instanz verfügbar wird, schlägt die Anfrage fehl.

Anfragen, die an überlastete HTTP-Funktionen gesendet werden, schlagen mit dem Antwortcode

  • 429 Too Many Requests fehl, wenn ein Wert für die Höchstzahl an Instanzen konfiguriert ist, oder mit
  • 500 Internal Server Error, falls kein Höchstwert für Instanzen konfiguriert ist (nur Funktionen der 1. Generation)

Ereignisse für ereignisgesteuerte Funktionen werden automatisch gespeichert, bis Kapazität verfügbar ist.

Limits für die maximale Anzahl von Instanzen, die die Skalierbarkeit von Cloud Functions überschreiten

Wenn Sie ein Limit für die maximale Anzahl von Instanzen festlegen, geben Sie eine Obergrenze an. Das Festlegen eines hohen Limits bedeutet nicht, dass Ihre Funktion bis auf die angegebene Anzahl von Instanzen skaliert wird. Es bedeutet lediglich, dass die Anzahl der zu einer beliebigen Zeit koexistierenden Instanzen den Grenzwert nicht überschreiten darf.

Außerdem kann sich das Festlegen eines maximalen Instanzlimits auf die Skalierungsstrategien auswirken, die Cloud Functions zum Verarbeiten Ihres Trafficaufkommens verwendet. Im Allgemeinen priorisiert Cloud Functions Ihr angegebenes Limit, statt vertikal zu skalieren und Ihr Limit möglicherweise zu überschreiten.

Trafficspitzen verarbeiten

In einigen Fällen, z. B. bei schnellem Trafficanstieg, kann Cloud Functions für einen kurzen Zeitraum mehr Instanzen als das angegebene maximale Instanzenlimit erstellen. Wenn Ihre Funktion dieses temporäre Verhalten nicht akzeptiert, sollten Sie vielleicht eine Sicherheitsspanne hinzufügen und einen geringeren Wert für die Höchstzahl der Instanzen festlegen, als Ihre Funktion tolerieren kann.

Bereitstellungen

Wenn Sie eine neue Version Ihrer Funktion bereitstellen, migriert Cloud Functions Traffic von der früheren Version zur neuen. Da für jede Version der Funktion ein unabhängiges Limit für die Höchstzahl der Instanzen festgelegt ist, können Sie das jeweilige Limit nach der Bereitstellung vorübergehend überschreiten.

Eine Funktion kann beispielsweise ein maximales Instanzenlimit von 5 haben. Unter normalen Umständen skaliert die Funktion bei der Verarbeitung von Anfragen bis auf 5 Instanzen. Wenn eine neue Version der Funktion bereitgestellt wird, hat die neue Version ein eigenes maximales Instanzenlimit von 5.

Anfragen, die bereits von der vorherigen Version der Funktion verarbeitet werden, werden nicht unterbrochen, wenn eine neue Version der Funktion bereitgestellt wird. Stattdessen werden diese Anfragen weiterverarbeitet. Neue eingehende Anfragen werden von der neu bereitgestellten Version der Funktion verarbeitet.

Daher kann die Funktion im vorherigen Beispiel während des Zeitraums nach der Bereitstellung der neuen Version insgesamt bis zu 10 Instanzen haben (5 für jede Version Ihrer Funktion). Die Zeit, die für das Beenden der Instanzen der vorherigen Funktion benötigt wird, hängt von der Zeit ab, die diese Instanzen für die Verarbeitung aktiver Anfragen benötigen. Dies ist ein zusätzlicher Faktor, der bei der Auswahl eines geeigneten maximalen Instanzenlimits berücksichtigt werden muss.

Maximale Instanzlimits löschen

Wenn Sie die maximale Anzahl an Instanzen für eine Cloud Functions-Funktion (1. Generation) auf 0 setzen, wird das vorhandene maximale Instanzlimit der Funktion gelöscht, die Funktion wird jedoch nicht pausiert.