Informationen zum Instanz-Autoscaling in Cloud Run-Diensten

Auf dieser Seite wird das Standardverhalten beim Autoscaling von Cloud Run beschrieben. Wenn Sie mehr Kontrolle über das Skalierungsverhalten benötigen, können Sie die alternative Skalierungsoption manuelle Skalierung verwenden.

Standardmäßig wird jede Cloud Run-Revision automatisch auf die Anzahl der Instanzen skaliert, die zum Verarbeiten aller eingehenden Anfragen, Ereignisse oder der CPU-Auslastung erforderlich sind.

Wenn eine Überarbeitung keinen Traffic empfängt, wird sie standardmäßig auf null Instanzen herunterskaliert. Bei Bedarf können Sie diese Standardeinstellung ändern, um eine Instanz mithilfe der Einstellung Mindestinstanzen als inaktiv oder „einsatzbereit” festzulegen. Wenn Ihr Dienst CPU-Ressourcen verwendet, auch wenn er keine Anfragen verarbeitet, sollten Sie die Mindestanzahl von Instanzen auf 1 festlegen.

Zusätzlich zur Rate eingehender Anfragen, Ereignisse oder CPU-Auslastung wird die Anzahl der geplanten Instanzen beeinflusst durch:

Das Cloud Run-Autoscaling wertet sie regelmäßig aus.

Instanzbasierte Abrechnung und Autoscaling

Wenn Sie die instanzbasierte Abrechnung für Ihren Cloud Run-Dienst konfigurieren, sollten Sie die Skalierung nach und ab null berücksichtigen.

Skalierung ab null. Die Skalierung ab null kann nur durch eine Anfrage ausgelöst werden. Ein Dienst, der keine Anfragen verarbeitet, kann also nicht ab null skaliert werden. Für diese Arbeitslasten können Sie entweder die Mindestanzahl von Instanzen auf > 0 festlegen oder eine Aufforderung zum Aufwachen in Ihrem Design einschließen, um die Verarbeitung nach der Skalierung auf null neu zu starten.

Skalierung auf null: Da keine Instanz jemals 0% der CPU erreicht, würde eine Betrachtung der gesamten CPU-Auslastung zu einer Skalierung auf null führen. Dies bedeutet, dass die Entscheidung zur Skalierung von eins auf null nur getroffen werden kann, wenn geprüft wird, ob die Instanz eine Anfrage verarbeitet.

Maximale Anzahl von Instanzen

In einigen Fällen möchten Sie vielleicht die Gesamtzahl der Instanzen, die gestartet werden können, aus Gründen der Kostenkontrolle oder besserer Kompatibilität mit anderen von Ihrem Dienst verwendeten Ressourcen begrenzen. Beispielsweise kann Ihr Cloud Run-Dienst mit einer Datenbank interagieren, die nur eine bestimmte Anzahl gleichzeitig offener Verbindungen verarbeiten kann.

Mit der Einstellung „Maximale Anzahl von Instanzen” können Sie die Gesamtzahl der Instanzen begrenzen, die parallel gestartet werden können, wie unter Maximale Anzahl von Instanzen festlegen beschrieben.

Maximale Anzahl von Instanzen überschreiten

Unter normalen Umständen wird die Überarbeitung durch das Erstellen neuer Instanzen horizontal skaliert, um die eingehende Trafficlast zu verarbeiten. Wenn Sie jedoch ein maximales Instanzlimit festlegen, sind in einigen Szenarien nicht genügend Instanzen vorhanden, um diese Trafficlast zu bewältigen. In diesem Fall werden eingehende Anfragen so in die Warteschlange (ausstehend) gestellt:

Anfragen bleiben bis zum 3,5-Fachen der durchschnittlichen Startzeit von Containerinstanzen dieses Dienstes oder bis zu 10 Sekunden ausstehend, je nachdem, welcher Wert größer ist.

Wenn eine Instanz während dieses Zeitfensters die Verarbeitung von Anfragen abschließt, steht sie für die Verarbeitung der ausstehenden Anfragen in der Warteschlange zur Verfügung. Wenn während des Zeitfensters keine Instanzen verfügbar werden, schlägt die Anfrage mit dem Fehlercode 429 fehl.

Skalierungsgarantien

Die Höchstzahl der Instanzen ist eine Obergrenze pro Überarbeitung. Das bedeutet, dass die Anzahl der Instanzen für diese Überarbeitung das Maximum nicht überschreiten sollte.

Unter normalen Umständen kann Cloud Run sehr schnell horizontal auf das maximale Instanzlimit skaliert werden, um alle eingehenden Anfragen oder Ereignisse zu verarbeiten. Das Festlegen eines hohen Limits bedeutet jedoch nicht, dass Ihre Überarbeitung jederzeit auf die angegebene Anzahl von Instanzen horizontal skaliert werden kann. Unter außergewöhnlichen Umständen kann Cloud Run die Skalierung drosseln, um einen fehlerfreien Dienst für alle Kunden zu gewährleisten.

Maximale Anzahl von Instanzen aufgrund von Trafficspitzen überschreiten

In einigen Fällen, z. B. bei plötzlichem hohem Traffic oder bei Systemwartungen, kann Cloud Run für einen kurzen Zeitraum mehr Instanzen erstellen, als in der Einstellung für die maximale Anzahl von Instanzen angegeben sind. Neue Instanzen können über die maximale Anzahl von Instanzen hinaus gestartet werden, um vorhandene Instanzen zu ersetzen und einen Kulanzzeitraum für die Abarbeitung von Inflight-Anfragen festzulegen.

Das maximale Instanzlimit kann bei normalen Betrieb einige Male pro Woche überschritten werden. Der Kulanzzeitraum beträgt in der Regel bis zu 15 Minuten oder bis zu dem in der Einstellung Zeitlimit für Anfragen angegebenen Wert. Diese zusätzlichen Instanzen werden innerhalb von 15 Minuten nach Beginn ihrer Inaktivität gelöscht.

Sind viele Ersetzungen erforderlich, werden die Aktualisierungen in der Regel über viele Minuten oder Stunden verteilt, aber jeder Ersatz hat eine nur für den Kulanzzeitraum existierende Überschussinstanz. Die Zahl der Instanzen, die den maximalen Instanzwert überschreiten, liegt in der Regel nicht mehr als das Doppelte des konfigurierten maximalen Instanzlimits, sie kann bei plötzlichen großen Trafficspitzen jedoch viel höher sein.

Bei Lasttests treten mehr Instanzen über der maximalen Anzahl von Instanzen auf, da das System ändern kann, wo Trafficspitzen verarbeitet werden, um Kapazitäten für vorhandene Arbeitslasten mit dauerhaften Lastmustern freizuhalten.

Wenn Ihr Dienst dieses vorübergehende Verhalten nicht akzeptiert, sollten Sie vielleicht eine Sicherheitsspanne hinzufügen und einen niedrigeren Wert für die maximale Anzahl von Instanzen festlegen.

Trafficaufteilungen

Da das maximale Instanzlimit ein Grenzwert pro Überarbeitung ist, kann die Gesamtzahl der Instanzen für den Dienst die maximale Anzahl von Instanzen pro Überarbeitungen überschreiten, wenn der Dienst den Traffic auf mehrere Überarbeitungen verteilt. Dies ist in den Instanzanzahl-Messwerten zu sehen.

Bereitstellungen

Wenn Sie eine neue Überarbeitung bereitstellen, die 100 % des Traffics verarbeitet, startet Cloud Run genügend Instanzen der neuen Überarbeitung, bevor der Traffic an sie weitergeleitet wird. Dadurch werden die Auswirkungen von Bereitstellungen neuer Überarbeitungen auf die Anfragelatenzen reduziert, insbesondere bei der Bereitstellung großer Mengen an Traffic. Da die maximale Anzahl von Instanzen ein Limit pro Überarbeitung ist, kann die Gesamtzahl der Instanzen für den Dienst die maximale Anzahl an Instanzen pro Überarbeitung überschreiten. Dies ist in den Instanzanzahl-Messwerten zu sehen.

Inaktive Instanzen und Minimierung von Kaltstarts

Instanzen werden von Cloud Run nicht sofort heruntergefahren, wenn alle Anfragen verarbeitet wurden. Damit die Auswirkungen von Kaltstarts minimiert werden, kann Cloud Run einige Instanzen bis zu 15 Minuten inaktiv lassen. Bei Cloud Run-Ressourcen, für die GPUs aktiviert sind, können einige Instanzen bis zu 10 Minuten inaktiv bleiben. Diese Instanzen können bei plötzlichen Trafficspitzen Anfragen verarbeiten.

Wenn eine Instanz beispielsweise die Verarbeitung von Anfragen abgeschlossen hat, bleibt sie möglicherweise für einen bestimmten Zeitraum inaktiv, falls eine weitere Anfrage verarbeitet werden muss. Eine inaktive Instanz kann Ressourcen wie offene Datenbankverbindungen beibehalten. Die Standardeinstellung für die Abrechnung ist die anfragebasierte Abrechnung, es sei denn, Sie konfigurieren den Dienst explizit so, dass die instanzbasierte Abrechnung verwendet wird.

Mit der Einstellung min-instance können Sie inaktive Instanzen dauerhaft verfügbar halten. Beachten Sie, dass die Verwendung dieses Features Kosten verursacht, auch wenn der Dienst keine Anfragen aktiv verarbeitet.

Autoscaling und ausstehende Anfragen

Anfragen bleiben bis zum 3,5-Fachen der durchschnittlichen Startzeit von Containerinstanzen dieses Dienstes oder bis zu 10 Sekunden ausstehend, je nachdem, welcher Wert größer ist.

Auswirkungen von Autoscaling auf Backing Services

Wenn die Anzahl der Instanzen automatisch zunimmt, können beim Cloud Run-Dienst hinsichtlich der Sicherungsdienste Beschränkungen auftreten. Für Cloud SQL gilt beispielsweise ein API-Kontingentlimit. Achten Sie darauf, dass diese Sicherungsdienste ein ausreichendes Kontingent haben und Verbindungen von allen Instanzen Ihres Cloud Run-Dienstes verarbeiten können. Sie sollten eine maximale Anzahl von Instanzen festlegen, um eine Überlastung der Sicherungsdienste zu vermeiden.

Autoscaling und Pub/Sub

Google empfiehlt die Verwendung von Push-Abos, um Nachrichten aus einem Pub/Sub-Thema in Cloud Run zu verarbeiten. Push-Nachrichten werden vom Container wie HTTP-Anfragen empfangen und lösen daher dasselbe Autoscaling-Verhalten aus.

Autoscaling und mehrere Container (Sidecars)

Bei Cloud Run wird die CPU-Auslastung von Instanzen für das Autoscaling berücksichtigt. Die CPU-Auslastung einer Instanz ist der Prozentsatz der zugewiesenen CPU, die verwendet wird.

Beachten Sie, dass Sie CPU zuweisen, wenn Sie CPU-Limits auf Containerebene festlegen. Wenn Sie mehrere Container pro Instanz verwenden, ist die tatsächliche CPU-Zuweisung für diese Instanz die Summe der CPU-Limits, die Sie für jeden Container festlegen.

Nächste Schritte