Par défaut, Cloud Run est optimisé pour les hautes performances avec un taux d'utilisation cible de 60 % pour le processeur et la simultanéité. Il ajuste automatiquement le nombre d'instances pour traiter toutes les requêtes entrantes. Toutefois, dans certains cas d'utilisation, vous pouvez souhaiter configurer les facteurs de scaling à utiliser (par exemple, le processeur uniquement) et définir des cibles d'utilisation personnalisées.
Cloud Run fournit des contrôles de scaling pour vous donner plus de contrôle sur le comportement de scaling de votre service. Vous pouvez ainsi prendre des décisions éclairées sur le scaling de votre charge de travail en fonction de vos besoins. Vous pouvez activer le comportement de scaling amélioré en conservant les cibles d'utilisation par défaut ou configurer les cibles d'utilisation personnalisées suivantes :
- Utilisation cible pour le scaling basé sur le processeur
- Utilisation cible pour le scaling basé sur la simultanéité
Les contrôles de scaling vous permettent d'optimiser les coûts et d'améliorer la prévisibilité de vos services. Pour en savoir plus sur le comportement d'autoscaling par défaut des services Cloud Run, consultez À propos de l'autoscaling des instances dans les services Cloud Run.
Limites relatives aux configurations
Les limites suivantes s'appliquent aux cibles de scaling personnalisées :
| Facteur de scaling | % par défaut | Pourcentage configurable minimal | Pourcentage configurable maximal |
|---|---|---|---|
CPU target utilization |
60 % | 10 % | 95 % |
Concurrency target utilization |
60 % | 10 % | 95 % |
Activer le comportement de scaling amélioré
Le scaler automatique de Cloud Run répond précisément aux cibles que vous configurez, même pour les services avec un faible nombre d'instances. Envisagez d'activer cette fonctionnalité pour améliorer la prévisibilité de la mise à l'échelle, même si vous prévoyez de conserver les cibles d'utilisation par défaut de 60 % pour le processeur et la simultanéité.
Pour l'activer, vous pouvez utiliser gcloud CLI ou YAML lorsque vous déployez une nouvelle révision.
Tout changement de configuration entraîne la création d'une révision. Les révisions ultérieures obtiennent aussi automatiquement le même paramètre de configuration, à moins que vous ne le mettiez explicitement à jour.
gcloud
Définissez les valeurs target-cpu-utilization et target-concurrency-utilization d'une révision donnée en exécutant la commande gcloud beta run services update suivante :
gcloud beta run services update SERVICE --scaling-cpu-target=0.6 \ --scaling-concurrency-target=0.6
Remplacez SERVICE par le nom du service.
YAML
Si vous créez un service, ignorez cette étape. Si vous mettez à jour un service existant, téléchargez sa configuration YAML :
gcloud run services describe SERVICE --format export > service.yaml
Ajoutez les attributs
run.googleapis.com/scaling-cpu-targetetrun.googleapis.com/scaling-concurrency-target.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'
Remplacez SERVICE par le nom du service.
Créez ou mettez à jour le service à l'aide de la commande suivante :
gcloud run services replace service.yaml
Configurer des cibles personnalisées
Définissez des cibles d'utilisation personnalisées pour optimiser les coûts ou améliorer les performances de vos charges de travail en configurant des cibles d'utilisation spécifiques du processeur et de la simultanéité dans les limites de configuration.
Tout changement de configuration entraîne la création d'une révision. Les révisions ultérieures obtiennent aussi automatiquement le même paramètre de configuration, à moins que vous ne le mettiez explicitement à jour.
Vous pouvez configurer les contrôles de scaling à l'aide de gcloud CLI ou de YAML lorsque vous déployez une nouvelle révision.
gcloud
Mettez à jour les valeurs target CPU utilization (objectif d'utilisation du processeur) et target concurrency utilization (objectif d'utilisation de la simultanéité) d'une révision donnée en exécutant la commande gcloud beta run services update.
Pour mettre à jour l'utilisation cible du processeur, exécutez la commande suivante :
gcloud beta run services update SERVICE --scaling-cpu-target=CPU_TARGET
Remplacez les éléments suivants :
SERVICE : nom de votre service.
CPU_TARGET : cible d'utilisation du processeur. Définissez une valeur comprise entre 0,1 et 0,95. Vous ne pouvez configurer que deux chiffres après la virgule.
Pour mettre à jour l'utilisation de la simultanéité cible, exécutez la commande suivante :
gcloud beta run services update SERVICE --scaling-concurrency-target=CONCURRENCY_TARGET
Remplacez les éléments suivants :
SERVICE : nom de votre service.
CONCURRENCY_TARGET : cible d'utilisation de la simultanéité. Définissez une valeur comprise entre 0,1 et 0,95. Vous ne pouvez configurer que deux chiffres après la virgule.
Pour mettre à jour à la fois le processeur cible et l'utilisation de la simultanéité, exécutez la commande suivante :
gcloud beta run services update SERVICE --scaling-cpu-target=CPU_TARGET \ --scaling-concurrency-target=CONCURRENCY_TARGET
Remplacez les éléments suivants :
- SERVICE : nom de votre service.
- CPU_TARGET : cible d'utilisation du processeur. Définissez une valeur comprise entre 0,1 et 0,95. Vous ne pouvez configurer que deux chiffres après la virgule.
- CONCURRENCY_TARGET : cible d'utilisation de la simultanéité. Définissez une valeur comprise entre 0,1 et 0,95. Vous ne pouvez configurer que deux chiffres après la virgule.
YAML
Si vous créez un service, ignorez cette étape. Si vous mettez à jour un service existant, téléchargez sa configuration YAML :
gcloud run services describe SERVICE --format export > service.yaml
Pour mettre à jour l'utilisation cible du processeur et de la simultanéité, ajoutez les attributs
run.googleapis.com/scaling-cpu-targetetrun.googleapis.com/scaling-concurrency-target: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'
Remplacez les éléments suivants :
- SERVICE : nom de votre service.
- CPU_TARGET : cible d'utilisation du processeur. Définissez une valeur comprise entre 0,1 et 0,95. Vous ne pouvez configurer que deux chiffres après la virgule.
- CONCURRENCY_TARGET : cible d'utilisation de la simultanéité. Définissez une valeur comprise entre 0,1 et 0,95. Vous ne pouvez configurer que deux chiffres après la virgule.
Créez ou mettez à jour le service à l'aide de la commande suivante :
gcloud run services replace service.yaml
Désactiver les commandes de scaling
Vous pouvez désactiver les cibles d'utilisation du processeur ou de la simultanéité, mais pas les deux. Un facteur de scaling doit toujours être actif. Pour désactiver les contrôles de scaling, rétablissez les valeurs d'utilisation par défaut au lieu de les désactiver. Lorsque vous désactivez un pilote de scaling, Cloud Run ignore cette métrique lorsqu'il prend des décisions de scaling.
Vous pouvez désactiver les commandes de scaling à l'aide de gcloud CLI ou de YAML lorsque vous déployez une nouvelle révision.
gcloud
Vous pouvez désactiver l'utilisation cible du processeur ou l'utilisation cible de la simultanéité en exécutant la commande gcloud beta run services update.
Pour effectuer un scaling uniquement en fonction du processeur, désactivez la cible de simultanéité en exécutant la commande suivante :
gcloud beta run services update SERVICE --scaling-concurrency-target=disabled
Remplacez SERVICE par le nom du service.
Pour effectuer un scaling uniquement en fonction de la simultanéité, désactivez la cible de processeur en exécutant la commande suivante :
gcloud beta run services update SERVICE --scaling-cpu-target=disabled
Remplacez SERVICE par le nom du service.
YAML
Si vous créez un service, ignorez cette étape. Si vous mettez à jour un service existant, téléchargez sa configuration YAML :
gcloud run services describe SERVICE --format export > service.yaml
Pour effectuer un scaling uniquement par processeur, désactivez la cible de simultanéité en définissant l'attribut
run.googleapis.com/scaling-concurrency-targetsurdisabled: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
Remplacez SERVICE par le nom du service.
Pour effectuer un scaling uniquement en fonction de la simultanéité, désactivez la cible de processeur en définissant l'attribut
run.googleapis.com/scaling-cpu-targetsurdisabled: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
Remplacez SERVICE par le nom du service.
Créez ou mettez à jour le service à l'aide de la commande suivante :
gcloud run services replace service.yaml
Rétablir les valeurs par défaut
Lorsque vous restaurez les valeurs par défaut de l'utilisation cible du processeur ou de la concurrence cible, vous désactivez la fonctionnalité de contrôle du scaling. Vous pouvez rétablir les paramètres de scaling par défaut à l'aide de la gcloud CLI ou de YAML lorsque vous déployez une nouvelle révision.
gcloud
Restaurez les valeurs par défaut de l'objectif d'utilisation du processeur et de l'objectif d'utilisation de la simultanéité en exécutant la commande gcloud beta run services update.
Pour rétablir la valeur par défaut de l'utilisation cible du CPU, exécutez la commande suivante :
gcloud beta run services update SERVICE --scaling-cpu-target=default
Remplacez SERVICE par le nom du service.
Pour rétablir la valeur par défaut de l'utilisation de la simultanéité cible, exécutez la commande suivante :
gcloud beta run services update SERVICE --scaling-concurrency-target=default
Remplacez SERVICE par le nom du service.
Pour rétablir les valeurs par défaut de l'utilisation cible du processeur et de la simultanéité cible, exécutez la commande suivante :
gcloud beta run services update SERVICE --scaling-cpu-target=default \ --scaling-concurrency-target=default
Remplacez SERVICE par le nom du service.
YAML
Si vous créez un service, ignorez cette étape. Si vous mettez à jour un service existant, téléchargez sa configuration YAML :
gcloud run services describe SERVICE --format export > service.yaml
Pour rétablir les cibles par défaut d'utilisation du processeur et de la simultanéité, supprimez les attributs
run.googleapis.com/scaling-cpu-targetetrun.googleapis.com/scaling-concurrency-targetde votre fichier YAML :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 ...
Remplacez SERVICE par le nom du service.
Créez ou mettez à jour le service à l'aide de la commande suivante :
gcloud run services replace service.yaml
Afficher la configuration du scaling
Vous pouvez afficher votre configuration de scaling à l'aide de la gcloud CLI ou de YAML.
Console
Dans la console Google Cloud , accédez à la page Services de Cloud Run :
Cliquez sur votre service pour ouvrir le panneau Informations sur le service.
Cliquez sur l'onglet Révisions.
Dans le panneau de détails sur la droite, consultez le paramètre Métriques d'autoscaling listé sous l'onglet Conteneurs.
gcloud
Exécutez la commande suivante :
gcloud run services describe SERVICE
Remplacez SERVICE par le nom du service.
Recherchez les valeurs des paramètres Objectif d'utilisation du processeur et Objectif d'utilisation de la simultanéité dans la configuration renvoyée.
Bonnes pratiques
Vous pouvez optimiser les coûts et éviter le surdimensionnement en diminuant le nombre d'instances, ou vous pouvez améliorer les performances en effectuant une mise à l'échelle plus agressive en réponse à des facteurs spécifiques. Pour déterminer les cibles d'utilisation optimales pour votre charge de travail, utilisez les stratégies suivantes :
Avant d'ajuster les cibles, identifiez la métrique qui déclenche le scaling de votre service. Pour identifier la métrique de scaling :
Accédez à l'explorateur de métriques dans la console Google Cloud pour examiner le graphique de surveillance de l'utilisation du processeur et de la simultanéité.
Recherchez et sélectionnez la métrique
run.googleapis.com/scaling/recommended_instances, puis définissez Agrégation sur Non agrégé pour afficher la métrique regroupée par facteur de scaling.
Le pilote avec la valeur la plus élevée est celui qui contrôle le nombre d'instances de votre service. Si vous souhaitez qu'un autre pilote soit prioritaire ou si vous souhaitez effectuer un scaling plus ou moins agressif, ajustez la cible d'utilisation pour ce pilote spécifique.
Ajustez les cibles de manière incrémentielle et patientez quelques minutes entre chaque ajustement pour observer l'effet sur les performances.
Utilisez la répartition du trafic pour tester de nouvelles cibles de scaling en dirigeant un petit pourcentage de votre trafic vers une révision distincte avant de les déployer sur l'ensemble de votre service.
À propos des objectifs de faible utilisation
Si vous réduisez votre cible d'utilisation au minimum de 0,1 (10 %), la façon dont votre service évolue change considérablement.
Voici les avantages de définir une cible d'utilisation faible :
Haute disponibilité des services : votre service évolue beaucoup plus tôt, en conservant une grande marge de capacité inutilisée pour gérer les pics de trafic soudains sans impact sur la latence.
Scalabilité plus rapide avec un faible nombre d'instances : les services évoluent de manière plus fiable avant d'atteindre des goulots d'étranglement liés à une utilisation élevée.
Voici quelques inconvénients liés à la définition d'objectifs d'utilisation faibles :
- Risque d'augmentation des coûts : vous exécutez plus d'instances que nécessaire pour votre charge actuelle, ce qui entraîne une facturation plus élevée.
- Décisions de scaling plus fréquentes : à des taux d'utilisation plus faibles, Cloud Run a une tolérance plus faible et n'attend pas aussi longtemps avant de procéder au scaling.
Étapes suivantes
- Pour en savoir plus sur les autres options de scaling, consultez la page Scaling manuel.
- Pour gérer le nombre maximal d'instances de vos services Cloud Run, consultez la page Définir un nombre maximal d'instances.
- Pour gérer le nombre maximal de requêtes simultanées traitées par chaque instance, consultez la page Définir la simultanéité.
- Pour optimiser le paramètre de simultanéité, reportez-vous à la page Conseils de développement pour le réglage de la simultanéité.
- Pour spécifier qu'une instance inactive doit rester en cours d'exécution afin de minimiser la latence ou le démarrage à froid lors des premières requêtes, consultez la page concernant l'utilisation de
min-instancepour activer les instances inactives.