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 de conteneur 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 de conteneur :

  • 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

Toute modification 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.

Par défaut, la mémoire allouée à chaque instance de conteneur d'une révision est de 512 Mio.

Un minimum de 2 processeurs virtuels est nécessaire pour définir une limite de mémoire supérieure à 4 Gio.

Vous pouvez définir des limites de mémoire à l'aide de Cloud Console, de la ligne de commande gcloud ou d'un fichier YAML lorsque vous créez un service ou déployez une nouvelle révision :

Console

  1. Accédez à Cloud Run

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

  3. Si vous configurez un nouveau service, renseignez la page de paramètres initiale du service, puis cliquez sur Suivant > Paramètres avancés pour accéder à la page de configuration du service.

  4. Cliquez sur l'onglet Conteneur.

    image

  5. Sélectionnez la taille de mémoire souhaitée dans la liste déroulante Memory allocated (Mémoire allouée).

  6. 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 ;
  • SIZE par les valeurs décrites ci-dessus.

YAML

Vous pouvez télécharger et afficher la configuration de service existante à 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.

  1. Pour afficher et télécharger la configuration, exécutez la commande suivante :

    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:
        spec:
          containers:
          - image: IMAGE
            resources:
              limits:
                memory: SIZE

    Remplacez

    • SERVICE par le nom de votre service Cloud Run ;
    • IMAGE par l'URL de votre image de conteneur ;
    • 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.
  3. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud run services replace service.yaml

Quantité maximale de mémoire

La quantité maximale de mémoire que vous pouvez configurer est de 16 gibioctets (16Gi).

Optimiser la mémoire

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 de limite de mémoire actuels pour votre service, procédez comme suit :

Console

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

Ligne de commande

  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.