Configurar límites de memoria para servicios

Puedes elegir la cantidad de memoria que quieras asignar a tu servicio de Cloud Run. En esta página se describe cómo especificar la cantidad de memoria disponible para tu servicio.

Información sobre el uso de memoria

Las instancias de Cloud Run que superen el límite de memoria permitido se terminarán.

La memoria disponible de tu instancia debe ser suficiente para lo siguiente:

  • Ejecutar el archivo ejecutable del servicio, ya que debe cargarse en la memoria
  • Asignar memoria en el proceso de tu servicio
  • Escribir archivos en el sistema de archivos

El tamaño de la imagen de contenedor desplegada no afecta a la memoria disponible para la instancia.

Definir y actualizar límites de memoria

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

CPUs mínimas necesarias

La cantidad de memoria asignada que elijas se corresponde con una cantidad mínima de CPU para tu servicio. Cuando se establece un límite de memoria, se requieren los siguientes límites mínimos de CPU:

Memoria CPUs mínimas necesarias
128 MiB 0,083 vCPU
256 MiB 0,167 vCPU
512 MiB 0,333 vCPU
1 GiB 0,583 vCPU
2 GiB 1 vCPU
Más de 4 GiB 2 vCPUs
Más de 8 GiB 4 vCPUs
Más de 16 GiB 6 vCPUs
Más de 24 GiB 8 vCPUs
Si usas menos de 512 MiB de memoria, debes usar el entorno de ejecución de primera generación.

Cantidad máxima de memoria

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

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

Memoria mínima

El ajuste de memoria mínimo varía en función de si usas el entorno de ejecución de primera generación o de 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 e implementar servicios de Cloud Run, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:

Si vas a desplegar un servicio o una función a partir de código fuente, también debes tener otros roles concedidos en tu proyecto y en la cuenta de servicio de Cloud Build.

Para ver una lista de los roles y permisos de gestión de identidades y accesos asociados a Cloud Run, consulta los artículos sobre roles de gestión de identidades y accesos de Cloud Run y permisos de gestión de identidades y accesos de Cloud Run. Si tu servicio de Cloud Run interactúa con APIs, como las bibliotecas de cliente de Cloud, consulta la guía de configuración de la identidad del servicio.Google Cloud Para obtener más información sobre cómo conceder roles, consulta los artículos sobre permisos de implementación y gestión del acceso.

Configurar límites de memoria

Cualquier cambio en la configuración conlleva la creación de una nueva revisión. Las revisiones posteriores también recibirán automáticamente este ajuste de configuración, a menos que hagas cambios explícitos para modificarlo.

En los servicios de Cloud Run, puedes definir 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 o despliegas una revisión:

Consola

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

    Ir a Cloud Run

  2. Seleccione Servicios en el menú y haga clic en Implementar contenedor para configurar un nuevo servicio. Si vas a configurar un servicio que ya tienes, haz clic en él y, a continuación, en Editar y desplegar nueva revisión.

  3. Si vas a configurar un servicio nuevo, rellena la página de configuración inicial del servicio y, a continuación, haz clic en Contenedores, volúmenes, redes y seguridad para desplegar la página de configuración del servicio.

  4. Haz clic en la pestaña Contenedor.

    imagen

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

gcloud

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

gcloud run services update SERVICE --memory SIZE

Sustituye SERVICE por el nombre de tu servicio y SIZE por el tamaño de memoria que quieras. El formato del tamaño es un número entero o decimal seguido de una unidad: G o M, que corresponden a gigabytes o megabytes, respectivamente. También puedes usar los equivalentes en potencias de dos: Gi o Mi, que corresponden a gibibytes o mebibytes, respectivamente.

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

gcloud run deploy --image IMAGE_URL --memory SIZE

Haz los cambios siguientes:

  • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  • SIZE: los valores descritos anteriormente.

YAML

  1. Si va a crear un servicio, puede saltarse este paso. Si va a actualizar un servicio, descargue su configuración YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Actualice 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

    Haz los cambios siguientes:

    • SERVICE: el nombre de tu servicio de Cloud Run.
    • IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
    • SIZE: tamaño de memoria deseado. El formato es un número de punto fijo o flotante seguido de una unidad: G o M, que corresponden a gigabytes o megabytes, respectivamente, o bien se pueden usar los equivalentes en potencias de dos: Gi o Mi, que corresponden a gibibytes o mebibytes, respectivamente.
    • REVISION con un nuevo nombre de revisión o elimínelo (si está presente). Si proporcionas un nuevo nombre de revisión, debe cumplir los siguientes criterios:
      • Empieza por SERVICE-
      • Contiene solo 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

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Añade lo siguiente a un recurso google_cloud_run_v2_service en tu configuración de Terraform:

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

En template.containers.resources.limits, sustituye 512Mi por el límite de memoria que quieras para tu servicio.

Optimizar la memoria para los servicios

En el caso de un servicio de Cloud Run, puedes determinar el requisito de memoria máximo de un servicio mediante la siguiente fórmula: (Memoria permanente) + (Memoria por solicitud) * (Simultaneidad del servicio)

Por lo tanto,

  • Si aumentas la simultaneidad de tu servicio, también deberías aumentar el límite de memoria para tener en cuenta el uso máximo.

  • Si reduces la simultaneidad de tu servicio, te recomendamos que disminuyas el límite de memoria para ahorrar en los costes de uso de memoria.

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

Ver los ajustes de límite de memoria

Para ver la configuración actual del límite de memoria de tu servicio de Cloud Run, haz lo siguiente:

Consola

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

    Ir a Cloud Run

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

  3. Haz clic en la pestaña Revisiones.

  4. En el panel de detalles de la derecha, el ajuste del límite de memoria se encuentra en la pestaña Contenedor.

gcloud

  1. Usa el siguiente comando:

    gcloud run services describe SERVICE
  2. Busca el ajuste del límite de memoria en la configuración devuelta.