Simultaneidad

Cloud Functions (2nd gen) admite 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, Cloud Functions (2nd gen) no proporciona 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).

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:

  • Cloud Functions: la CLI de gcloud o la consola de Google Cloud.
  • Cloud Run: la CLI de gcloud o la consola de Google Cloud.

Configura la simultaneidad con Cloud Functions

gcloud

Puedes configurar un valor de simultaneidad con la CLI de gcloud mediante la implementación de una función de 2ª gen. 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.

Consola

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 Cloud Functions 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. Haga 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.

Consola

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 Cloud Functions 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.

Cloud Functions (2nd gen) se basa 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.