Configura límites de memoria

Obtén información sobre cómo establecer límites para la memoria que usan tus instancias de contenedor en Knative serving.

Información sobre el uso de memoria

Las instancias de contenedores de Knative serving que superan el límite de memoria permitido se finalizan.

Las siguientes acciones se consideran en 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 en la cantidad de memoria disponible.

Cantidad máxima de memoria

La cantidad máxima de memoria que puedes establecer está limitada por la configuración de tu clúster de GKE.

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.

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.

Puedes establecer límites de memoria con la consola de Google Cloud, Google Cloud CLI o un archivo YAML cuando implementas un servicio nuevo o actualizas un servicio existente e implementas una revisión:

Console

  1. Ve a Knative serving en la consola de Google Cloud:

    Ir a Knative serving

  2. 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, haz clic en IMPLEMENTAR Y EDITAR UNA NUEVA REVISIÓN.

  3. En Configuración avanzada, haz clic en Contenedor.

  4. Selecciona el tamaño de memoria deseado de la lista desplegable Memory allocated (Memoria asignada).

  5. Haz clic en Siguiente para pasar a la siguiente sección.

  6. En la sección Configura la forma en que se activa el servicio, selecciona la conectividad que deseas usar para invocar el servicio.

  7. Haz clic en Crear para implementar la imagen en Knative serving y espera a que termine la implementación.

Línea de comandos

  • Para los servicios existentes, ejecuta el comando gcloud run services update con el parámetro --memory a fin de actualizar el límite de memoria:

    gcloud run services update SERVICE --memory SIZE

    Reemplaza lo siguiente:

    • SERVICE por el nombre de tu servicio
    • 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: GMK, 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.
  • Para servicios nuevos, establece el límite de memoria mediante la ejecución del comando gcloud run deploy con el parámetro --memory:

    gcloud run deploy SERVICE --image=IMAGE_URL --memory SIZE

    Reemplaza lo siguiente:

    • SERVICE por el nombre de tu servicio
    • IMAGE_URL por una referencia a la imagen del contenedor, como gcr.io/cloudrun/hello
    • 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: GMK, 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.

YAML

Puedes descargar la configuración de un servicio existente en un archivo YAML con el comando gcloud run services describe mediante la marca --format=export. Luego, puedes modificar ese archivo YAML e implementar esos cambios con el comando gcloud run services replace. Debes asegurarte de modificar solo los atributos especificados.

  1. Descarga la configuración del servicio en un archivo llamado service.yaml en el lugar de trabajo local:

    gcloud run services describe SERVICE --format export > service.yaml

    Reemplaza SERVICE por el nombre de tu servicio de Knative serving.

  2. En tu archivo local, actualiza el atributo memory:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE_NAME
    spec:
      template:
        spec:
          containers:
    image: IMAGE_URL
            resources:
              limits:
                memory: SIZE

    Reemplaza 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 o K, 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.

  3. Reemplaza el servicio por la configuración nueva mediante el comando siguiente:

    gcloud run services replace service.yaml