Configura límites de memoria para los servicios

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

Comprende el uso de la memoria

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

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

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

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

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 una revisión es de 512 MiB, y la memoria asignada para una función es de 256 MiB.

Memoria obligatoria cuando se establece un valor de CPU

Cuando se establece un valor de CPU, se requiere la siguiente memoria:

CPU Memoria obligatoria
.08 CPU virtual Hasta 512 MiB
.5 CPU virtual Hasta 1 GiB
1 CPU virtual Hasta 4 GiB
2 CPU virtuales Hasta 8 GiB
4 CPU virtuales De 2 a 16 GiB
6 CPU virtuales De 4 a 24 GiB
8 CPU virtuales De 4 a 32 GiB
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 gibibyte (32 Gi).

Puedes aplicar un límite máximo de memoria con 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

Consideraciones de costo

El costo de tu servicio de Cloud Run se ve afectado por su configuración de memoria y el tiempo que tu recurso está activo, entre otros factores. El aprovisionamiento excesivo de tus recursos puede aumentar tus costos. Para determinar qué configuración de memoria podría ser la mejor para tu recurso, haz lo siguiente:

  1. Establece una configuración inicial de referencia.
  2. Supervisa las métricas de utilización de memoria en Cloud Monitoring mientras pruebas el sistema bajo carga.
  3. Ajusta la configuración según sea necesario.

Si la utilización de la memoria es constantemente baja, considera reducir la memoria asignada. Si la latencia es alta y la utilización de la memoria está cerca del 100%, considera aumentar la memoria asignada. Si tienes errores de memoria insuficiente (OOM), debes aumentar la memoria asignada o modificar tu aplicación para evitar pérdidas de memoria y usar menos memoria. Consulta el panel de Cloud Monitoring para comprender mejor el uso de la memoria.

Revisa los precios de Cloud Run o estima los costos con la calculadora de precios para obtener más informació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:

Si implementas un servicio o una función desde el código fuente, también debes tener roles adicionales otorgados en tu proyecto y en la cuenta de servicio de Cloud Build.

Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta los roles de IAM de Cloud Run y los permisos de IAM de Cloud Run. Si tu servicio de Cloud Run interactúa con Google Cloud las APIs, como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información sobre 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 Google Cloud consola, 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 Google Cloud , ve a Cloud Run:

    Ir a Cloud Run

  2. Selecciona Servicios en el menú de navegación de Cloud Run y haz clic en Implementar contenedor 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 inicial del servicio y, luego, haz clic en Contenedores, redes, 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

Reemplaza lo siguiente:

  • 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 debe estar creado. La URL sigue el formato de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  • SIZE: Los valores descritos anteriormente.

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

    Reemplaza lo siguiente:

    • 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 debe estar creado. La URL sigue el formato de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
    • SIZE: El tamaño de memoria necesario. El formato es un número fijo o de punto flotante seguido de una unidad: G o M correspondiente a gigabyte o megabyte, respectivamente, o usa la potencia de dos equivalentes: Gi o Mi correspondiente 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 google_cloud_run_v2_service recurso en la 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, reemplaza 512Mi por el límite de memoria necesario de tu servicio.

Redactar

Para especificar sugerencias de CPU y memoria en tu archivo compose.yaml, agrega el atributo cpus a la definición de tu servicio. Cloud Run asigna automáticamente la memoria requerida cuando se establece un valor de CPU.

  services:
    web:
      image: IMAGE
      cpus: CPU_VALUE

Reemplaza lo siguiente:

  • IMAGE: La URL de la imagen de contenedor.
  • CPU_VALUE: El límite de CPU necesario, por ejemplo, 2. Este valor determina la memoria requerida.

Implementa los servicios

  1. Para implementar los servicios, ejecuta el comando gcloud run compose up:

    gcloud run compose up compose.yaml
  2. Responde y a cualquier mensaje para instalar los componentes obligatorios o habilitar las APIs.

  3. Opcional: Haz que tu servicio sea público si deseas permitir el acceso sin autenticación.

Después de la implementación, se muestra la URL del servicio de Cloud Run. Copia esta URL y pégala en tu navegador para ver el contenedor en ejecución. Puedes inhabilitar la autenticación predeterminada desde la Google Cloud consola.

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 Google Cloud consola, ve a la página Servicios de 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.