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 gleichzeitig geöffneter Verbindungen verarbeiten kann.
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.
Console
So legen Sie ein Limit für die maximale Anzahl von Instanzen für eine neue Funktion fest:
Klicken Sie auf Funktion erstellen.
Füllen Sie die erforderlichen Felder für die Funktion aus.
Maximieren Sie am Ende der Seite den Abschnitt Laufzeit, Build... und klicken Sie auf den Tab Laufzeit.
Geben Sie im Abschnitt Autoscaling im Feld Maximale Instanzzahl den gewünschten Wert ein oder verwenden Sie einfach die vorgeschlagene 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 von Instanzen festgelegt werden soll. Beispiel: 3000.
Das Limit für die Höchstzahl der Instanzen ist festgelegt.
Maximale Instanzlimits löschen
Sie können ein maximales Instanzlimit entweder mit dem gcloud
-Befehlszeilentool oder der Google Cloud Console löschen.
Console
So löschen Sie ein maximales Instanzlimit:
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.
Klicken Sie auf Bearbeiten.
Maximieren Sie am Ende der Seite den Abschnitt Laufzeit, Build... und klicken Sie auf den Tab Laufzeit.
Geben Sie im Abschnitt Automatische Skalierung im Feld Maximale Anzahl von Instanzen den Wert
0
ein.
gcloud
Führen Sie den Befehl deploy
mit dem Flag --clear-max-instances
aus, um ein maximales Instanzlimit zu löschen:
gcloud functions deploy FUNCTION_NAME --clear-max-instances
Das Limit für die Höchstzahl der Instanzen wurde gelöscht.
Limits und Best Practices
Dieser Abschnitt enthält Richtlinien für die Verwendung der Funktion für die Höchstzahl der Instanzen.
Schutz vor übermäßigem Scale-up
Wenn kein --max-instances
-Limit angegeben ist, ist Cloud Functions sind so konzipiert, dass es die Skalierung zur Deckung des Bedarfs der Begrenzung des Durchsatzes vorzieht. Dies bedeutet, dass die Anzahl der gleichzeitigen Instanzen, die Ihre Funktion nutzen kann, praktisch unbegrenzt ist, es sei denn, Sie haben ein solches Limit konfiguriert.
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.
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 Instanzen, die zu einem beliebigen Zeitpunkt koexistieren, 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.
Deployments
Wenn Sie eine neue Version Ihrer Funktion bereitstellen, migriert Cloud Functions Traffic von der alten 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 von Instanzen auf 0
setzen, werden die vorhandenen Limits für die maximale Anzahl von Instanzen gelöscht. Durch das Festlegen eines 0
-Werts wird die Funktion nicht pausiert.