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
).
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:
-
Desarrollador de Cloud Run (
roles/run.developer
) en el servicio de Cloud Run -
Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser
) en la identidad del servicio
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
En la consola de Google Cloud ve a Cloud Run:
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.
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.
Haz clic en la pestaña Contenedor.
- Selecciona el tamaño de memoria deseado de la lista desplegable Memoria asignada.
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 formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - SIZE por los valores que se describieron antes
YAML
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
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 formatoLOCATION-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
oMi
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
- Comienza con
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.
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
En la consola de Google Cloud ve a Cloud Run:
Haz clic en el servicio que te interesa para abrir la página Detalles del servicio.
Haz clic en la pestaña Revisiones.
En el panel de detalles a la derecha, la configuración del límite de memoria se muestra en la pestaña Contenedor.
gcloud
Usa el siguiente comando:
gcloud run services describe SERVICE
Ubica la configuración del límite de memoria en la configuración que se muestra.