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
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
Der Befehl
gcloud run services replaceverwendet standardmäßig die Dateiservice.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.
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
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-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.
Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:
gcloud run services replace service.yaml
Der Befehl
gcloud run services replaceverwendet standardmäßig die Dateiservice.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
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 anhand der CPU skalieren möchten, deaktivieren Sie das Ziel für die Nebenläufigkeit, indem Sie das Attribut
run.googleapis.com/scaling-concurrency-targetaufdisabledsetzen: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 anhand der Nebenläufigkeit skalieren möchten, deaktivieren Sie das Ziel für die CPU, indem Sie das Attribut
run.googleapis.com/scaling-cpu-targetaufdisabledsetzen: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
Der Befehl
gcloud run services replaceverwendet standardmäßig die Dateiservice.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
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 Nebenläufigkeitsauslastung auf die Standardziele wiederherstellen 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
Der Befehl
gcloud run services replaceverwendet standardmäßig die Dateiservice.yaml, falls vorhanden.
Skalierungskonfiguration ansehen
Sie können Ihre Skalierungskonfiguration über die 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.
Im Detailbereich auf der rechten Seite sehen Sie die Einstellung Autoscaling-Messwerte auf dem Tab Container.
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 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:
Rufen Sie in der Google Cloud Console den Metrics Explorer auf, um das Monitoring-Diagramm für Ihre CPU- und Gleichzeitigkeitsauslastung zu sehen.
Suchen Sie nach dem Messwert
run.googleapis.com/scaling/recommended_instancesund 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
- 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.