Simultaneidad

Las funciones de Cloud Run admiten el manejo de varias solicitudes simultáneas en una sola instancia de función. Esto puede ser útil para prevenir inicios en frío, ya que una instancia ya preparada puede procesar varias solicitudes de forma simultánea, lo que reduce la latencia general.

Cuando la simultaneidad está habilitada, las funciones de Cloud Run (2nd gen) no proporcionan aislamiento entre las solicitudes simultáneas que procesa la misma instancia de función. En esos casos, debes asegurarte de que el código de la función sea seguro para ejecutarse de manera simultánea. Ten en cuenta las siguientes consideraciones sobre ciertos entornos de ejecución de lenguajes:

  • Por su parte, Node.js tiene un solo subproceso. Para aprovechar la simultaneidad, usa el estilo de código asíncrono de JavaScript, que es idiomático en Node.js. Consulta Control de flujo asíncrono en la documentación oficial de Node.js para obtener más información.

  • Recomendamos comenzar con una simultaneidad más baja, como 8 y, luego, aumentarla. Comenzar con una simultaneidad demasiado alta podría provocar un comportamiento no deseado debido a limitaciones de recursos (como memoria o CPU).

  • En el caso de Python 3.8 y versiones posteriores, la compatibilidad con una alta simultaneidad por instancia de función requiere suficientes subprocesos para controlar la simultaneidad. Te recomendamos que establezcas una variable de entorno de ejecución para que el valor de subprocesos sea igual al valor de simultaneidad, por ejemplo: THREADS=8.

De forma predeterminada, las instancias de función controlan solo una solicitud a la vez. Puedes cambiar este comportamiento por función si configuras un valor de simultaneidad como se muestra en la siguiente sección.

Configura un valor de simultaneidad

El valor de simultaneidad predeterminado es 1. Puedes configurar el valor de simultaneidad de una función para anular el valor predeterminado. El valor de simultaneidad representa la cantidad máxima de solicitudes simultáneas que puede controlar una sola instancia de la función.

Un valor de simultaneidad mayor que 1 da como resultado que el código de tu función se ejecute de forma simultánea en una sola instancia. El valor máximo de simultaneidad es 1,000 (aunque recomendamos comenzar con un valor menor y aumentarlo progresivamente). Para configurar un valor de simultaneidad mayor que 1, se requiere que una función tenga 1 o más CPU virtuales. Consulta Límites de memoria para conocer los valores predeterminados de memoria y CPU virtuales.

Puedes configurar la simultaneidad para una función de cualquiera de las siguientes maneras:

Configura la simultaneidad con funciones de Cloud Run

gcloud

Puedes configurar un valor de simultaneidad con gcloud CLI mediante la implementación de una función con la marca --concurrency:

gcloud functions deploy YOUR_FUNCTION_NAME \
--gen2 \
--concurrency=CONCURRENCY_VALUE \
FLAGS...

En el ejemplo anterior, CONCURRENCY_VALUE es la cantidad máxima de solicitudes simultáneas permitidas por instancia de contenedor. Deja la simultaneidad sin especificar para recibir el valor predeterminado del servidor.

Console

Para configurar un valor de simultaneidad con la consola de Google Cloud, sigue estos pasos:

  1. Ve a la página Descripción general de funciones de Cloud Run en la consola de Google Cloud.
  2. Haz clic en el nombre de tu función para ir a la página Detalles de la función.
  3. Haz clic en Editar.
  4. Expande la sección Entorno de ejecución, compilación... al final de la página y haz clic en la pestaña Entorno de ejecución.
  5. En Simultaneidad, ingresa un valor de simultaneidad en el campo Cantidad máxima de solicitudes simultáneas por instancia.
  6. Haz clic en Siguiente.
  7. Haz clic en Implementar.

    Este es un paso necesario para que los cambios entren en vigor.

Configura la simultaneidad con Cloud Run

gcloud

Para configurar un valor de simultaneidad con la CLI de gcloud, actualiza el servicio subyacente de Cloud Run y especifica la marca --concurrency:

gcloud run services update YOUR_FUNCTION_NAME --concurrency CONCURRENCY_VALUE

En el ejemplo anterior, CONCURRENCY_VALUE es la cantidad máxima de solicitudes simultáneas permitidas por instancia de contenedor. Deja la simultaneidad sin especificar para recibir el valor predeterminado del servidor.

Console

Para configurar un valor de simultaneidad con la consola de Google Cloud, sigue estos pasos:

  1. Ve a la página Descripción general de funciones de Cloud Run en la consola de Google Cloud.
  2. Haz clic en el nombre de tu función para ir a la página Detalles de la función.
  3. En el panel Con la tecnología de Cloud Run, haz clic en el nombre de tu función para ir a la página Detalles del servicio del servicio subyacente de Cloud Run.
  4. Haz clic en Editar e implementar nueva revisión en la parte superior de la página.
  5. Abre la pestaña Contenedor.
  6. Ingresa un valor de simultaneidad en el campo Cantidad máxima de solicitudes simultáneas por instancia.

    Si el valor que proporcionaste para la Cantidad máxima de solicitudes simultáneas por instancia es mayor que 1, desplázate hacia abajo y abre la sección Contenedores. Asegúrate de que el campo de CPU contenga un valor de 1 o más.

  7. Haz clic en Implementar.

    Este es un paso necesario para que los cambios entren en vigor.

Las funciones de Cloud Run se basan en la compatibilidad de simultaneidad proporcionada por Cloud Run. Para obtener más información, consulta Cantidad máxima de solicitudes simultáneas por instancia (servicios) en la documentación de Cloud Run.