Configura límites de memoria

En esta página, se describe cómo establecer límites de memoria.

Comprende el uso de la memoria

Las instancias de Cloud Run que superan el límite de memoria permitido se finalizan.

Las siguientes acciones se consideran en la cantidad de memoria disponible de la instancia:

  • Ejecutar el ejecutable de la aplicación (ya que este debe cargarse en la memoria)
  • Asignar memoria en el proceso de la aplicación
  • Escribir archivos en el sistema de archivos

El tamaño de la imagen de contenedor implementada no se considera en la cantidad de memoria disponible.

Configura y actualiza los límites de memoria

Puedes establecer límites de memoria en los servicios de Cloud Run. De forma predeterminada, la memoria asignada a cada instancia de contenedor de una revisión es de 512 MiB.

CPU mínima requerida

Cuando se establece un límite de memoria, se requieren los siguientes límites mínimos de CPU:

Memoria Cantidad mínima de CPU necesarias
Más de 4 GiB 2
Más de 8 GiB 4
Más de 16 GiB 6
Más de 24 GiB 8

Cantidad máxima de memoria

La cantidad máxima de memoria que puedes configurar es de 32 gibibyte (32 Gi).

Puedes aplicar un límite máximo de memoria con las políticas de la organización personalizadas.

Memoria mínima

El parámetro de configuración de memoria mínima varía según si usas el entorno de ejecución de primera generación o segunda generación:

  • 128 MiB para la primera generación
  • 512 MiB para la segunda generación

Roles obligatorios

Para obtener los permisos que necesitas para configurar y, luego, implementar los servicios de Cloud Run, pídele a tu administrador que te otorgue los siguientes roles de IAM:

Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta Roles de IAM de Cloud Run y Permisos de IAM de Cloud Run. Si tu servicio de Cloud Run interactúa con las APIs de Google Cloud, como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información acerca de cómo otorgar roles, consulta Permisos de implementación y Administra el acceso.

Configura límites de memoria

Cualquier cambio en la configuración conlleva la creación de una revisión nueva. Las revisiones posteriores también adoptarán esta configuración de manera automática, a menos que realices actualizaciones explícitas para cambiarla.

En el caso de los servicios de Cloud Run, puedes establecer límites de memoria mediante la consola de Google Cloud, la línea de comandos de gcloud o un archivo YAML cuando creas un servicio nuevo o implementas una revisión nueva:

Console

  1. En la consola de Google Cloud ve a Cloud Run:

    Ir a Cloud Run

  2. Haz clic en Implementar contenedor y selecciona Servicio para configurar un servicio nuevo. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, en implementar y editar la nueva revisión.

  3. Si configuras un servicio nuevo, completa la página de configuración del servicio inicial como desees y haz clic en Contenedores, volúmenes, Herramientas de redes y seguridad para expandir la página de configuración del servicio.

  4. Haz clic en la pestaña Contenedor.

    imagen

    • Selecciona el tamaño de memoria deseado de la lista desplegable Memoria asignada.
  5. Haz clic en Crear o Implementar.

gcloud

Puedes actualizar la asignación de memoria de un servicio determinado mediante el siguiente comando:

gcloud run services update SERVICE --memory SIZE

Reemplaza SERVICE por el nombre de tu servicio y SIZE por el tamaño de memoria deseado. El formato del tamaño es un número de punto fijo o flotante seguido de una unidad: G o M, que corresponde a gigabytes o megabytes, respectivamente, o usa equivalentes a la potencia de dos: Gi o Mi correspondientes a gibibyte o mebibyte, respectivamente.

También puedes establecer límites de memoria durante la implementación mediante el siguiente comando:

gcloud run deploy --image IMAGE_URL --memory SIZE

Reemplazar

  • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • SIZE por los valores que se describieron antes

YAML

  1. Si creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Actualiza el atributo memory:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION
        spec:
          containers:
          - image: IMAGE
            resources:
              limits:
                memory: SIZE

    Reemplazar

    • SERVICE por el nombre del servicio de Cloud Run
    • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • SIZE por el tamaño de memoria deseado El formato es un número fijo o de punto flotante seguido de una unidad: G oM correspondiente a gigabyte o megabyte, respectivamente, o usa la potencia de dos equivalentes: Gi o Mi que corresponde a gibibyte o mebibyte, respectivamente.
    • REVISION por un nombre de revisión nuevo o bórralo (si está presente). Si proporcionas un nuevo nombre de revisión, debe cumplir con los siguientes criterios:
      • Comienza con SERVICE-
      • Solo contiene letras minúsculas, números y -
      • No termina con -
      • No supera los 63 caracteres
  3. Crea o actualiza el servicio con el siguiente comando:

    gcloud run services replace service.yaml

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Agrega lo siguiente a un recurso google_cloud_run_v2_service en la configuración de Terraform, en template.containers.resources.limits. Reemplaza 512Mi por el límite de memoria que deseas para tu servicio.

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"
        }
      }
    }
  }
}

Optimiza la memoria para los servicios

Para un servicio de Cloud Run, puedes determinar el requisito de memoria máxima de un servicio de la siguiente manera: (memoria permanente) + (memoria por solicitud) * (simultaneidad de servicio)

Por lo tanto:

  • Si aumentas la simultaneidad de tu servicio, también debes aumentar el límite de memoria para respetar el uso máximo.

  • Si disminuyes la simultaneidad de tu servicio, considera reducir el límite de memoria para ahorrar en costos de uso de memoria.

Para obtener más información sobre cómo minimizar el uso de memoria por solicitud, consulta las sugerencias de desarrollo sobre variables globales.

Visualiza la configuración del límite de memoria

Para ver la configuración actual del límite de memoria de tu servicio de Cloud Run, sigue estos pasos:

Console

  1. En la consola de Google Cloud ve a Cloud Run:

    Ir a Cloud Run

  2. Haz clic en el servicio que te interesa para abrir la página Detalles del servicio.

  3. Haz clic en la pestaña Revisiones.

  4. En el panel de detalles a la derecha, la configuración del límite de memoria se muestra en la pestaña Contenedor.

gcloud

  1. Usa el siguiente comando:

    gcloud run services describe SERVICE
  2. Ubica la configuración del límite de memoria en la configuración que se muestra.