Maximale Anzahl gleichzeitiger Anfragen für Dienste

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 maximal 1.000 erhöhen. Standardmäßig haben Cloud Run-Instanzen, die mit der Google Cloud CLI oder Terraform bereitgestellt werden, eine maximale Nebenläufigkeit, die dem 80-Fachen der Anzahl der vCPUs entspricht. Diese Standardeinstellung gilt nur, wenn ein neuer Dienst erstellt wird, nicht für nachfolgende Bereitstellungen einer Überarbeitung. Cloud Run-Instanzen, die mit der Google Cloud Console bereitgestellt werden, haben standardmäßig eine Nebenläufigkeit von 80.

Sie sollten für die Nebenläufigkeit zwar den Standardwert verwenden, können bei Bedarf aber die maximale Nebenläufigkeit verringern. Wenn Ihr Code beispielsweise keine parallelen Anfragen verarbeiten kann, setzen Sie die Nebenläufigkeit auf 1.

Der angegebene Gleichzeitigkeitswert ist ein Maximalwert. 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 Nebenläufigkeit nicht genutzt wird. Wenn beispielsweise die hohe CPU-Auslastung anhält, wird stattdessen möglicherweise die Anzahl der Instanzen erhöht.

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:

Maximale Anzahl gleichzeitiger Anfragen pro Instanz

Kostengesichtspunkte

Wenn mehr Instanzen Anfragen verarbeiten, weist Cloud Run mehr CPU und Arbeitsspeicher zu, was zu höheren Kosten führt. Mit einer höheren Gleichzeitigkeitseinstellung können weniger Instanzen dasselbe Anfragevolumen verarbeiten, was die Kosten senken kann. Der Anwendungscode muss jedoch in der Lage sein, parallele Anfragen effizient zu verarbeiten. Weitere Informationen finden Sie unter Nebenläufigkeit für Autoscaling und Ressourcennutzung optimieren.

Weitere Informationen finden Sie unter Cloud Run-Preise oder Kosten mit dem Preisrechner schätzen.

Nebenläufigkeit für Autoscaling und Ressourcennutzung optimieren

Das Anpassen der maximalen Nebenläufigkeit pro Instanz hat erhebliche Auswirkungen darauf, wie Ihr Dienst skaliert und Ressourcen nutzt.

  • Niedrigere Nebenläufigkeit: Erzwingt, dass Cloud Run mehr Instanzen für dasselbe Anfragevolumen verwendet, da jede Instanz weniger Anfragen verarbeitet. Dies kann die Reaktionsfähigkeit von Anwendungen verbessern, die nicht für eine hohe interne Parallelität optimiert sind, oder von Anwendungen, die Sie basierend auf der Anfragelast schneller skalieren möchten.
  • Höhere Nebenläufigkeit: Ermöglicht es jeder Instanz, mehr Anfragen zu verarbeiten, was möglicherweise zu weniger aktiven Instanzen und niedrigeren Kosten führt. Dies eignet sich für Anwendungen, die parallele E/A-gebundene Aufgaben effizient ausführen können, oder für Anwendungen, die mehrere vCPUs wirklich für die gleichzeitige Anfragenverarbeitung nutzen können.

Beginnen Sie mit der Standardgleichzeitigkeit, beobachten Sie die Leistung und Nutzung Ihrer Anwendung genau und passen Sie sie bei Bedarf an.

Gleichzeitigkeit bei Instanzen mit mehreren vCPUs

Das Optimieren der Nebenläufigkeit 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-Threaded-Anwendung auf einer Instanz mit mehreren vCPUs kann eine vCPU maximal auslasten, während die anderen inaktiv sind. Das CPU-Autoscaling von Cloud Run misst die durchschnittliche CPU-Auslastung über alle vCPUs hinweg. Die durchschnittliche CPU-Auslastung kann in diesem Szenario trügerisch niedrig bleiben, was eine effektive CPU-basierte Skalierung verhindert.
  • Nebenläufigkeit zur Steuerung der Skalierung verwenden: Wenn das CPU-basierte Autoscaling aufgrund von vCPU-Hotspots ineffektiv ist, wird das Verringern der maximalen Nebenläufigkeit zu einem wichtigen Tool. vCPU-Hotspots treten häufig auf, wenn mehrere vCPUs für eine Single-Threaded-Anwendung aufgrund eines hohen Arbeitsspeicherbedarfs ausgewählt werden. Wenn Sie die Nebenläufigkeit zur Steuerung der Skalierung verwenden, wird die Skalierung basierend auf dem Anfragendurchsatz erzwungen. So werden mehr Instanzen gestartet, um die Last zu bewältigen, wodurch die Warteschlangenbildung und die Latenz pro Instanz reduziert werden.

Wann Sie die Nebenläufigkeit 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 Nebenläufigkeit 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 Überlegungen finden Sie unter Durchsatz im Vergleich zu Latenz und Kompromissen.

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.

Gleichzeitigkeit auf 1 festgelegt

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 auf 80 festgelegt

Nebenläufigkeit 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 gleichzeitig ausgeführt werden kann. Sie können dies ändern, indem Sie einen anderen Gleichzeitigkeitswert 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.

Auch die Sprachlaufzeiten können sich auf die Nebenläufigkeit 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 Nebenläufigkeit pro Instanz genügend Threads erforderlich, um die Nebenläufigkeit zu verarbeiten. Wir empfehlen, dass Sie eine Laufzeit-Umgebungsvariable festlegen damit der Wert für die Threads dem Wert für die Nebenläufigkeit 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: Nebenläufigkeit optimieren.