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 Fä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 Skalierungssteuerungen, mit denen Sie mehr Kontrolle über das Skalierungsverhalten Ihres Dienstes haben. So können Sie fundierte Entscheidungen zur Skalierung Ihrer Arbeitslast entsprechend Ihren Anforderungen treffen. Sie können das erweiterte 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 auf Nebenläufigkeit basierende Skalierung
Mit Skalierungssteuerungen können Sie die Kosten optimieren und die Vorhersagbarkeit Ihrer Dienste verbessern. Weitere Informationen zum Standardverhalten beim Autoscaling von Cloud Run-Diensten finden Sie unter Instanz-Autoscaling in Cloud Run-Diensten.
Konfigurationsbeschränkungen
Für benutzerdefinierte Skalierungsziele gelten die folgenden Beschränkungen:
| Skalierungsfaktor | Standardeinstellung % | Minimal konfigurierbarer Prozentsatz | Maximal konfigurierbarer Prozentsatz |
|---|---|---|---|
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. Es empfiehlt sich, diese Funktion zu aktivieren, um die Skalierung besser vorhersagen zu können, auch wenn Sie die standardmäßigen Auslastungsziele von 60% für CPU und Parallelität 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 CPU-Zielauslastung und Zielauslastung für Parallelität einer bestimmten Revision fest, indem Sie den folgenden gcloud beta run services update-Befehl 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
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
Fügen Sie die Attribute
run.googleapis.com/scaling-cpu-targetundrun.googleapis.com/scaling-concurrency-targethinzu.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.
Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:
gcloud run services replace service.yaml
Benutzerdefinierte Ziele konfigurieren
Sie können benutzerdefinierte Auslastungsziele definieren, um die Kosten zu optimieren oder die Leistung Ihrer Arbeitslasten zu verbessern. Dazu konfigurieren Sie bestimmte CPU- und Parallelitätsauslastungsziele innerhalb der Konfigurationslimits.
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 Skalierungssteuerungen mit der gcloud CLI oder YAML konfigurieren, wenn Sie eine neue Überarbeitung bereitstellen.
gcloud
Aktualisieren Sie die Werte für die CPU-Zielauslastung und die Zielauslastung für 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 für die 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 Nutzung 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 Nutzung 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 Nutzung 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
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
Fügen Sie die Attribute
run.googleapis.com/scaling-cpu-targetundrun.googleapis.com/scaling-concurrency-targethinzu, um die Ziel-CPU- und Nebenläufigkeitsauslastung 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 Nutzung der Nebenläufigkeit. Geben Sie einen Wert zwischen 0,1 und 0,95 an. Sie können maximal zwei Ziffern nach dem Dezimalzeichen konfigurieren.
Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:
gcloud run services replace service.yaml
Skalierungssteuerelemente deaktivieren
Sie können entweder Ziele für die CPU-Auslastung oder für die Parallelitätsauslastung deaktivieren, aber nicht beide. Es muss immer ein Skalierungsfaktor aktiv sein. Wenn Sie die Skalierungssteuerung deaktivieren möchten, stellen Sie stattdessen die Standardwerte für die Auslastung wieder her. Wenn Sie einen Skalierungstreiber deaktivieren, ignoriert Cloud Run diesen Messwert bei Skalierungsentscheidungen.
Sie können die Skalierungssteuerung mit der gcloud CLI oder YAML deaktivieren, wenn Sie eine neue Überarbeitung bereitstellen.
gcloud
Sie können entweder die Ziel-CPU-Auslastung oder die Ziel-Concurrency-Auslastung deaktivieren, indem Sie den Befehl gcloud beta run services update ausführen.
Wenn Sie nur nach CPU skalieren möchten, deaktivieren Sie das Ziel für die Parallelität 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 nach Parallelität skalieren möchten, deaktivieren Sie das CPU-Ziel mit dem folgenden Befehl:
gcloud beta run services update SERVICE --scaling-cpu-target=disabled
Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.
YAML
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
Wenn Sie nur nach CPU skalieren möchten, deaktivieren Sie das Gleichzeitigkeitsziel, indem Sie das Attribut
run.googleapis.com/scaling-concurrency-targetaufdisabledfestlegen: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.
Wenn Sie nur nach Parallelität skalieren möchten, deaktivieren Sie das CPU-Zielvorhaben, indem Sie das Attribut
run.googleapis.com/scaling-cpu-targetaufdisabledfestlegen: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.
Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:
gcloud run services replace service.yaml
Auf Standardwerte zurücksetzen
Wenn Sie die Werte für die Ziel-CPU oder die Zielauslastung für die Parallelität auf die Standardwerte zurücksetzen, deaktivieren Sie die Funktion für die Skalierungssteuerung. Sie können die Skalierungssteuerung mit der gcloud CLI oder YAML auf die Standardeinstellungen zurücksetzen, wenn Sie eine neue Überarbeitung bereitstellen.
gcloud
Stellen Sie die CPU-Zielauslastung und die Zielauslastung für die 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 Auslastung des Gleichzeitigkeitsziels 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 Ziel-Nebenläufigkeit auf ihre 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
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
Wenn Sie die CPU- und Parallelitätsauslastung auf die Standardziele zurücksetzen möchten, entfernen Sie die Attribute
run.googleapis.com/scaling-cpu-targetundrun.googleapis.com/scaling-concurrency-targetaus 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.
Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:
gcloud run services replace service.yaml
Skalierungskonfiguration ansehen
Sie können Ihre Skalierungskonfiguration mit der gcloud CLI oder YAML ansehen.
Console
Rufen Sie in der Google Cloud Console die Seite Dienste für Cloud Run auf:
Klicken Sie auf Ihren Dienst, um den Bereich Dienstdetails zu öffnen.
Klicken Sie auf den Tab Überarbeitungen.
Sehen Sie sich im Detailbereich auf der rechten Seite die Einstellung Autoscaling-Messwerte auf dem Tab Container an.
gcloud
Verwenden Sie den folgenden Befehl:
gcloud run services describe SERVICE
Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.
Suchen Sie in der zurückgegebenen Konfiguration nach den Werten für die Einstellungen CPU-Zielauslastung und Zielauslastung für Nebenläufigkeit.
Best Practices
Sie können die Kosten optimieren und eine Überdimensionierung verhindern, indem Sie die Anzahl der Instanzen verringern. Alternativ können Sie die Leistung verbessern, indem Sie aggressiver auf bestimmte Faktoren reagieren. Verwenden Sie die folgenden Strategien, um die optimalen Auslastungsziele für Ihre Arbeitslast zu ermitteln:
Bevor Sie Ziele anpassen, müssen Sie herausfinden, welcher Messwert die Skalierung Ihres Dienstes auslöst. So ermitteln Sie die Skalierungsmesswerte:
Rufen Sie in der Google Cloud Console den Metrics Explorer auf, um das Monitoring-Diagramm für Ihre CPU- und Parallelitätsauslastung anzusehen.
Suchen Sie nach dem Messwert
run.googleapis.com/scaling/recommended_instancesund wählen Sie ihn aus. Legen Sie Aggregation auf Nicht aggregiert fest, um den Messwert nach Skalierungsfaktor gruppiert anzuzeigen.
Der Treiber mit dem höchsten Wert steuert die Anzahl der Instanzen Ihres Dienstes. Wenn ein anderer Faktor Vorrang haben soll oder Sie die Skalierung aggressiver oder weniger aggressiv vornehmen möchten, passen Sie das Auslastungsziel für diesen Faktor an.
Passen Sie die Ziele schrittweise an und warten Sie einige Minuten zwischen den Anpassungen, um die Auswirkungen auf die Leistung zu beobachten.
Mit Traffic-Aufteilung können Sie neue Skalierungsziele testen, indem Sie einen kleinen Prozentsatz Ihres Traffics an eine separate Revision weiterleiten, bevor Sie sie für Ihren gesamten Dienst einführen.
Ziele für geringe Auslastung
Wenn Sie Ihr Auslastungsziel auf das Minimum von 0,1 (10%) senken, ändert sich die Skalierung Ihres Dienstes erheblich.
Vorteile eines niedrigen Auslastungsziels:
Hohe Dienstverfügbarkeit: Ihr Dienst wird viel früher hochskaliert und behält einen großen Puffer an Leerlaufkapazität bei, um plötzliche Trafficspitzen ohne Latenz zu bewältigen.
Schnellere Skalierung bei geringer Anzahl von Instanzen: Dienste lassen sich zuverlässiger skalieren, bevor es zu Engpässen bei der hohen Auslastung kommt.
Nachteile der Festlegung niedriger Auslastungsziele:
- Potenzial für Kostensteigerung: Sie führen mehr Instanzen aus, als für Ihre aktuelle Last unbedingt erforderlich sind, was zu einer höheren Abrechnung führt.
- Häufigere Skalierungsentscheidungen: Bei geringerer Auslastung ist die Toleranz von Cloud Run geringer und es wird nicht so lange gewartet, bevor skaliert wird.
Nächste Schritte
- Weitere Informationen zu anderen Skalierungsoptionen finden Sie unter Manuelle Skalierung.
- Informationen zum Verwalten der maximalen Anzahl von Instanzen Ihrer Cloud Run-Dienste finden Sie unter Maximale Anzahl von Instanzen festlegen.
- Informationen zum Verwalten der maximalen Anzahl gleichzeitiger Anfragen, die von jeder Instanz verarbeitet werden, finden Sie unter Gleichzeitigkeit festlegen.
- Informationen zum Optimieren der Gleichzeitigkeitseinstellung finden Sie unter Tipps für Entwickler: Gleichzeitigkeit optimieren.
- Wenn Sie festlegen möchten, dass eine inaktive Instanz dauerhaft ausgeführt wird, um damit Latenz oder Kaltstarts bei ersten Anfragen zu minimieren, lesen Sie den Abschnitt Inaktive Instanzen mithilfe von
min-instanceaktivieren.