Cette page explique comment définir des limites de mémoire.
Comprendre l'utilisation de la mémoire
Les instances Cloud Run qui dépassent la limite de mémoire autorisée sont arrêtées.
Les opérations suivantes sont comptabilisées dans la mémoire disponible de votre instance :
- Exécution de l'exécutable de l'application (car l'exécutable doit être chargé en mémoire)
- Allocation de mémoire dans votre processus d'application
- Écriture des fichiers dans le système de fichiers
La taille de l'image de conteneur déployée n'est pas comptabilisée dans la mémoire disponible.
Définir et mettre à jour des limites de mémoire
Vous pouvez définir des limites de mémoire sur les services et les tâches Cloud Run. Par défaut, la mémoire allouée à chaque instance d'une révision ou d'un job est de 512 Mio.
Nombre minimal de processeurs requis
Lorsque vous définissez une limite de mémoire, les limites minimales de processeur requises sont les suivantes :
Memory | Nombre minimal de processeurs requis |
---|---|
Plus de 4 Gio | 2 |
Plus de 8 Gio | 4 |
Plus de 16 Gio | 6 |
Plus de 24 Gio | 8 |
Quantité maximale de mémoire
La quantité maximale de mémoire que vous pouvez configurer est de 32 gibioctets (32 Gi
).
Mémoire minimale
Le paramètre de mémoire minimale varie selon que vous utilisez l'environnement d'exécution de première ou deuxième génération :
- 128 Mio pour la première génération
- 512 Mio pour la deuxième génération
Pour les services Cloud Run
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.
Pour les services Cloud Run, vous pouvez définir des limites de mémoire à l'aide de la console Google Cloud de la ligne de commande gcloud ou d'un fichier YAML.créer un service ou déployer une nouvelle révision :
Console
Cliquez sur Créer un service si vous configurez un nouveau service sur lequel effectuer un déploiement. Si vous configurez un service existant, cliquez sur celui-ci puis sur Modifier et déployer la nouvelle révision.
Si vous configurez un nouveau service, remplissez la page initiale des paramètres du service selon vos besoins, puis cliquez sur Conteneur, mise en réseau, sécurité pour développer la page de configuration du service.
Cliquez sur l'onglet Conteneur.
- Sélectionnez la taille de mémoire souhaitée dans la liste déroulante Mémoire.
Cliquez sur Créer ou Déployer.
Ligne de commande
Vous pouvez mettre à jour l'allocation de mémoire d'un service donné à l'aide de la commande suivante :
gcloud run services update SERVICE --memory SIZE
Remplacez SERVICE par le nom de votre service et SIZE par la taille de mémoire souhaitée. Le format de la taille est un nombre fixe ou à virgule flottante suivi d'une unité : G
ou M
correspondant respectivement au gigaoctet ou au mégaoctet, ou qui utilise des équivalents en puissance de deux : Gi
ou Mi
correspondant respectivement au gibioctet ou au mébioctet.
Lors du déploiement, vous pouvez également définir des limites de mémoire à l'aide de la commande suivante :
gcloud run deploy --image IMAGE_URL --memory SIZE
Remplacez
- IMAGE_URL par une référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest
. Lorsque vous utilisez Artifact Registry, l'URL se présente sous la forme suivante:REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. . - SIZE par les valeurs décrites ci-dessus.
YAML
Vous pouvez télécharger et afficher les configurations de service existantes à l'aide de la commande gcloud run services describe --format export
, qui renvoie les résultats nettoyés au format YAML.
Vous pouvez ensuite modifier les champs décrits ci-dessous et importer le fichier YAML modifié à l'aide de la commande gcloud run services replace
.
Veillez à ne modifier que les champs indiqués.
Pour afficher et télécharger la configuration, exécutez la commande suivante :
gcloud run services describe SERVICE --format export > service.yaml
Mettez à jour l'attribut
memory
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: name: REVISION spec: containers: - image: IMAGE resources: limits: memory: SIZE
Remplacez
- SERVICE par le nom de votre service Cloud Run
- IMAGE_URL par une référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest
. Lorsque vous utilisez Artifact Registry, l'URL se présente sous la forme suivante:REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - SIZE par la taille de mémoire souhaitée.
Le format est un nombre fixe ou à virgule flottante suivi d'une unité :
G
ouM
correspondant au gigaoctet ou au mégaoctet, respectivement, ou qui utilise des équivalents en puissance de deux :Gi
ouMi
correspondant respectivement à un gibioctet ou à un mébioctet. - REVISION par un nouveau nom de révision ou supprimez-le (le cas échéant). Si vous indiquez un nouveau nom de révision, il doit répondre aux critères suivants :
- Commencer par
SERVICE-
- Ne contenir que des lettres minuscules, des chiffres et
-
- Ne pas se terminer par
-
- Ne pas dépasser 63 caractères
- Commencer par
Remplacez la configuration du service en utilisant la commande suivante :
gcloud run services replace service.yaml
Terraform
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
Ajoutez les éléments suivants à une ressource google_cloud_run_service
dans votre configuration Terraform, sous template.spec.containers
. Remplacez 512Mi
par la limite de mémoire souhaitée pour votre service.
Pour les jobs Cloud Run
Vous devez spécifier un minimum de 512 Mi pour une tâche Cloud Run. Pour spécifier la mémoire d'une tâche Cloud Run, procédez comme suit :
Console
Si vous configurez une nouvelle tâche, cliquez sur l'onglet Tâches et remplissez la page des paramètres initiaux de la tâche selon vos besoins. Si vous configurez une tâche existante, cliquez sur celle-ci, puis sur Modifier.
Cliquez sur Conteneur, variables et secrets, connexions, sécurité pour développer la page des propriétés de la tâche.
Cliquez sur l'onglet Conteneur.
- Sélectionnez la taille de mémoire souhaitée dans la liste déroulante Mémoire.
Cliquez sur Créer ou Mettre à jour.
Command line
Pour définir des limites de mémoire lorsque vous créez une tâche, procédez comme suit :
gcloud run jobs create JOB_NAME --image IMAGE_URL --memory SIZE
Remplacer
- JOB_NAME par le nom de votre tâche.
- IMAGE_URL par une référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/job:latest
. - SIZE par la taille de mémoire souhaitée. Le format de la taille est un nombre fixe ou à virgule flottante suivi d'une unité :
G
ouM
correspondant respectivement au gigaoctet ou au mégaoctet, ou qui utilise des équivalents en puissance de deux :Gi
ouMi
correspondant respectivement au gibioctet ou au mébioctet.
Pour définir des limites de mémoire lorsque vous mettez à jour une tâche, procédez comme suit :
gcloud run jobs update JOB_NAME --memory SIZE
YAML
Téléchargez et affichez la configuration de tâche existante à l'aide de la commande gcloud run jobs describe --format export
, qui renvoie les résultats nettoyés au format YAML. Modifiez ensuite les champs décrits ci-dessous et importez le fichier YAML modifié à l'aide de la commande gcloud run jobs replace
.
Veillez à ne modifier que les champs indiqués.
Pour afficher et télécharger la configuration, exécutez la commande suivante :
gcloud run jobs describe JOB_NAME --format export > job.yaml
Mettez à jour l'attribut
memory
:apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB spec: template: spec: template: spec: containers: - image: IMAGE resources: limits: memory: SIZE
Remplacez SIZE par la taille de mémoire souhaitée, en spécifiant une valeur minimale de 512 Mi. Le format est un nombre fixe ou à virgule flottante suivi d'une unité :
G
ouM
correspondant au gigaoctet ou au mégaoctet, respectivement, ou qui utilise des équivalents en puissance de deux :Gi
ouMi
correspondant respectivement à un gibioctet ou à un mébioctet.Vous pouvez également spécifier d'autres éléments de configuration, tels que des variables d'environnement ou des limites de mémoire.
Mettez à jour la configuration de tâche existante :
gcloud run jobs replace job.yaml
Optimiser la mémoire pour les services
Pour un service Cloud Run, vous pouvez déterminer la quantité de mémoire maximale requise pour un service à l'aide des éléments suivants : (mémoire permanente) + (mémoire par requête) * (simultanéité des services).
En conséquence,
Si vous augmentez la simultanéité de votre service, vous devez également augmenter la limite de mémoire afin de prendre en compte les pics d'utilisation.
Si vous réduisez la simultanéité de votre service, envisagez de réduire la limite de mémoire pour économiser sur les coûts d'utilisation de la mémoire.
Pour plus de conseils sur la réduction de l'utilisation de la mémoire par requête, lisez les Conseils de développement sur les variables globales.
Afficher les paramètres de limite de mémoire
Pour afficher les paramètres actuels de limite de mémoire pour votre service Cloud Run, procédez comme suit :
Console
Cliquez sur le service qui vous intéresse pour ouvrir la page Informations sur le service.
Cliquez sur l'onglet Révisions.
Dans le panneau de détails sur la droite, le paramètre de limite de mémoire est répertorié sous l'onglet Conteneur.
Ligne de commande
Exécutez la commande suivante :
gcloud run services describe SERVICE
Recherchez le paramètre de limite de mémoire dans la configuration renvoyée.
Pour afficher les paramètres actuels de limite de mémoire de votre tâche Cloud Run, procédez comme suit :
Console
Cliquez sur la tâche qui vous intéresse pour ouvrir la page Informations sur la tâche.
Cliquez sur l'onglet Configuration.
Localisez le paramètre de limite de mémoire dans les détails de la configuration.
Command line
Exécutez la commande suivante :
gcloud run jobs describe JOB_NAME
Recherchez le paramètre de limite de mémoire dans la configuration renvoyée.