CPU-Zuordnung (Dienste)

Standardmäßig werden Cloud Run-Instanzen nur während der Anfrageverarbeitung, des Containerstarts und des Herunterfahrens zugewiesen. (Weitere Informationen finden Sie unter Instanzlebenszyklus). Sie können dieses Verhalten ändern, sodass die CPU immer zugewiesen und verfügbar ist, auch wenn keine eingehenden Anfragen vorhanden sind. Die Einstellung, dass die CPU immer zugewiesen wird, kann für die Ausführung von kurzlebigen Hintergrundaufgaben und anderen asynchronen Verarbeitungsaufgaben nützlich sein.

Abbildung der CPU-Zuordnungsmodi

Selbst wenn die CPU immer zugewiesen ist, ist das Autoscaling von Cloud Run noch in Kraft und kann Instanzen beenden, wenn sie nicht für die Verarbeitung des eingehenden Traffics oder der aktuellen CPU-Auslastung außerhalb von Anfragen benötigt werden. Eine Instanz bleibt nach der Verarbeitung einer Anfrage nie länger als 15 Minuten inaktiv, es sei denn, sie bleibt mit Mindestinstanzen aktiv.

Die Kombination von CPU, die immer mit einer Reihe von Mindestinstanzen zugewiesen wird, führt dazu, dass eine Reihe von Instanzen mit vollem Zugriff auf CPU-Ressourcen ausgeführt wird. Dadurch werden Hintergrundprozess-Anwendungsfälle ermöglicht. Wenn Sie dieses Muster verwenden, wendet Cloud Run das Instanz-Autoscaling auch dann an, wenn ein Dienst CPU außerhalb von Anfragen verwendet.

Wenn Sie Systemdiagnoseprüfungen verwenden, wird die CPU für jede Prüfung zugewiesen. Weitere Informationen finden Sie unter Systemdiagnoseprüfungen für Container.

Auswirkungen auf die Kosten

Wenn Sie die CPU auswählen, die nur während der Anfrageverarbeitung zugewiesen werden soll, werden Ihnen die Kosten pro Anfrage in Rechnung gestellt und nur dann, wenn die Instanze eine Anfrage verarbeitet. Wenn Sie die Einstellung "Immer zugewiesene CPU" auswählen, wird Ihnen der gesamte Lebenszyklus der Instanz in Rechnung gestellt. Weitere Informationen finden Sie in den Cloud Run-Preistabellen.

Der Recommender von Google prüft automatisch den Traffic, der von Ihrem Cloud Run-Dienst im letzten Monat empfangen wurde, und empfiehlt die Umstellung von während Anfragen zugewiesene CPU auf CPU immer zugewiesen, wenn dies günstiger ist.

Geeignete CPU-Zuordnung auswählen

Die Auswahl der geeigneten CPU-Zuordnung für Ihren Anwendungsfall hängt von mehreren Faktoren ab, z. B. Trafficmuster, Hintergrundausführung und Kosten. Alle Faktoren werden in den folgenden Abschnitten beschrieben.

Überlegungen zu Trafficmustern

  • Es wird empfohlen, die CPU nur während der Verarbeitung von Anfragen zuzuweisen, wenn der eingehende Traffic sporadisch, stoßweise oder in kurzen Abständen auftritt.
  • CPU immer zugewiesen wird empfohlen, wenn eingehender Traffic stabil ist und nur langsam variiert.

Überlegungen zur Hintergrundausführung

Wenn Sie CPU immer zugewiesen auswählen, können Sie nach der Rückgabe von Antworten kurzlebige Hintergrundaufgaben und andere asynchrone Verarbeitungsaufgaben ausführen. Beispiel:

  • Nutzung von Monitoring-Agents wie OpenTelemetry, die im Hintergrund laufen können.
  • Go-Routinen von Go, asynchrone Node.js, Java-Threads und Kotlin-Ko-Routinen verwenden.
  • Anwendungs-Frameworks, die integrierte Planungs-/Hintergrundfunktionen nutzen.

Inaktive Instanzen, einschließlich solcher, die mithilfe von Mindestinstanzen einsatzbereit gehalten werden, können jederzeit heruntergefahren werden. Wenn Sie ausstehende Aufgaben ausführen müssen, bevor der Container beendet wird, können Sie SIGTERM abschließen, um einer Instanz 10 Sekunden Zeit zu geben, bevor sie angehalten wird.

Ziehen Sie die Verwendung von Cloud Tasks für die Ausführung asynchroner Aufgaben in Betracht. Cloud Tasks wiederholt fehlgeschlagene Aufgaben automatisch und unterstützt Laufzeiten von bis zu 30 Minuten.

Kostengesichtspunkte

Wenn Sie derzeit CPU nur während der Verarbeitung von Anfragen zuweisen nutzen, ist es wahrscheinlich wirtschaftlicher, wenn CPU immer zugewiesen verwenden:

  • Ihr Cloud Run-Dienst verarbeitet eine hohe Anzahl aktueller Anfragen mit einer relativ konstanten Rate.
  • Wenn Sie sich den Messwert „Anzahl der Instanzen“ ansehen, werden nicht viele „inaktive“ Instanzen angezeigt.

Mit dem Preisrechner können Sie die Kostenunterschiede schätzen.

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 Mindestinstanzen > 0 festlegen oder eine „Aktivierungsanfrage“ in Ihr Design aufnehmen, 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.

CPU-Zuordnung festlegen und aktualisieren

Jede Konfigurationsänderung führt zur Erstellung einer neuen Überarbeitung. Für nachfolgende Überarbeitungen gilt automatisch dieselbe Konfigurationseinstellung, sofern Sie sie nicht explizit aktualisieren.

Wenn Sie die immer zugewiesene CPU-Option auswählen, müssen Sie mindestens 512 MiB Speicher angeben.

Standardmäßig wird die CPU nur während der Anfrageverarbeitung pro Containerinstanz zugewiesen. Sie können diese Einstellung über die Google Cloud Console, die gcloud-Befehlszeile oder eine YAML-Datei ändern, wenn Sie einen neuen Dienst erstellen oder eine neue Überarbeitung bereitstellen:

Console

  1. Rufen Sie in der Google Cloud Console Cloud Run auf.

    Öffnen Sie Cloud Run.

  2. Klicken Sie auf Dienst erstellen, wenn Sie einen neuen Dienst für die Bereitstellung konfigurieren. Wenn Sie einen vorhandenen Dienst konfigurieren möchten, klicken Sie auf den Dienst und dann auf Neue Überarbeitung bearbeiten und bereitstellen.

  3. Wenn Sie einen neuen Dienst konfigurieren, füllen Sie die Seite mit den anfänglichen Diensteinstellungen wie gewünscht aus und klicken Sie dann auf Container, Netzwerk, Sicherheit, um die Seite zur Dienstkonfiguration zu maximieren.

  4. Klicken Sie auf den Tab Container.

    Image

    • Wählen Sie die gewünschte CPU-Zuordnung unter CPU-Zuordnung und -Preise aus. Wählen Sie CPU wird nur während der Anfrageverarbeitung zugewiesen aus, damit Ihre Instanzen die CPU nur erhalten, wenn sie Anfragen empfangen. Wählen Sie CPU immer zugewiesen aus, um die CPU für die gesamte Lebensdauer von Instanzen zuzuweisen.
  5. Klicken Sie auf Erstellen oder Bereitstellen.

Befehlszeile

Sie können die CPU-Zuordnung aktualisieren. So legen Sie fest, dass CPUs immer für einen bestimmten Dienst zugewiesen werden:

gcloud run services update SERVICE --no-cpu-throttling 

Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.

So wählen Sie die CPU-Zuordnung nur während der Anfrageverarbeitung:

gcloud run services update SERVICE --cpu-throttling 

Sie können die CPU-Zuordnung auch während der Bereitstellung festlegen. So legen Sie CPUs fest, die immer zugewiesen werden sollen:

gcloud run deploy --image IMAGE_URL --no-cpu-throttling

So wählen Sie die CPU-Zuordnung nur während der Anfrageverarbeitung:

gcloud run deploy --image IMAGE_URL --cpu-throttling

Ersetzen Sie IMAGE_URL durch einen Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest. Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat die Form REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

YAML

Sie können vorhandene Dienstkonfigurationen mit dem Befehl gcloud run services describe --format export herunterladen und aufrufen, was bereinigte Ergebnisse im YAML-Format liefert. Anschließend können Sie die unten beschriebenen Felder ändern und die geänderte YAML-Datei mit dem Befehl gcloud run services replace hochladen. Achten Sie darauf, dass Sie die Felder nur wie dokumentiert ändern.

  1. So rufen Sie die Konfiguration auf und laden sie herunter:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aktualisieren Sie das Attribut cpu:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/cpu-throttling: 'BOOLEAN'
          name: REVISION

    Ersetzen

    • SERVICE durch den Namen Ihres Cloud Run-Dienstes
    • BOOLEAN durch true, um die CPU-Zuordnung nur während der Anfrageverarbeitung festzulegen, oder false, um die CPU auf „Immer zugewiesen“ festzulegen.
    • REVISION durch einen neuen Überarbeitungsnamen oder löschen (falls vorhanden). Wenn Sie einen neuen Überarbeitungsnamen angeben, muss er die folgenden Kriterien erfüllen:
      • Beginnt mit SERVICE-
      • Enthält nur Kleinbuchstaben, Ziffern und -
      • Endet nicht mit -
      • Darf nicht mehr als 63 Zeichen enthalten
  3. Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:

    gcloud run services replace service.yaml

Terraform

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

Fügen Sie einer google_cloud_run_v2_service-Ressource in Ihrer Terraform-Konfiguration unter template.containers.resources Folgendes hinzu:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-cpu-allocation"
  location = "us-central1"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        # If true, garbage-collect CPU when once a request finishes
        cpu_idle = false
      }
    }
  }
}

CPU-Zuordnungseinstellungen aufrufen

So rufen Sie die aktuellen Einstellungen der CPU-Zuordnung für Ihren Cloud Run-Dienst auf:

Console

  1. Rufen Sie in der Google Cloud Console Cloud Run auf.

    Öffnen Sie Cloud Run.

  2. Klicken Sie auf den gewünschten Dienst, um die Seite Dienstdetails zu öffnen.

  3. Klicken Sie auf den Tab Überarbeitungen.

  4. Im Detailbereich auf der rechten Seite ist die CPU-Zuordnungseinstellung auf dem Tab Container aufgelistet.

Befehlszeile

  1. Verwenden Sie den folgenden Befehl:

    gcloud run services describe SERVICE
  2. Suchen Sie in der zurückgegebenen Konfiguration nach der CPU-Zuordnungseinstellung.