Configura la cantidad máxima de instancias (1ª gen.)

El comportamiento del escalamiento de las funciones se puede controlar estableciendo una cantidad máxima de instancias de Cloud Run Functions. Esto permite controlar el costo y evitar que los recursos downstream se sobrecarguen con tráfico.

Cloud Run Functions escala creando instancias nuevas de las funciones. Cada una de estas instancias solo puede controlar una solicitud a la vez, por lo que los grandes aumentos repentinos del volumen de solicitudes pueden generar muchas instancias.

El escalado automático resulta beneficioso la mayor parte del tiempo, pero en algunos casos, te recomendamos limitar la cantidad total de instancias que pueden existir en un momento determinado. Por ejemplo, una función puede interactuar con una base de datos que solo puede controlar una cierta cantidad de conexiones abiertas.

Establece y borra los límites máximos de instancias

Durante la implementación, se puede establecer una cantidad máxima de instancias para una función. Cada función tiene su propia cantidad máxima de instancias establecida. Las funciones escalan de forma independiente unas de otras.

Establece el límite máximo de instancias

Puedes establecer un límite máximo de instancias con la Google Cloud CLI o la consola de Google Cloud . Si no especificas un límite, Cloud Run Functions establecerá un valor predeterminado de 3,000.

Para establecer un límite máximo de instancias, haz lo siguiente:

Consola

  1. Accede a la página Resumen de Cloud Run Functions.

  2. Haz clic en Crear función.

  3. Completa los campos obligatorios para la función.

  4. Expande la sección Runtime, build… al final de la página y haz clic en la pestaña Entorno de ejecución.

  5. En el campo Cantidad máxima de instancias, en la sección Ajuste de escala automático, ingresa un valor o usa la configuración predeterminada.

gcloud

Para establecer un límite máximo de instancias, ejecuta el comando deploy con la marca --max-instances como se indica a continuación:

gcloud functions deploy FUNCTION_NAME --max-instances MAX_INSTANCE_LIMIT

Reemplaza lo siguiente:

  • FUNCTION_NAME: es el nombre de la función.

  • MAX_INSTANCE_LIMIT: es el número que se establecerá como el límite máximo de instancias, por ejemplo, 3,000.

Borra el límite máximo de instancias

Es posible borrar el límite máximo de instancias de una función con la herramienta de línea de comandos de gcloud o la consola de Google Cloud .

Consola

Para borrar el límite máximo de instancias de una función, haz lo siguiente:

  1. Accede a la página Resumen de Cloud Run Functions.

  2. Haz clic en una función existente para acceder a la página de detalles. Puedes ver el límite actual máximo de instancias de la función en la pestaña Detalles.

  3. Haz clic en Editar.

  4. Expande la sección Runtime, build… al final de la página y haz clic en la pestaña Entorno de ejecución.

  5. En el campo Cantidad máxima de instancias, en la sección Ajuste de escala automático, ingresa 0.

gcloud

Para borrar el límite máximo de instancias de una función, ejecuta el comando deploy con la marca --clear-max-instances como se indica a continuación:

gcloud functions deploy FUNCTION_NAME --no-gen2 --clear-max-instances

Límites y prácticas recomendadas

En esta sección, se brindan pautas para usar la cantidad máxima de instancias.

Elige un valor máximo de instancias

El valor óptimo para la cantidad máxima de instancias depende de las características de la función, incluido el tiempo que tarda en ejecutarse una invocación, su frecuencia de invocación promedio y máxima prevista, y la tolerancia de la aplicación ante las fallas de invocación. Una buena regla general es empezar con un valor máximo de 3 instancias y, luego, supervisar las fallas de invocación y aumentar el valor máximo de instancias según sea necesario.

Protege las instancias del escalamiento vertical excesivo

Cuando no se especifica un límite máximo de instancias, Cloud Run Functions favorece el escalamiento vertical para satisfacer la demanda por sobre la limitación de la capacidad de procesamiento. Esto significa que la cantidad de instancias simultáneas que tu función puede tener es, de hecho, ilimitada, a menos que hayas configurado ese límite.

Recomendamos asignar un límite de --max-instances a cualquier función que envíe solicitudes a servicios downstream con capacidad de procesamiento limitada o que no sean escalables. Un límite máximo de instancias mejora la estabilidad general del sistema y favorece la protección contra niveles de solicitudes más altos de lo común.

Controla las solicitudes cuando todas las instancias están ocupadas

En circunstancias normales, la función se escala verticalmente creando instancias nuevas para controlar la carga de tráfico entrante. Sin embargo, cuando estableces un límite máximo de instancias, puede darse una situación en la que no hay instancias suficientes para cumplir con esa carga de tráfico entrante.

En ese caso, Cloud Run Functions intenta entregar una solicitud entrante nueva durante un tiempo máximo de 30 segundos:

  • Si una instancia termina de procesar su solicitud durante este período, es posible que empiece a procesar la solicitud entrante nueva.
  • Si no hay ninguna instancia disponible, la solicitud fallará.

Las solicitudes que se envían a funciones de HTTP sobrecargadas fallan con alguno de los códigos de respuesta que se indican a continuación:

  • 429 Too Many Requests si se establece un valor máximo de instancias, o
  • 500 Internal Server Error si no se establece ningún valor máximo de instancias.

Los eventos destinados a funciones basadas en eventos se guardarán automáticamente hasta que la capacidad esté disponible.

Límites máximos de instancias que exceden la capacidad de escalamiento de Cloud Run Functions

Cuando especificas un límite máximo de instancias, estableces un límite superior. Establecer un límite amplio no significa que la función escalará verticalmente hasta la cantidad especificada de instancias. Solo significa que la cantidad de instancias que coexisten en cualquier momento no debe superar ese límite.

Además, establecer un límite máximo de instancias puede afectar las estrategias de escalamiento que Cloud Run Functions usa para cumplir con tu demanda de tráfico. En general, Cloud Run Functions priorizará el cumplimiento del límite especificado en lugar de escalar verticalmente y superarlo.

Controla los aumentos repentinos de tráfico

En algunos casos, como cuando surgen picos de tráfico rápidos, Cloud Run Functions puede, durante un período breve, crear más instancias que el límite máximo especificado. Si la función no puede tolerar este comportamiento temporal, te recomendamos tener en cuenta un margen de seguridad y establecer un valor de instancias máximo inferior al que puede tolerar la función.

Implementaciones

Cuando implementas una versión nueva de la función, Cloud Run Functions migra el tráfico de la versión anterior a la nueva. Debido a que los límites de instancias máximas se establecen para cada versión de la función de forma independiente, puedes exceder temporalmente el límite especificado durante el período posterior a la implementación.

Por ejemplo, una función puede tener un límite máximo de 5 instancias. En circunstancias normales, la función escala verticalmente hasta 5 instancias mientras controla las solicitudes. Cuando se implementa una versión nueva de la función, esa versión tiene su propio límite máximo de 5 instancias.

Las solicitudes que controla la versión anterior de la función actualmente no se interrumpen cuando se implementa una versión nueva de la función. Por el contrario, estas solicitudes continuarán progresando. La versión de la función que se implementó recientemente controlará las solicitudes entrantes nuevas.

Por lo tanto, la función del ejemplo anterior puede tener hasta 10 instancias en total (5 para cada versión de la función) durante el período posterior a la implementación de la versión nueva. El tiempo requerido para que las instancias de la función anterior finalicen depende del tiempo requerido para que esas instancias terminen de controlar cualquier solicitud activa. Este es un factor adicional que debe tenerse en cuenta a la hora de establecer un límite máximo de instancias.

Borra el límite máximo de instancias

Establecer una cantidad máxima de instancias de 0 para una función borra el límite máximo de instancias existentes de la función, pero no la pausa.