In Cloud Run wird jede Überarbeitung 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 Sie CPU außerhalb von Anfragen verwenden, sollten Sie die Mindestinstanzen auf 1
festlegen.
Zusätzlich zur Rate eingehender Anfragen, Ereignisse oder der CPU-Auslastung wird die Anzahl der geplanten Instanzen beeinflusst durch:
- Die durchschnittliche CPU-Auslastung vorhandener Instanzen über ein Zeitfenster von einer Minute, mit dem Ziel, geplante Instanzen auf einer CPU-Auslastung von 60 % zu halten
- Die aktuelle Gleichzeitigkeit der Anfrage im Vergleich zur maximalen Gleichzeitigkeit über ein Zeitfenster von einer Minute
- Die Einstellung für die maximale Anzahl von Instanzen
- Die Einstellung für die Mindestzahl von Instanzen
Das Cloud Run-Autoscaling wertet sie alle 5 Sekunden aus.
CPU immer zugewiesen und Autoscaling
Wenn Sie Ihren Cloud Run-Dienst so konfigurieren, dass die CPU immer zugewiesen ist, sollten Sie die Skalierung nach und ab null berücksichtigen.
CPU wird immer ab null zugewiesen 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.
CPU wird immer nach null skaliert 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:
- Wenn neue Instanzen gestartet werden, z. B. während einer horizontalen Skalierung, bleiben Anfragen mindestens für die durchschnittliche Startzeit von Containerinstanzen dieses Dienstes ausstehend. Dies gilt auch, wenn die Anfrage ein Hochskalieren initiiert, z. B. bei einer Skalierung von null.
- Wenn die Startzeit weniger als 10 Sekunden beträgt, bleiben Anfragen bis zu 10 Sekunden ausstehend.
- Wenn keine Instanzen beim Start vorhanden sind und die Anfrage keine horizontale Skalierung initiiert, bleiben Anfragen bis zu 10 Sekunden lang ausstehend.
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 maximale Anzahl von Instanzen ist eine Obergrenze pro Überarbeitung. Die Anzahl der Instanzen für diese Überarbeitung sollte das Maximum nicht überschreiten.
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 neuer Überarbeitungsbereitstellungen auf die Anfragelatenzen reduziert, insbesondere bei der Bereitstellung von hohem 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. 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. Beachten Sie, dass die CPU nur während der Anfrageverarbeitung zugewiesen wird, es sei denn, Sie konfigurieren den Dienst explizit so, dass die CPU dauerhaft zugewiesen 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
- Wenn neue Instanzen gestartet werden, z. B. während einer horizontalen Skalierung, bleiben Anfragen mindestens für die durchschnittliche Startzeit von Containerinstanzen dieses Dienstes ausstehend. Dies gilt auch, wenn die Anfrage ein Hochskalieren initiiert, z. B. bei einer Skalierung von null.
- Wenn die Startzeit weniger als 10 Sekunden beträgt, bleiben Anfragen bis zu 10 Sekunden ausstehend.
- Wenn keine Instanzen beim Start vorhanden sind und die Anfrage keine horizontale Skalierung initiiert, bleiben Anfragen bis zu 10 Sekunden lang ausstehend.
Auswirkungen des Autoscalings auf Sicherungsdienste
Wenn die Anzahl der Instanzen automatisch zunimmt, können beim Cloud Run-Dienst hinsichtlich der Sicherungsdienste Beschränkungen auftreten. Für Cloud SQL gibt es 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. Gepushte Nachrichten werden vom Container wie HTTP-Anfragen empfangen und lösen somit dasselbe automatische Skalierungsverhalten 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 die CPU zuweisen, wenn Sie CPU-Limits auf Containerebene festlegen. Wenn Sie mehrere Container pro Instanz verwenden, entspricht die tatsächliche CPU-Zuweisung für diese Instanz der Summe der CPU-Limits, die Sie für jeden Container festgelegt haben.
Nächste Schritte
- Informationen zum Verwalten der maximalen Anzahl von Instanzen Ihrer Cloud Run-Dienste finden Sie unter Maximale Anzahl von Instanzen festlegen.
- Informationen zum Verwalten der maximalen Anzahl gleichzeitiger Anfragen, die von jeder Instanz verarbeitet werden, finden Sie unter Gleichzeitigkeit festlegen.
- Informationen zum Optimieren der Gleichzeitigkeitseinstellung finden Sie unter Tipps für Entwickler: Gleichzeitigkeit optimieren.
- Wenn Sie festlegen möchten, dass eine inaktive Instanz dauerhaft ausgeführt wird, um damit Latenz oder Kaltstarts bei ersten Anfragen zu minimieren, lesen Sie den Abschnitt Inaktive Instanzen mithilfe von
min-instance
aktivieren.