De forma predeterminada, los servicios de Cloud Run tienen una cantidad máxima de instancias determinada por el más bajo de los siguientes límites de cuota pertinentes. El límite máximo para cada región también se ve afectado por la configuración de CPU y memoria de tu servicio de Cloud Run. Específicamente, la cantidad máxima de instancias disponibles para tu servicio es el mínimo de cada uno de los siguientes valores:
- Cuota de CPU regional dividida por la configuración de CPU del servicio.
- Cuota de memoria regional dividida por la configuración de memoria del servicio.
- Cuota de GPU regional, con o sin redundancia zonal, dividida por la configuración de GPU para el servicio
Por ejemplo, una cuota de referencia de 1,000 CPU virtuales o 2,000 GiB de memoria permitiría que una implementación que usa 2 GiB de memoria o 1 CPU especifique un máximo de 1,000 instancias para un solo servicio.
Estas cuotas también se contabilizan como la suma de todos los recursos en uso en la región en todos tus recursos de Cloud Run. Es posible que experimentes fallas en el escalamiento vertical o en el inicio de nuevas ejecuciones de trabajos si tu uso total alcanza uno de estos límites.
Puedes ver los límites totales de CPU, memoria y GPU de referencia por región en la cuota de tu región en la página de cuotas de la consola.
Cómo aumentar la cuota regional de referencia
Si necesitas una mayor cantidad total de CPU, memoria o GPU para la región en la que se implementa tu servicio de Cloud Run, puedes solicitar un aumento de cuota.
Prácticas recomendadas para establecer la cantidad máxima de instancias
En la siguiente sección, se describen las prácticas recomendadas para configurar los límites máximos de instancias para tus servicios.
Valor máximo óptimo de instancias para servicios controlados por eventos
Los servicios controlados por eventos, como las funciones, pueden experimentar picos de tráfico esporádicos según los eventos entrantes. Para determinar un valor óptimo de instancias máximas para estos servicios, debes tener en cuenta factores como el tiempo de invocación del servicio, la invocación promedio esperada, la frecuencia de invocación máxima y la tolerancia a fallas para las fallas de invocación.
Una buena regla general es comenzar con un valor máximo de 3 instancias y, luego, supervisar las fallas de invocación y ajustar el valor máximo de instancias hacia arriba según sea necesario.
Controla las solicitudes cuando todas las instancias están ocupadas
En circunstancias normales, tu servicio se escala 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 suficientes instancias para cumplir con esa carga de tráfico entrante.
En ese caso, Cloud Run intenta entregar una solicitud entrante nueva durante un máximo de 30 segundos:
- 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 fallará.
Cloud Run guarda automáticamente los eventos destinados a los servicios controlados por eventos hasta que haya capacidad disponible.
Límites máximos de instancias que exceden la capacidad de escalamiento de Cloud Run
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 servicio escalará verticalmente al número especificado de instancias. Solo significa que la cantidad 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 Run usa para satisfacer tu demanda de tráfico. En general, Cloud Run 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 Run puede, por un período breve, crear más instancias que el límite máximo especificado. Si tu servicio 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 servicio.
Implementaciones
Cuando implementas una revisión nueva, Cloud Run migra el tráfico de la revisión anterior a la nueva. Debido a que los límites de instancias máximas se establecen para cada revisión de forma independiente, puedes exceder temporalmente el límite especificado durante el período posterior a la implementación.
Por ejemplo, un servicio puede tener un límite máximo de 5 instancias. En circunstancias normales, el servicio escala verticalmente hasta 5 instancias mientras controla las solicitudes. Cuando implementas una revisión nueva, esa revisión tiene su propio límite máximo de 5 instancias.
Las solicitudes que ya controla la revisión anterior no se interrumpen cuando implementas una revisión nueva. Por el contrario, estas solicitudes continuarán progresando. La revisión de tu servicio que se implementó recientemente controlará las solicitudes entrantes nuevas.
Por lo tanto, el servicio del ejemplo anterior puede tener hasta 10 instancias totales (5 para cada revisión) durante el período posterior a la implementación de la revisión nueva. El tiempo de finalización requerido de las instancias de la revisión anterior depende del tiempo requerido para que esas instancias terminen de controlar cualquier solicitud activa. Este es un factor adicional que se debe tener en cuenta cuando se selecciona un límite máximo de instancias.