En esta página se describe el comportamiento predeterminado del autoescalado de Cloud Run. Si necesitas más control sobre el comportamiento del escalado, consulta la opción de escalado alternativa, escalado manual.
De forma predeterminada, cada revisión de Cloud Run se escala automáticamente al número de instancias necesarias para gestionar todas las solicitudes, eventos o uso de la CPU entrantes.
Cuando una revisión no recibe tráfico, de forma predeterminada se reduce a cero instancias. Sin embargo, si es necesario, puede cambiar este valor predeterminado para especificar una instancia que se mantenga inactiva o "caliente" mediante el ajuste Número mínimo de instancias. Si usas la CPU fuera de las solicitudes, debes definir el número mínimo de instancias como 1
.
Además de la tasa de solicitudes entrantes, eventos o utilización de la CPU, el número de instancias programadas se ve afectado por lo siguiente:
- El uso medio de CPU de las instancias existentes en un periodo de un minuto, con el objetivo de mantener el uso de CPU de las instancias programadas en el 60 %.
- La simultaneidad de solicitudes actual en comparación con la simultaneidad máxima en un periodo de un minuto.
- El número máximo de instancias
- El número mínimo de instancias
El escalador automático de Cloud Run evalúa estos valores periódicamente.
Facturación y autoescalado basados en instancias
Si configuras la facturación basada en instancias de tu servicio de Cloud Run, debes tener en cuenta el comportamiento de escalado a y desde cero.
Escalar desde cero. El escalado desde cero solo se puede activar mediante una solicitud, por lo que un servicio que no procese solicitudes no puede escalarse desde cero. En estas cargas de trabajo, puedes definir un número mínimo de instancias superior a 0 o incluir una "solicitud de activación" en tu diseño para reiniciar el procesamiento después de escalar a cero.
Escalado a cero. Dado que ninguna instancia tiene un uso de CPU del 0 %, si se tiene en cuenta el uso de CPU de todas las instancias, nunca se reducirá a cero. Esto significa que la decisión de escalar de uno a cero solo se puede tomar comprobando si la instancia está procesando una solicitud.
Información sobre el número máximo de instancias
En algunos casos, puede que quieras limitar el número total de instancias que se pueden iniciar por motivos de control de costes o para mejorar la compatibilidad con otros recursos que utilice tu servicio. Por ejemplo, tu servicio de Cloud Run puede interactuar con una base de datos que solo puede gestionar un número determinado de conexiones abiertas simultáneas.
Puedes usar el ajuste de instancias máximas para limitar el número total de instancias que se pueden iniciar en paralelo, tal como se explica en el artículo Definir un número máximo de instancias.
Superar el número máximo de instancias
En circunstancias normales, tu revisión se amplía creando nuevas instancias para gestionar la carga de tráfico entrante. Sin embargo, si estableces un límite máximo de instancias, en algunos casos no habrá suficientes instancias para satisfacer esa carga de tráfico. En ese caso, las solicitudes entrantes se ponen en cola (pendientes) de la siguiente manera:
Las solicitudes se quedarán pendientes hasta 3, 5 veces el tiempo medio de inicio de las instancias de contenedor de este servicio o 10 segundos, lo que sea mayor.
Durante este periodo, si una instancia termina de procesar solicitudes, estará disponible para procesar las solicitudes pendientes en cola.
Si no hay ninguna instancia disponible durante el periodo, la solicitud fallará y se devolverá el código de error 429
.
Garantías de escalado
El límite máximo de instancias es un límite superior por revisión, lo que significa que el número de instancias de esta revisión no debe superar el máximo.
En circunstancias normales, Cloud Run puede escalar verticalmente hasta el límite máximo de instancias muy rápido para gestionar todas las solicitudes o eventos entrantes. Sin embargo, establecer un límite alto no significa que tu revisión pueda escalar al número de instancias especificado en cualquier momento. En circunstancias excepcionales, Cloud Run puede limitar el escalado para asegurar un buen servicio a todos los clientes.
Se supera el número máximo de instancias debido a picos de tráfico
En algunos casos, como picos de tráfico rápidos o mantenimiento del sistema, Cloud Run puede crear, durante un breve periodo, más instancias de las que se especifican en el ajuste de instancias máximas. Se pueden iniciar nuevas instancias que superen el ajuste de instancias máximas para sustituir las instancias actuales y ofrecer un periodo de gracia para que se terminen de procesar las solicitudes en curso.
El límite máximo de instancias se puede superar en condiciones normales unas cuantas veces por semana. El periodo de gracia suele durar hasta 15 minutos o hasta el valor especificado en el ajuste Tiempo de espera de la solicitud. Estas instancias adicionales se destruyen en un plazo de 15 minutos después de que se queden inactivas.
Si se necesitan muchas sustituciones, las actualizaciones suelen distribuirse a lo largo de varios minutos u horas, pero cada sustitución tiene una instancia adicional solo durante el periodo de gracia. Las instancias que superan el valor máximo de instancias suelen ser menos del doble del límite máximo de instancias configurado, pero pueden ser mucho mayores en caso de picos de tráfico repentinos.
En las pruebas de carga, se supera el ajuste de instancias máximas más veces porque el sistema puede cambiar el lugar donde se sirven los picos de tráfico para conservar la capacidad de las cargas de trabajo que tienen patrones de carga sostenidos.
Si tu servicio no puede tolerar este comportamiento temporal, te recomendamos que incluyas un margen de seguridad y definas un valor de instancias máximo inferior.
Divisiones del tráfico
Como el límite de instancias máximas es un límite para cada revisión, si el servicio divide el tráfico entre varias revisiones, el número total de instancias del servicio puede superar el número máximo de instancias por revisión. Esto se puede observar en las métricas de Número de instancias.
Despliegues
Cuando implementas una nueva revisión para que sirva el 100% del tráfico, Cloud Run inicia suficientes instancias de la nueva revisión antes de dirigir el tráfico a ella. De esta forma, se reduce el impacto de las implementaciones de nuevas revisiones en las latencias de las solicitudes, sobre todo cuando se sirve un volumen de tráfico elevado. Como el límite de instancias máximas es por revisión, durante un despliegue, el número total de instancias del servicio puede superar el número máximo de instancias por revisión. Esto se puede observar en las métricas de Número de instancias.
Instancias inactivas y minimización de los arranques en frío
Cloud Run no cierra las instancias inmediatamente después de que hayan gestionado todas las solicitudes. Para minimizar el impacto de los arranques en frío, Cloud Run puede mantener algunas instancias inactivas durante un máximo de 15 minutos. Los recursos de Cloud Run que tengan las GPUs habilitadas pueden mantener algunas instancias inactivas durante un máximo de 10 minutos. Estas instancias están listas para gestionar solicitudes en caso de que se produzca un pico de tráfico repentino.
Por ejemplo, cuando una instancia ha terminado de gestionar solicitudes, puede permanecer inactiva durante un periodo de tiempo por si es necesario gestionar otra solicitud. Una instancia inactiva puede conservar recursos, como conexiones de bases de datos abiertas. Ten en cuenta que la configuración de facturación predeterminada es la facturación basada en solicitudes, a menos que configures explícitamente tu servicio para que tenga la facturación basada en instancias.
Para que las instancias inactivas estén disponibles permanentemente, usa el ajuste min-instance
. Ten en cuenta que el uso de esta función generará costes incluso cuando el servicio no esté atendiendo solicitudes de forma activa.
Autoescalado y solicitudes pendientes
Las solicitudes se quedarán pendientes hasta 3, 5 veces el tiempo medio de inicio de las instancias de contenedor de este servicio o 10 segundos, lo que sea mayor.
Impacto del autoescalado en los servicios de respaldo
A medida que aumenta automáticamente el número de instancias, es posible que tu servicio de Cloud Run alcance los límites de sus servicios de respaldo. Por ejemplo, Cloud SQL tiene un límite de cuota de API. Asegúrate de que estos servicios de backend tengan suficiente cuota y puedan gestionar las conexiones de todas las instancias de tu servicio de Cloud Run. Te recomendamos que definas un número máximo de instancias para evitar que se sobrecarguen los servicios de backend.
Autoescalado y Pub/Sub
Google recomienda usar suscripciones push para consumir mensajes de un tema de Pub/Sub en Cloud Run. El contenedor recibe los mensajes push como solicitudes HTTP, lo que activa el mismo comportamiento de escalado automático.
Autoescalado y varios contenedores (sidecars)
Cloud Run tiene en cuenta el uso de CPU de las instancias para el autoescalado. El uso de CPU de una instancia es el porcentaje de CPU asignada que se está usando.
Ten en cuenta que asignas CPU cuando defines límites de CPU a nivel de contenedor. Si usas varios contenedores por instancia, la asignación de CPU real de esa instancia es la suma de los límites de CPU que hayas definido en cada contenedor.
Siguientes pasos
- Para obtener información sobre otras opciones de escalado, consulta el escalado manual.
- Para gestionar el número máximo de instancias de tus servicios de Cloud Run, consulta Definir un número máximo de instancias.
- Para gestionar el número máximo de solicitudes simultáneas que gestiona cada instancia, consulta Configurar la simultaneidad.
- Para optimizar la configuración de simultaneidad, consulta los consejos de desarrollo para ajustar la simultaneidad.
- Para especificar una instancia inactiva que se mantenga en ejecución para minimizar la latencia o los arranques en frío en las primeras solicitudes, consulta Usar
min-instance
para habilitar instancias inactivas.