Configurer les limites de mémoire

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 Cloud Run. Par défaut, la mémoire allouée à chaque instance d'une révision 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 :

Mémoire 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).

Vous pouvez appliquer une limite de mémoire maximale à l'aide de règles d'administration personnalisées.

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

Rôles requis

Pour obtenir les autorisations nécessaires pour configurer et déployer des services Cloud Run, demandez à votre administrateur de vous accorder les rôles IAM suivants :

Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre service Cloud Run communique avec les API Google Cloud, telles que les bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les sections Autorisations de déploiement et Gérer les accès.

Configurer les limites de mémoire

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

  1. Dans la console Google Cloud, accédez à Cloud Run :

    Accédez à Cloud Run

  2. Cliquez sur Déployer un conteneur et sélectionnez Service pour configurer un nouveau service. Si vous configurez un service existant, cliquez sur celui-ci puis sur Modifier et déployer la nouvelle révision.

  3. Si vous configurez un nouveau service, remplissez la page initiale des paramètres du service, puis cliquez sur Conteneur(s), volumes, mise en réseau et sécurité pour développer la page de configuration du service.

  4. Cliquez sur l'onglet Conteneur.

    image

    • Sélectionnez la taille de mémoire souhaitée dans la liste déroulante Mémoire.
  5. Cliquez sur Créer ou Déployer.

gcloud

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

Remplacer

  • IMAGE_URL par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • SIZE par les valeurs décrites ci-dessus.

YAML

  1. 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
  2. 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

    Remplacer

    • 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. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-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 ou Mi 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
  3. Créez ou mettez à jour le service à l'aide de 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_v2_service dans votre configuration Terraform, sous template.containers.resources.limits. Remplacez 512Mi par la limite de mémoire souhaitée pour votre service.

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-memory-limits"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      resources {
        limits = {
          # Memory usage limit (per container)
          memory = "512Mi"
        }
      }
    }
  }
}

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

  1. Dans la console Google Cloud, accédez à Cloud Run :

    Accédez à Cloud Run

  2. Cliquez sur le service qui vous intéresse pour ouvrir la page Informations sur le service.

  3. Cliquez sur l'onglet Révisions.

  4. Dans le panneau de détails sur la droite, le paramètre de limite de mémoire est répertorié sous l'onglet Conteneur.

gcloud

  1. Exécutez la commande suivante :

    gcloud run services describe SERVICE
  2. Recherchez le paramètre de limite de mémoire dans la configuration renvoyée.