Controla el comportamiento del escalamiento

La cantidad máxima de instancias en Cloud Functions es una función que te permite limitar el grado en que tu función se escalará verticalmente en respuesta a las solicitudes entrantes.

En Cloud Functions, el escalamiento se logra creando nuevas instancias de tu función. Cada una de estas instancias solo puede manejar una solicitud a la vez, por lo que los picos grandes en el volumen de solicitudes pueden generar muchas instancias.

Por lo general, esto es conveniente, pero en algunos casos es posible que desees limitar la cantidad total de instancias que pueden coexistir en un momento determinado. Por ejemplo, tu función puede interactuar con una base de datos que solo pueda controlar una cierta cantidad de conexiones abiertas simultáneas.

Usa cantidades máximas de instancias

Puedes establecer cantidades máximas de instancias para una función individual durante la implementación. Cada función puede tener su propia cantidad máxima de instancias. Las funciones se escalan de forma independiente unas de otras.

Configura el límite máximo de instancias

Para establecer el límite máximo de instancias a través de la herramienta de línea de comandos de gcloud, usa la marca --max-instances en el momento de la implementación:

gcloud functions deploy FUNCTION_NAME --max-instances 10 FLAGS...

En el ejemplo anterior, FLAGS... refiere a otras opciones que pasas durante la implementación de tu función. Para obtener una referencia completa del comando deploy, consulta gcloud functions deploy.

También puedes establecer cantidades máximas de instancias durante la creación de funciones en GCP Console. Para ello, sigue estos pasos:

  1. Ve a la página Descripción general de Cloud Functions.

  2. Haz clic en Crear función.

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

  4. Haz clic en Más para expandir la configuración avanzada.

  5. En la sección Cantidad máxima de instancias de la función, ingresa el valor deseado.

Borra el límite máximo de instancias

Si deseas borrar el límite establecido en tu función, puedes usar el marcador --clear-max-instances en el momento de la implementación:

gcloud functions deploy FUNCTION_NAME --clear-max-instances

También puedes borrar el límite máximo de instancias en GCP Console:

  1. Ve a la página Descripción general de Cloud Functions.

  2. Haz clic en una función existente para ir a la página de detalles.

  3. Haz clic en Editar.

  4. Haz clic en Más para expandir la configuración avanzada.

  5. En la sección Cantidad máxima de instancias de la función, ingresa “0” o deja el campo vacío.

Límites y prácticas recomendadas

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

Controla las solicitudes cuando todas las instancias están ocupadas

En circunstancias normales, tu función se escala verticalmente mediante la creación de 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 suficientes instancias para cumplir con esa carga de tráfico.

En tal caso, Cloud Functions intentará entregar una solicitud entrante nueva durante un período breve:

  • Si una instancia termina de procesar su solicitud durante este período, es posible que comience a procesar la solicitud entrante nueva.
  • Si no hay ninguna instancia disponible, la solicitud falla y se muestra un código de estado de respuesta 429 Too Many Requests al emisor.

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

Cuando especificas un límite máximo de instancias, estás estableciendo un límite superior. Establecer un límite grande no significa que tu función escalará verticalmente al número especificado de instancias. Solo significa que el número de instancias que coexisten en cualquier momento no debe exceder el límite.

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

Controla los picos de tráfico

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

Implementaciones

Cuando implementas una nueva versión de tu función, Cloud 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 tu 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, esta función puede tener hasta 10 instancias totales (5 para cada versión de tu función) durante el período posterior a la implementación de la versión nueva. El tiempo requerido de finalización de las instancias de la función anterior depende del tiempo requerido para que esas instancias terminen de controlar cualquier solicitud activa. Este es un factor adicional que debe tenerse en cuando se selecciona un límite máximo de instancias.

Instancias inactivas y minimización de inicios en frío

Para minimizar el impacto de inicios en frío, Cloud Functions a menudo mantendrá una reserva de instancias inactivas para tu función. Estas instancias están listas para manejar solicitudes en caso de un aumento de tráfico repentino.

Por ejemplo, cuando una instancia termina de controlar una solicitud, esa instancia puede permanecer inactiva por un período en caso de que necesite controlar una solicitud entrante. Una instancia inactiva puede conservar recursos, como conexiones de bases de datos abiertas, en caso de que se deba procesar otra solicitud. Estas instancias inactivas se consideran en el límite máximo para una versión determinada de tu función. No se te facturará por estas instancias inactivas.

Borra el límite máximo de instancias

Establecer las instancias máximas en “0” hace que se borren los límites máximos de instancias existentes. Establecer un valor “0” no detiene tu función.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Cloud Functions