En esta página, se describe cómo establecer límites de memoria.
Información sobre el uso de memoria
Las instancias de contenedor de Cloud Run que superan el límite de memoria permitido se finalizan.
Las siguientes acciones se consideran para la cantidad de memoria disponible de la instancia de contenedor:
- 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 para la cantidad de memoria disponible.
Configura y actualiza los 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.
De forma predeterminada, la memoria asignada a cada instancia de contenedor de una revisión es de 256 MiB.
Se requiere un mínimo de 2 CPU virtuales para establecer un límite de memoria superior a 4 GiB.
Puedes configurar límites de memoria mediante Cloud Console, la línea de comandos de gcloud o un archivo YAML cuando creas un servicio nuevo o implementas una revisión nueva:
Console
Haz clic en Crear servicio si quieres configurar un servicio nuevo en el que realizarás la implementación. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, en Implementar y editar una nueva revisión.
En Configuración avanzada, haz clic en Contenedor.
Selecciona el tamaño de memoria deseado de la lista desplegable Memory allocated (Memoria asignada).
Haz clic en Crear o Implementar.
Línea de comandos
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 fijo o de punto flotante seguido de una unidad: G
, M
o K
, que corresponden a gigabytes, megabytes o kilobytes, respectivamente. También puedes usar equivalentes de potencia de dos: Gi
, Mi
, Ki
que corresponden a gibibyte, mebibyte o kibibyte, 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 los siguientes elementos:
IMAGE_URL
por una referencia a la imagen del contenedor, comogcr.io/myproject/my-image:latest
- SIZE por los valores que se describieron antes
YAML
Puedes descargar y ver la configuración del servicio existente mediante el comando gcloud run services describe --format export
, que genera resultados limpios en formato YAML. Luego, puedes modificar los campos que se describen a continuación y subir el YAML modificado mediante el comando gcloud beta run services replace
.
Asegúrate de modificar los campos tal como se indica en la documentación.
Para ver y descargar la configuración, ejecuta el siguiente comando:
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: spec: containers: - image: IMAGE resources: limits: memory: SIZE
Reemplaza los siguientes elementos:
- SERVICE por el nombre del servicio de Cloud Run
- IMAGE por la URL de la imagen de contenedor
- SIZE por el tamaño de memoria deseado
El formato es un número fijo o de punto flotante seguido de una unidad:
G
,M
oK
, que corresponde a gigabytes, megabytes o kilobytes, respectivamente, o usa equivalentes a la potencia de dos:Gi
,Mi
,Ki
que corresponde a gibibyte, mebibyte o kibibyte, respectivamente.
Reemplaza el servicio por la configuración nueva mediante el siguiente comando:
gcloud beta run services replace service.yaml
Cantidad máxima de memoria
La cantidad máxima de memoria que puedes configurar es de 8 gibibyte (8Gi
).
Optimiza la memoria
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.