In Cloud Run wird jede Überarbeitung automatisch auf die Anzahl der Instanzen skaliert, die zum Verarbeiten aller eingehenden Anfragen erforderlich sind.
Wenn mehr Instanzen Anfragen verarbeiten, werden mehr CPUs und mehr Arbeitsspeicher benötigt, was zu höheren Kosten führt.
Für mehr Kontrolle bietet Cloud Run die Einstellung Maximale Anzahl gleichzeitiger Anfragen pro Instanz. Diese gibt die maximale Anzahl von Anfragen an, die von einer bestimmten Instanz gleichzeitig verarbeitet werden können.
Maximale Anzahl gleichzeitiger Anfragen pro Instanz
Sie haben die Möglichkeit, die maximale Anzahl gleichzeitiger Anfragen pro Instanz individuell festzulegen. Sie können diesen Wert auf bis zu 1.000 erhöhen. Standardmäßig haben Cloud Run-Instanzen, die mit der Google Cloud CLI oder Terraform bereitgestellt werden, eine maximale Anzahl gleichzeitiger Anfragen, die 80-mal so hoch ist wie die Anzahl der vCPUs. Diese Standardeinstellung gilt nur, wenn ein neuer Dienst erstellt wird. Sie gilt nicht für nachfolgende Bereitstellungen einer Revision. Cloud Run-Instanzen, die mit der Google Cloud -Console bereitgestellt werden, haben eine Standardnebenläufigkeit von 80.
Sie sollten für die Gleichzeitigkeit zwar den Standardwert verwenden, können bei Bedarf aber die maximale Gleichzeitigkeit verringern. Wenn Ihr Code beispielsweise keine parallelen Anfragen verarbeiten kann, setzen Sie die Gleichzeitigkeit auf 1.
Der angegebene Nebenläufigkeitswert ist ein Höchstwert. Wenn die CPU der Instanz bereits stark ausgelastet ist, sendet Cloud Run möglicherweise nicht so viele Anfragen an eine bestimmte Instanz. In diesen Fällen wird in der Cloud Run-Instanz möglicherweise angezeigt, dass die maximale Gleichzeitigkeit nicht genutzt wird. Wenn beispielsweise die hohe CPU-Auslastung anhält, kann die Anzahl der Instanzen stattdessen skaliert werden.
Das folgende Diagramm zeigt, wie sich die Einstellung für die maximale Anzahl gleichzeitiger Anfragen pro Instanz auf die Anzahl der Instanzen auswirkt, die zur Bearbeitung eingehender gleichzeitiger Anfragen benötigt werden:
Gleichzeitigkeit für Autoscaling und Ressourcennutzung optimieren
Wenn Sie die maximale Gleichzeitigkeit pro Instanz anpassen, hat das erhebliche Auswirkungen darauf, wie Ihr Dienst skaliert wird und wie Ressourcen genutzt werden.
- Geringere Gleichzeitigkeit: Cloud Run muss mehr Instanzen für dasselbe Anfragevolumen verwenden, da jede Instanz weniger Anfragen verarbeitet. Dies kann die Reaktionsfähigkeit von Anwendungen verbessern, die nicht für hohe interne Parallelität optimiert sind, oder von Anwendungen, die Sie basierend auf der Anfragelast schneller skalieren möchten.
- Höhere Gleichzeitigkeit: Jede Instanz kann mehr Anfragen verarbeiten, was möglicherweise zu weniger aktiven Instanzen und geringeren Kosten führt. Dies ist für Anwendungen geeignet, die parallele E/A-gebundene Aufgaben effizient ausführen können, oder für Anwendungen, die mehrere vCPUs für die gleichzeitige Verarbeitung von Anfragen nutzen können.
Beginnen Sie mit der Standard-Concurrency, beobachten Sie die Leistung und Nutzung Ihrer Anwendung genau und passen Sie sie bei Bedarf an.
Gleichzeitigkeit bei Instanzen mit mehreren vCPUs
Das Anpassen der Parallelität ist besonders wichtig, wenn Ihr Dienst mehrere vCPUs verwendet, Ihre Anwendung aber Single-Threaded oder effektiv Single-Threaded (CPU-gebunden) ist.
- vCPU-Hotspots: Eine Single-Thread-Anwendung auf einer Instanz mit mehreren vCPUs kann eine vCPU maximal auslasten, während andere im Leerlauf sind. Der Cloud Run-CPU-Autoscaler misst die durchschnittliche CPU-Auslastung aller vCPUs. Die durchschnittliche CPU-Auslastung kann in diesem Szenario täuschend niedrig bleiben, was eine effektive CPU-basierte Skalierung verhindert.
- Skalierung mit Parallelität: Wenn das CPU-basierte Autoscaling aufgrund von vCPU-Hotspots ineffektiv ist, wird das Senken der maximalen Parallelität zu einem wichtigen Tool. vCPU-Hotspots treten häufig auf, wenn für eine Single-Thread-Anwendung aufgrund des hohen Arbeitsspeicherbedarfs mehrere vCPUs ausgewählt werden. Wenn Sie die Parallelität zum Skalieren verwenden, wird die Skalierung auf dem Anfragedurchsatz basiert. Dadurch werden mehr Instanzen gestartet, um die Last zu bewältigen, wodurch die Warteschlangen und die Latenz pro Instanz reduziert werden.
Wann Sie die Gleichzeitigkeit auf maximal eine Anfrage beschränken sollten.
Sie können die Gleichzeitigkeit beschränken, sodass an jede ausgeführte Instanz jeweils nur eine Anfrage gleichzeitig gesendet wird. Sie sollten dies in Fällen in Betracht ziehen, in denen Folgendes gilt:
- Für jede einzelne Anfrage wird der größte Teil der verfügbaren CPU benötigt bzw. des verfügbaren Arbeitsspeichers belegt.
- Ihr Container-Image ist nicht für die gleichzeitige Verarbeitung mehrerer Anfragen konzipiert, z. B. wenn Ihr Container auf den globalen Status angewiesen ist, der nicht von zwei Anfragen gemeinsam genutzt werden kann.
Eine Gleichzeitigkeit von 1 wirkt sich wahrscheinlich negativ auf die Skalierungsleistung aus, da bei einem sprunghaften Anstieg eingehender Anfragen viele Instanzen für deren Verarbeitung gestartet werden müssen. Weitere Informationen finden Sie unter Kompromisse zwischen Durchsatz, Latenz und Kosten.
Fallstudie
Die folgenden Messwerte zeigen einen Anwendungsfall, bei dem 400 Clients drei Anfragen pro Sekunde an einen Cloud Run-Dienst senden, für den die maximale Anzahl gleichzeitiger Anfragen pro Instanz auf 1 festgelegt ist. In der grünen oberen Zeile sind die Anfragen im Zeitablauf aufgeführt, in der unteren blauen Zeile ist die Anzahl der Instanzen angegeben, die mit der Verarbeitung der Anfragen begonnen haben.

Die folgenden Messwerte zeigen 400 Clients, die drei Anfragen pro Sekunde an einen Cloud Run-Dienst senden, für den die maximale Anzahl gleichzeitiger Anfragen pro Instanz auf 80 festgelegt ist. In der oberen grünen Zeile sind die Anfragen im Zeitablauf aufgeführt, in der unteren blauen Zeile ist die Anzahl der Instanzen angegeben, die mit der Verarbeitung der Anfragen begonnen haben. Beachten Sie, dass weit weniger Instanzen benötigt werden, um dasselbe Anfragevolumen zu verarbeiten.

Gleichzeitigkeit für Quellcodebereitstellungen
Wenn die Nebenläufigkeit aktiviert ist, bietet Cloud Run keine Isolation zwischen gleichzeitigen Anfragen, die von derselben Instanz verarbeitet werden. In solchen Fällen müssen Sie dafür sorgen, dass Ihr Code problemlos gleichzeitig ausgeführt werden kann. Sie können dies ändern, indem Sie einen anderen Wert für die Nebenläufigkeit festlegen. Wir empfehlen, mit einer niedrigen Nebenläufigkeit wie 8 zu beginnen und sie dann zu erhöhen. Wenn Sie mit einer zu hohen Nebenläufigkeit beginnen, kann dies aufgrund von Ressourceneinschränkungen wie Arbeitsspeicher oder CPU zu unerwünschtem Verhalten führen.
Sprachlaufzeiten können sich auch auf die Parallelität auswirken. Einige dieser sprachspezifischen Auswirkungen sind in der folgenden Liste aufgeführt:
Node.js ist von Natur aus Single-Threaded. Um die Gleichzeitigkeit zu nutzen, verwenden Sie den asynchronen Codestil von JavaScript, der in Node.js idiomatisch ist. Weitere Informationen finden Sie in der offiziellen Node.js-Dokumentation unter Asynchrone Ablaufsteuerung.
Bei Python 3.8 und höher sind für die Unterstützung einer hohen Parallelität pro Instanz genügend Threads erforderlich, um die Parallelität zu verarbeiten. Wir empfehlen, eine Laufzeit-Umgebungsvariable festzulegen, damit der Wert für die Threads dem Wert für die Parallelität entspricht, z. B.:
THREADS=8.
Nächste Schritte
Informationen zum Verwalten der maximalen Anzahl gleichzeitiger Anfragen pro Instanz Ihrer Cloud Run-Dienste finden Sie unter Maximale gleichzeitige Anfragen pro Instanz festlegen.
Informationen zum Optimieren der Einstellung der maximalen Anzahl gleichzeitiger Anfragen pro Instanz finden Sie unter Tipps für Entwickler: Gleichzeitigkeit optimieren.