Configurar límites de memoria

Consulta cómo definir límites para la memoria que usan tus instancias de contenedor en Knative Serving.

Información sobre el uso de memoria

Las instancias de contenedor de Knative Serving que superen el límite de memoria permitido se terminarán.

Los siguientes elementos se tienen en cuenta para calcular la memoria disponible de la instancia de contenedor:

  • Ejecutar el archivo ejecutable de la aplicación (ya que el archivo ejecutable debe cargarse en la memoria)
  • Asignar memoria en el proceso de tu aplicación
  • Escribir archivos en el sistema de archivos

El tamaño de la imagen de contenedor desplegada no se tiene en cuenta en la memoria disponible.

Cantidad máxima de memoria

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

Optimizar la memoria

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.

Definir y actualizar 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.

Puedes definir límites de memoria mediante la Google Cloud consola, la CLI de Google Cloud o un archivo YAML al desplegar un servicio nuevo o actualizar un servicio y desplegar una revisión:

Consola

  1. Ve a Knative Serving en la Google Cloud consola:

    Ir a Knative serving

  2. Haga clic en Crear servicio si va a configurar un servicio nuevo que va a implementar. Si va a configurar un servicio que ya tiene, haga clic en él y, a continuación, en Editar y desplegar nueva revisión.

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

  4. Selecciona el tamaño de memoria que quieras en la lista desplegable Memoria asignada.

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

  6. En la sección Configurar la activación del servicio, selecciona la conectividad que quieras usar para invocar el servicio.

  7. Haz clic en Crear para desplegar la imagen en Knative Serving y espera a que se complete el despliegue.

Línea de comandos

  • En el caso de los servicios que ya tengas, actualiza el límite de memoria ejecutando el comando gcloud run services update con el parámetro --memory:

    gcloud run services update SERVICE --memory SIZE

    Sustituye:

    • SERVICE con el nombre de tu servicio.
    • SIZE con el tamaño de memoria que quieras. El formato del tamaño es un número de punto fijo o flotante seguido de una unidad: G, M o K, que corresponden a gigabytes, megabytes o kilobytes, respectivamente. También puedes usar los equivalentes en potencias de dos: Gi, Mi o Ki, que corresponden a gibibytes, mebibytes o kibibytes, respectivamente.
  • En el caso de los servicios nuevos, define el límite de memoria ejecutando el comando gcloud run deploy con el parámetro --memory:

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

    Sustituye:

    • SERVICE con el nombre de tu servicio.
    • IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo, gcr.io/cloudrun/hello.
    • SIZE con el tamaño de memoria que quieras. El formato del tamaño es un número de punto fijo o flotante seguido de una unidad: G, M o K, que corresponden a gigabytes, megabytes o kilobytes, respectivamente. También puedes usar los equivalentes en potencias de dos: Gi, Mi o Ki, que corresponden a gibibytes, mebibytes o kibibytes, respectivamente.

YAML

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

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

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

    Sustituye SERVICE por el nombre de tu servicio de Knative.

  2. En su archivo local, actualice 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

    Sustituye SIZE por el tamaño de memoria que quieras. El formato es un número de punto fijo o flotante seguido de una unidad: G, M o K, que corresponden a gigabyte, megabyte o kilobyte, respectivamente. También puede usar los equivalentes de potencia de dos: Gi, Mi o Ki, que corresponden a gibibyte, mebibyte o kibibyte, respectivamente.

  3. Sustituye el servicio por su nueva configuración con el siguiente comando:

    gcloud run services replace service.yaml