Gleichzeitigkeit

Cloud Run-Funktionen unterstützen die Verarbeitung mehrerer gleichzeitiger Anfragen auf einer einzelnen Funktionsinstanz. Dies kann hilfreich sein, um Kaltstarts zu verhindern, da eine bereits vorbereitete Instanz mehrere Anfragen gleichzeitig verarbeiten kann, wodurch die Gesamtlatenz verringert wird.

Wenn die Nebenläufigkeit aktiviert ist, bieten Cloud Run-Funktionen keine Isolation zwischen gleichzeitigen Anfragen, die von derselben Funktionsinstanz verarbeitet werden. In solchen Fällen müssen Sie dafür sorgen, dass Ihr Funktionscode problemlos gleichzeitig ausgeführt werden kann. Beachten Sie bei den folgenden Sprachlaufzeiten die folgenden Hinweise:

  • 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.

  • 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.

  • Bei Python 3.8 und höher sind für die Unterstützung einer hohen Parallelität pro Funktionsinstanz 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.

Standardmäßig verarbeiten Funktionsinstanzen jeweils nur eine Anfrage. Sie können dieses Verhalten pro Funktion ändern. Dazu legen Sie einen Nebenläufigkeitswert fest, wie im nächsten Abschnitt beschrieben.

Nebenläufigkeitswert festlegen

Der Standardwert für die Nebenläufigkeit ist 1. Sie können den Nebenläufigkeitswert einer Funktion festlegen, um den Standardwert zu überschreiben. Der Nebenläufigkeitswert stellt die maximale Anzahl gleichzeitiger Anfragen dar, die eine einzelne Instanz der Funktion verarbeiten kann.

Ein Nebenläufigkeitswert größer als 1 führt dazu, dass Ihr Funktionscode gleichzeitig auf einer einzelnen Instanz ausgeführt wird. Der maximale Nebenläufigkeitswert ist 1.000. Wir empfehlen jedoch, mit einem niedrigeren Wert zu beginnen und nach oben zu arbeiten. Wenn Sie einen Nebenläufigkeitswert größer als 1 festlegen möchten, muss die Funktion eine oder mehrere vCPUs haben. Weitere Informationen zu den Standardspeicher- und vCPU-Werten finden Sie unter Speicherlimits.

Sie können Nebenläufigkeit für eine Funktion auf eine der folgenden Arten festlegen:

Nebenläufigkeit mit Cloud Run-Funktionen festlegen

gcloud

Sie können einen Wert für die Nebenläufigkeit mit der gcloud CLI festlegen. Dazu stellen Sie eine Funktion mit dem Flag --concurrency bereit:

gcloud functions deploy YOUR_FUNCTION_NAME \
--gen2 \
--concurrency=CONCURRENCY_VALUE \
FLAGS...

CONCURRENCY_VALUE ist dabei die maximale Anzahl nebenläufiger Anfragen, die pro Containerinstanz zulässig sind. Lassen Sie die Nebenläufigkeit unbestimmt, um den Standardwert des Servers zu erhalten.

Console

So legen Sie einen Nebenläufigkeitswert mithilfe der Google Cloud Console fest:

  1. Gehen Sie zur Übersichtsseite "Cloud Run-Funktionen" in der Google Cloud Console:
  2. Klicken Sie auf den Namen der Funktion, um ihre Seite Funktionsdetails aufzurufen.
  3. Klicken Sie auf Bearbeiten.
  4. Maximieren Sie am Ende der Seite den Abschnitt Laufzeit, Build... und klicken Sie auf den Tab Laufzeit.
  5. Geben Sie unter Nebenläufigkeit einen Nebenläufigkeitswert in das Feld Maximale Anzahl gleichzeitiger Anfragen pro Instanz ein.
  6. Klicken Sie auf Weiter.
  7. Klicken Sie auf Bereitstellen.

    Dies ist ein erforderlicher Schritt, damit Ihre Änderungen wirksam werden.

Nebenläufigkeit mit Cloud Run festlegen

gcloud

Zum Festlegen eines Gleichzeitigkeitswerts mit der gcloud-CLI aktualisieren Sie den zugrunde liegenden Cloud Run-Dienst und geben Sie das Flag --concurrency an:

gcloud run services update YOUR_FUNCTION_NAME --concurrency CONCURRENCY_VALUE

CONCURRENCY_VALUE ist dabei die maximale Anzahl nebenläufiger Anfragen, die pro Containerinstanz zulässig sind. Lassen Sie die Nebenläufigkeit unbestimmt, um den Standardwert des Servers zu erhalten.

Console

So legen Sie einen Nebenläufigkeitswert mithilfe der Google Cloud Console fest:

  1. Gehen Sie zur Übersichtsseite "Cloud Run-Funktionen" in der Google Cloud Console:
  2. Klicken Sie auf den Namen der Funktion, um ihre Seite Funktionsdetails aufzurufen.
  3. Klicken Sie im Bereich Auf Basis von Cloud Run auf den Namen Ihrer Funktion, um zur Seite Dienstdetails des zugrunde liegenden Cloud Run-Dienstes zu gelangen.
  4. Klicken Sie oben auf der Seite auf Neue Überarbeitung bearbeiten und bereitstellen.
  5. Öffnen Sie den Tab Container.
  6. Geben Sie einen Nebenläufigkeitswert in das Feld Maximale Anzahl gleichzeitiger Anfragen pro Instanz ein.

    Wenn der von Ihnen für Maximale gleichzeitige Anfragen pro Instanz angegebene Wert größer als 1 ist, scrollen Sie auf der Seite nach unten und öffnen Sie den Abschnitt Container. Achten Sie darauf, dass das CPU-Feld einen Wert von 1 oder höher enthält.

  7. Klicken Sie auf Bereitstellen.

    Dies ist ein erforderlicher Schritt, damit Ihre Änderungen wirksam werden.

Cloud Run-Funktionen basieren auf der Nebenläufigkeitsunterstützung von Cloud Run. Weitere Informationen finden Sie in der Cloud Run-Dokumentation unter Maximale Anzahl gleichzeitiger Anfragen pro Instanz (Dienste).