Maximale Anzahl von Instanzen konfigurieren
Sie können das Skalierungsverhalten Ihrer Funktion steuern, indem Sie eine maximale Anzahl von Cloud Run-Funktionsinstanzen festlegen. Die Einstellung der maximalen Anzahl von Instanzen kontrolliert die Kosten und verhindert, dass nachgelagerte Ressourcen von Traffic überlastet werden.
In Cloud Run-Funktionen 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 Run-Funktionen bieten 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 Run-Funktionen.
Maximale Instanzlimits festlegen
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. Für Cloud Run-Funktionen ist ein definiertes Limit für die maximale Anzahl an Instanzen erforderlich.
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, wird in Cloud Run Functions standardmäßig 100 festgelegt.
So legen Sie ein Limit für die maximale Anzahl an Instanzen fest:
Console
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 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.
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.
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 Run 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.
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 Run-Funktionen ü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 Run-Funktionen zum Verarbeiten Ihres Trafficaufkommens verwendet. Im Allgemeinen priorisiert Cloud Run-Funktionen 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, können Cloud Run-Funktionen 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 Run den 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.