Benutzerdefinierte Skalierungssteuerungen für Dienste konfigurieren

Standardmäßig optimiert Cloud Run die Leistung mit einem Auslastungsziel von 60% für CPU und Nebenläufigkeit und skaliert die Anzahl der Instanzen automatisch, um alle eingehenden Anfragen zu verarbeiten. In einigen Anwendungsfällen möchten Sie jedoch möglicherweise konfigurieren, welche Skalierungsfaktoren verwendet werden sollen, z. B. nur die CPU, und benutzerdefinierte Ziele für die Auslastung festlegen.

Cloud Run bietet Skalierungssteuerelemente, mit denen Sie das Skalierungsverhalten Ihres Dienstes besser kontrollieren und fundierte Entscheidungen zur Skalierung Ihrer Arbeitslast entsprechend Ihren Anforderungen treffen können. Sie können ein erweitertes Skalierungsverhalten aktivieren, indem Sie die Standardziele für die Auslastung beibehalten oder die folgenden benutzerdefinierten Ziele für die Auslastung konfigurieren:

  • Zielauslastung für die CPU-basierte Skalierung
  • Zielauslastung für die Skalierung basierend auf der Nebenläufigkeit

Mit Skalierungssteuerelementen können Sie Kosten optimieren und die Vorhersagbarkeit für Ihre Dienste verbessern. Weitere Informationen zum standardmäßigen Autoscaling Verhalten von Cloud Run-Diensten finden Sie unter Autoscaling von Instanzen in Cloud Run-Diensten.

Konfigurationsbeschränkungen

Die folgenden Beschränkungen gelten für benutzerdefinierte Skalierungsziele:

Skalierungstreiber Standardeinstellung % Konfigurierbarer Mindestwert in % Konfigurierbarer Höchstwert in %
CPU target utilization 60% 10% 95%
Concurrency target utilization 60% 10% 95%

Erweitertes Skalierungsverhalten aktivieren

Der Autoscaler von Cloud Run reagiert genau auf die von Ihnen konfigurierten Ziele, auch bei Diensten mit einer geringen Anzahl von Instanzen. Sie sollten diese Funktion aktivieren, um die Vorhersagbarkeit der Skalierung zu verbessern, auch wenn Sie die Standardziele für die Auslastung von 60% für CPU und Nebenläufigkeit beibehalten möchten.

Sie können die Funktion über die gcloud CLI oder YAML aktivieren, wenn Sie eine neue Überarbeitung bereitstellen.

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

gcloud

Legen Sie die Werte für die Ziel-CPU-Auslastung und die Zielauslastung der Nebenläufigkeit einer bestimmten Version fest, indem Sie den folgenden Befehl gcloud beta run services update ausführen:

gcloud beta run services update SERVICE --scaling-cpu-target=0.6 \
--scaling-concurrency-target=0.6

Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.

YAML

  1. Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Fügen Sie die Attribute run.googleapis.com/scaling-cpu-target und run.googleapis.com/scaling-concurrency-target hinzu.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-cpu-target: '0.6'
            run.googleapis.com/scaling-concurrency-target: '0.6'

    Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.

  3. Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:

    gcloud run services replace service.yaml

    Der Befehl gcloud run services replace verwendet standardmäßig die Datei service.yaml, falls vorhanden.

Benutzerdefinierte Ziele konfigurieren

Definieren Sie benutzerdefinierte Ziele für die Auslastung, um die Kosten zu optimieren oder die Leistung für Ihre Arbeitslasten zu verbessern, indem Sie bestimmte Ziele für die CPU- und Gleichzeitigkeitsauslastung innerhalb der Konfigurationsbeschränkungen konfigurieren.

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

Sie können Skalierungssteuerelemente über die gcloud CLI oder YAML konfigurieren, wenn Sie eine neue Überarbeitung bereitstellen.

gcloud

Aktualisieren Sie die Werte für die Ziel-CPU-Auslastung und die Zielauslastung der Nebenläufigkeit einer bestimmten Version, indem Sie den Befehl gcloud beta run services update ausführen.

  • Führen Sie den folgenden Befehl aus, um die Ziel-CPU-Auslastung zu aktualisieren:

    gcloud beta run services update SERVICE --scaling-cpu-target=CPU_TARGET

    Ersetzen Sie Folgendes:

    • SERVICE: der Name Ihres Dienstes.

    • CPU_TARGET: das Ziel für die CPU-Auslastung. Geben Sie einen Wert zwischen 0,1 und 0,95 an. Sie können maximal zwei Ziffern nach dem Dezimalzeichen konfigurieren.

  • Führen Sie den folgenden Befehl aus, um die Zielauslastung der Nebenläufigkeit zu aktualisieren:

    gcloud beta run services update SERVICE --scaling-concurrency-target=CONCURRENCY_TARGET

    Ersetzen Sie Folgendes:

    • SERVICE: der Name Ihres Dienstes.

    • CONCURRENCY_TARGET: das Ziel für die Auslastung der Nebenläufigkeit. Geben Sie einen Wert zwischen 0,1 und 0,95 an. Sie können maximal zwei Ziffern nach dem Dezimalzeichen konfigurieren.

  • Führen Sie den folgenden Befehl aus, um sowohl die Ziel-CPU als auch die Auslastung der Nebenläufigkeit zu aktualisieren:

    gcloud beta run services update SERVICE --scaling-cpu-target=CPU_TARGET \
    --scaling-concurrency-target=CONCURRENCY_TARGET

    Ersetzen Sie Folgendes:

    • SERVICE: der Name Ihres Dienstes.
    • CPU_TARGET: das Ziel für die CPU-Auslastung. Geben Sie einen Wert zwischen 0,1 und 0,95 an. Sie können maximal zwei Ziffern nach dem Dezimalzeichen konfigurieren.
    • CONCURRENCY_TARGET: das Ziel für die Auslastung der Nebenläufigkeit. Geben Sie einen Wert zwischen 0,1 und 0,95 an. Sie können maximal zwei Ziffern nach dem Dezimalzeichen konfigurieren.

YAML

  1. Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Fügen Sie die Attribute run.googleapis.com/scaling-cpu-target und run.googleapis.com/scaling-concurrency-target hinzu, um die Ziel-CPU-Auslastung und die Zielauslastung der Nebenläufigkeit zu aktualisieren:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-cpu-target: 'CPU_TARGET'
            run.googleapis.com/scaling-concurrency-target: 'CONCURRENCY_TARGET'

    Ersetzen Sie Folgendes:

    • SERVICE: der Name Ihres Dienstes.
    • CPU_TARGET: das Ziel für die CPU-Auslastung. Geben Sie einen Wert zwischen 0,1 und 0,95 an. Sie können maximal zwei Ziffern nach dem Dezimalzeichen konfigurieren.
    • CONCURRENCY_TARGET: das Ziel für die Auslastung der Nebenläufigkeit. Geben Sie einen Wert zwischen 0,1 und 0,95 an. Sie können maximal zwei Ziffern nach dem Dezimalzeichen konfigurieren.
  3. Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:

    gcloud run services replace service.yaml

    Der Befehl gcloud run services replace verwendet standardmäßig die Datei service.yaml, falls vorhanden.

Skalierungssteuerelemente deaktivieren

Sie können entweder die Ziele für die CPU-Auslastung oder die Ziele für die Auslastung der Nebenläufigkeit deaktivieren, aber nicht beide. Ein Skalierungstreiber muss immer aktiv sein. Wenn Sie die Skalierungs steuerelemente deaktivieren möchten, stellen Sie die Standardwerte für die Auslastung wieder her anstatt sie zu deaktivieren. Wenn Sie einen Skalierungstreiber deaktivieren, ignoriert Cloud Run diesen Messwert bei der Entscheidung zur Skalierung.

Sie können Skalierungssteuerelemente über die gcloud CLI oder YAML deaktivieren, wenn Sie eine neue Überarbeitung bereitstellen.

gcloud

Sie können entweder die Ziel-CPU-Auslastung oder die Zielauslastung der Nebenläufigkeit deaktivieren, indem Sie den Befehl gcloud beta run services update ausführen.

  • Wenn Sie nur anhand der CPU skalieren möchten, deaktivieren Sie das Ziel für die Nebenläufigkeit mit dem folgenden Befehl:

    gcloud beta run services update SERVICE --scaling-concurrency-target=disabled

    Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.

  • Wenn Sie nur anhand der Nebenläufigkeit skalieren möchten, deaktivieren Sie das Ziel für die CPU mit dem folgenden Befehl:

    gcloud beta run services update SERVICE --scaling-cpu-target=disabled

    Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.

YAML

  1. Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Wenn Sie nur anhand der CPU skalieren möchten, deaktivieren Sie das Ziel für die Nebenläufigkeit, indem Sie das Attribut run.googleapis.com/scaling-concurrency-target auf disabled setzen:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-concurrency-target: disabled

    Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.

  3. Wenn Sie nur anhand der Nebenläufigkeit skalieren möchten, deaktivieren Sie das Ziel für die CPU, indem Sie das Attribut run.googleapis.com/scaling-cpu-target auf disabled setzen:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/scaling-cpu-target: disabled

    Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.

  4. Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:

    gcloud run services replace service.yaml

    Der Befehl gcloud run services replace verwendet standardmäßig die Datei service.yaml, falls vorhanden.

Auf Standardwerte zurücksetzen

Wenn Sie die Werte für die Ziel-CPU-Auslastung oder die Zielauslastung der Nebenläufigkeit auf die Standardwerte zurücksetzen, deaktivieren Sie die Funktion für die Skalierungssteuerelemente. Sie können die Skalierungs steuerelemente über die gcloud CLI oder YAML auf die Standardwerte zurücksetzen, wenn Sie eine neue Überarbeitung bereitstellen.

gcloud

Setzen Sie die Ziel-CPU-Auslastung und die Zielauslastung der Nebenläufigkeit auf die Standardwerte zurück, indem Sie den Befehl gcloud beta run services update ausführen.

  • Führen Sie den folgenden Befehl aus, um die Ziel-CPU-Auslastung auf den Standardwert zurückzusetzen:

    gcloud beta run services update SERVICE --scaling-cpu-target=default

    Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.

  • Führen Sie den folgenden Befehl aus, um die Zielauslastung der Nebenläufigkeit auf den Standardwert zurückzusetzen:

    gcloud beta run services update SERVICE --scaling-concurrency-target=default

    Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.

  • Führen Sie den folgenden Befehl aus, um sowohl die Ziel-CPU-Auslastung als auch die Zielauslastung der Nebenläufigkeit auf die Standardwerte zurückzusetzen:

    gcloud beta run services update SERVICE --scaling-cpu-target=default \
    --scaling-concurrency-target=default

    Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.

YAML

  1. Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Wenn Sie die CPU- und Nebenläufigkeitsauslastung auf die Standardziele wiederherstellen möchten, entfernen Sie die Attribute run.googleapis.com/scaling-cpu-target und run.googleapis.com/scaling-concurrency-target aus Ihrer YAML-Datei:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          # Remove the scaling target annotations to restore defaults
        ...

    Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.

  3. Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:

    gcloud run services replace service.yaml

    Der Befehl gcloud run services replace verwendet standardmäßig die Datei service.yaml, falls vorhanden.

Skalierungskonfiguration ansehen

Sie können Ihre Skalierungskonfiguration über die gcloud CLI oder YAML ansehen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Dienste für Cloud Run auf:

    Zu Cloud Run

  2. Klicken Sie auf Ihren Dienst, um den Bereich Dienstdetails zu öffnen.

  3. Klicken Sie auf den Tab Überarbeitungen.

  4. Im Detailbereich auf der rechten Seite sehen Sie die Einstellung Autoscaling-Messwerte auf dem Tab Container.

gcloud

  1. Verwenden Sie den folgenden Befehl:

    gcloud run services describe SERVICE

    Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.

  2. Suchen Sie in der zurückgegebenen Konfiguration nach den Werten für die Einstellungen Ziel-CPU-Auslastung und Zielauslastung der Nebenläufigkeit.

Best Practices

Sie können Kosten optimieren und eine Überskalierung verhindern, indem Sie die Anzahl der Instanzen verringern. Alternativ können Sie die Leistung verbessern, indem Sie aggressiver skalieren, wenn bestimmte Treiber auftreten. Verwenden Sie die folgenden Strategien, um die optimalen Ziele für die Auslastung für Ihre Arbeitslast zu ermitteln:

  • Bevor Sie Ziele anpassen, ermitteln Sie, welcher Messwert die Skalierung Ihres Dienstes auslöst. So ermitteln Sie den Skalierungsmesswert:

    1. Rufen Sie in der Google Cloud Console den Metrics Explorer auf, um das Monitoring-Diagramm für Ihre CPU- und Gleichzeitigkeitsauslastung zu sehen.

    2. Suchen Sie nach dem Messwert run.googleapis.com/scaling/recommended_instances und wählen Sie ihn aus. Setzen Sie Aggregation auf Nicht aggregiert , um den Messwert nach Skalierungstreiber zu gruppieren.

    Der Treiber mit dem höchsten Wert steuert die Anzahl der Instanzen Ihres Dienstes. Wenn ein anderer Treiber Priorität haben soll oder Sie aggressiver oder weniger aggressiv skalieren möchten, passen Sie das Ziel für die Auslastung für diesen bestimmten Treiber an.

  • Passen Sie die Ziele schrittweise an und warten Sie einige Minuten zwischen den Anpassungen, um die Auswirkungen auf die Leistung zu beobachten.

  • Verwenden Sie Traffic-Aufteilung, um neue Skalierungsziele zu testen, indem Sie einen kleinen Prozentsatz Ihres Traffics an eine separate Überarbeitung weiterleiten, bevor Sie sie für Ihren gesamten Dienst einführen.

Ziele für niedrige Auslastung

Wenn Sie das Ziel für die Auslastung auf den Mindestwert von 0,1 (10%) senken, ändert sich die Skalierung Ihres Dienstes erheblich.

Vorteile der Festlegung eines niedrigen Ziels für die Auslastung:

  • Hohe Dienstverfügbarkeit: Ihr Dienst wird viel früher skaliert und behält einen großen Puffer an inaktiver Kapazität bei, um plötzliche Traffic-Spitzen ohne Latenzprobleme zu bewältigen.

  • Schnellere Skalierung bei geringer Anzahl von Instanzen: Dienste werden zuverlässiger skaliert, bevor es zu Engpässen bei hoher Auslastung kommt.

Nachteile der Festlegung niedriger Ziele für die Auslastung:

  • Mögliche Kostensteigerung: Sie führen mehr Instanzen aus als für die aktuelle Last unbedingt erforderlich, was zu höheren Kosten führt.
  • Häufigere Skalierungsentscheidungen: Bei geringerer Auslastung hat Cloud Run eine geringere Toleranz und wartet nicht so lange, bevor es skaliert.

Nächste Schritte