En esta página, se describe el comportamiento predeterminado del ajuste de escala automático de Cloud Run. Para ver una opción de ajuste de escala alternativa en la que puedes configurar un recuento de instancias específico, consulta Ajuste de escala manual.
De forma predeterminada, cada revisión de Cloud Run se escala automáticamente a la cantidad de instancias necesarias para controlar las solicitudes entrantes, los eventos o la utilización de CPU. También puedes ajustar este comportamiento de escalamiento configurando objetivos personalizados de CPU y uso.
Cuando una revisión no recibe tráfico, la cantidad de instancias se reduce a cero de forma predeterminada. Puedes cambiar este valor predeterminado para especificar que una instancia se mantenga inactiva o “en espera” con la configuración de instancias mínimas. Si tu servicio usa la CPU incluso cuando no procesa solicitudes, debes establecer las instancias mínimas en 1.
El escalador automático de Cloud Run evalúa las siguientes métricas de forma periódica para determinar la cantidad de instancias necesarias para atender el tráfico:
Uso de CPU y simultaneidad: Cloud Run ajusta el recuento de instancias para mantener el promedio de CPU y la simultaneidad dentro de los umbrales objetivo.
Límites de instancias: Cloud Run limita la cantidad de instancias entre los límites máximo y mínimo que configures.
Comportamiento del ajuste de escala automático horizontal del servicio
Cloud Run tiene dos mecanismos de ajuste de escala automático, el ajuste de escala basado en métricas y el ajuste de escala a pedido, para determinar la cantidad de instancias necesarias para atender el tráfico.
Escalamiento basado en métricas
El ajuste de escala basado en métricas ajusta automáticamente la cantidad de instancias según el uso promedio de CPU y los factores de ajuste de escala de simultaneidad promedio de solicitudes para proporcionar una capacidad de entrega estable para tu servicio de Cloud Run.
El escalador automático determina una cantidad recomendada de instancias según la cantidad máxima de instancias que calcula para cada uno de los siguientes factores de escalamiento de forma independiente:
Uso de CPU: Calcula la cantidad de instancias promediando el uso de CPU por segundo durante un período de 1 minuto y divide este valor por la cantidad de CPU por instancia. Este resultado se divide aún más por el objetivo de CPU.
Simultaneidad de solicitudes: Calcula la cantidad de instancias promediando la simultaneidad de solicitudes por segundo durante un período de 1 y 10 minutos, y divide este valor por la simultaneidad máxima. Este resultado se divide aún más según el objetivo de simultaneidad de la solicitud.
Para cada revisión del servicio, puedes configurar la cantidad de CPU por instancia y la simultaneidad máxima.
Cloud Run no admite el ajuste de escala según el uso de memoria.
De forma predeterminada, el escalamiento basado en métricas establece un umbral del 60% para los objetivos de uso de CPU y simultaneidad de solicitudes. Puedes habilitar los controles de ajuste de escala (versión preliminar) para especificar objetivos personalizados de CPU o simultaneidad.
Cuando Cloud Run realiza el ajuste de escala según el uso de CPU, considera el uso promedio de CPU en todas las CPUs asignadas a una instancia. Si tu aplicación es de un solo subproceso, pero se implementa en una instancia de varias CPU, esto puede generar una lectura de uso promedio baja, lo que podría afectar la forma en que se toman las decisiones de ajuste de escala basadas en la CPU. Para obtener más detalles sobre la optimización de la configuración de CPU para la arquitectura de tu aplicación, consulta Configura límites de CPU y Configura solicitudes simultáneas máximas por instancia.
Escalamiento vertical
Cloud Run aumenta la cantidad de instancias según el factor de escalamiento que requiera más instancias. Para evitar que las instancias se inicien y detengan rápidamente durante los cambios menores en el tráfico, el escalador automático espera hasta que la utilización alcance aproximadamente el 90% de la capacidad antes de aumentar el recuento de instancias.
Puedes habilitar los controles de ajuste de escala (versión preliminar) para cambiar a un modelo de ajuste de escala automático de mayor precisión en el que el ajuste de escala automático basado en métricas de Cloud Run responde de cerca a los objetivos que configuras, incluso para los servicios con una baja cantidad de instancias. Si tu servicio difiere de tus configuraciones de destino personalizadas en más del umbral de tolerancia del 10%, Cloud Run recomienda la cantidad requerida de instancias para que el controlador de escalamiento que activa el escalamiento quede por debajo del objetivo.
Reducción de escala vertical
El escalamiento automático de Cloud Run reduce la cantidad de instancias en ejecución cuando ya no son necesarias para atender el tráfico entrante. El escalamiento basado en métricas ajusta continuamente la cantidad de instancias que recomienda según la utilización.
Cuando disminuye el uso promedio de la CPU o las solicitudes activas promedio, el algoritmo de ajuste de escala reduce la cantidad recomendada de instancias. El balanceador de cargas de solicitudes de Cloud Run tiene en cuenta estas recomendaciones y, para ello, enruta de forma preferencial las solicitudes entrantes primero a las instancias recomendadas. Esto hace que las instancias recomendadas estén más ocupadas y que otras instancias queden inactivas. Cloud Run reduce la cantidad de estas instancias no recomendadas al quitarles prioridad para que solo reciban tráfico si todas las instancias recomendadas están ocupadas. Para mantener la estabilidad, Cloud Run cierra las instancias con prioridad más baja en el siguiente orden:
- Cloud Run apaga un grupo de instancias cuando su uso durante un período de 1 minuto es inferior al 10%.
- Un segundo grupo de instancias permanece en ejecución hasta que se produce un tiempo de espera por inactividad de 15 minutos, lo que garantiza que haya capacidad disponible en caso de un aumento repentino del tráfico.
Escalamiento a pedido
Cloud Run usa el ajuste de escala a pedido cuando no puede encontrar una instancia disponible para atender la solicitud entrante. El escalamiento a pedido responde en tiempo real a los cambios en el tráfico entrante en una revisión de Cloud Run o en la latencia de la revisión. Este ajuste de escala intenta garantizar que cada solicitud entrante se enrute a una instancia en un breve período y es el único factor que impulsa el ajuste de escala desde cero.
Dado que el ajuste de escala a pedido responde en tiempo real a los cambios repentinos en el tráfico, Cloud Run administra la compensación entre la latencia de inicio en frío (el tiempo para iniciar una instancia nueva) y la latencia de la cola pendiente (el tiempo que una solicitud espera a que se abra un espacio en una instancia existente). Para cada solicitud, el sistema determina si es más rápido poner en cola una instancia próxima o una instancia existente (en ese orden) antes de intentar iniciar una nueva instancia bajo demanda. Una solicitud permanece en la cola de pendientes durante un máximo de 10 segundos o 3.5 veces el tiempo de inicio en frío previsto (el que sea mayor) antes de que el sistema active una nueva instancia a pedido.
Ajuste adaptable de la simultaneidad (ACT)
Cloud Run usa el ajuste de simultaneidad adaptable (ACT) para evitar que la limitación de CPU provoque una latencia alta de las solicitudes. Este enfoque mide el uso de CPU de cada instancia en una cantidad determinada de solicitudes y ajusta el valor máximo de solicitudes simultáneas de la instancia de forma dinámica para mantener el uso de CPU por debajo del 90%. ACT ajusta la simultaneidad según las siguientes situaciones:
Cada vez que el uso de CPU durante el último segundo supera el 90%, ACT reduce en 1 la cantidad máxima de solicitudes simultáneas de la instancia.
Si la instancia alcanza su límite máximo de solicitudes simultáneas y el uso de CPU se mantiene por debajo del 70% durante 1 segundo, ACT aumenta en 1 el límite máximo de solicitudes simultáneas para la instancia.
Si tus métricas de escalamiento muestran que la simultaneidad nunca alcanza el máximo configurado, es posible que ACT haya reducido de forma dinámica el máximo real para proteger el rendimiento de la instancia.
Cloud Run calcula los valores de ACT para cada implementación. Estas métricas no persisten entre las implementaciones. Si ACT reduce la simultaneidad por debajo del nivel preferido, aumenta la CPU asignada por solicitud simultánea máxima. Las tareas en segundo plano que provocan picos periódicos de CPU también pueden interferir en este enfoque de ajuste. Las métricas de ACT no son observables.
Facturación y ajuste de escala automático basados en instancias
Si configuras la facturación basada en instancias para tu servicio de Cloud Run, debes tener en cuenta el comportamiento del escalamiento a cero y desde cero.
Escalamiento desde cero. Solo una solicitud puede activar el escalamiento desde cero, por lo que un servicio que no procesa solicitudes no puede escalar desde cero. Para estas cargas de trabajo, puedes establecer instancias mínimas > 0 o incluir una “solicitud de activación” en el diseño a fin de reiniciar el procesamiento después de reducir la escala a cero.
Reducción de escala a cero. Dado que ninguna instancia tiene un 0% de CPU, si se observa todo el uso de CPU, nunca se escalaría a cero. Esto significa que la decisión de escalar de uno a cero solo se puede tomar si se verifica que la instancia está procesando una solicitud.
Acerca de la cantidad máxima de instancias para los servicios
En algunos casos, se recomienda limitar la cantidad total de instancias que se pueden iniciar, por motivos de control de costos o para obtener una mejor compatibilidad con otros recursos que usa el servicio. Por ejemplo, el servicio de Cloud Run puede interactuar con una base de datos que solo puede manejar una cantidad determinada de conexiones abiertas simultáneas.
Todos los servicios tienen asignado un límite máximo de instancias de forma predeterminada, incluso si no especificas tu propio límite. Establece y supervisa este límite para determinar el comportamiento del ajuste de escala y los costos asociados con tu servicio. Para obtener más información, consulta Límites de instancias máximas.
Puedes usar la configuración de un máximo de instancias para limitar la cantidad total de instancias que se pueden iniciar en paralelo, como se indica en Configura una cantidad máxima de instancias.
Consumo superior a la cantidad máxima de instancias
En circunstancias normales, la revisión se escala horizontalmente 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, en algunas situaciones, no habrá suficientes instancias para poder manejar esa carga de tráfico. En ese caso, las solicitudes entrantes se ponen en cola (pendientes) de la siguiente manera:
Las solicitudes permanecerán pendientes hasta 3.5 veces el tiempo de inicio promedio de las instancias de contenedor de este servicio o 10 segundos, lo que sea mayor.
Durante este período, si una instancia termina de procesar solicitudes, estará disponible para procesar las solicitudes pendientes en cola.
Si no hay instancias disponibles durante el período, la solicitud falla con un código de error 429.
Garantías de escalamiento
El límite máximo de instancias es un límite superior por revisión y significa que la cantidad de instancias para esta revisión no debe exceder el máximo.
En circunstancias normales, Cloud Run puede escalar horizontalmente hasta el límite máximo de instancias muy rápido para controlar todas las solicitudes o los eventos entrantes. Sin embargo, establecer un límite alto no significa que la revisión podrá escalar horizontalmente hasta la cantidad especificada de instancias en un momento determinado. En circunstancias excepcionales, Cloud Run puede limitar el escalamiento para garantizar un buen servicio para todos los clientes.
Se excedió la cantidad máxima de instancias debido a los aumentos repentinos de tráfico
En algunos casos, como picos de tráfico rápidos o mantenimiento del sistema, Cloud Run podría crear, durante un período breve, más instancias de las que se especifican en la configuración de instancias máximas. Las instancias nuevas se pueden iniciar en exceso de la configuración de instancias máximas para reemplazar las instancias existentes y proporcionar un período de gracia para que las solicitudes en tránsito terminen de procesarse.
El límite máximo de instancias se puede superar en las operaciones normales algunas veces a la semana. Por lo general, el período de gracia dura hasta 15 minutos o hasta el valor especificado en la configuración de tiempo de espera de la solicitud. Estas instancias adicionales se destruyen en un plazo de 15 minutos después de que quedan inactivas.
Si se necesitan muchos reemplazos, las actualizaciones suelen distribuirse durante muchos minutos o incluso horas, pero cada reemplazo tiene un exceso de instancia solo durante el período de gracia. Las instancias que excedan el valor máximo de instancia suelen ser menos del doble del límite máximo de instancias configuradas, pero pueden ser mucho más grandes para los aumentos de tráfico repentinos.
Las pruebas de carga experimentan más instancias que exceden la configuración máxima porque el sistema puede cambiar dónde se entregan los picos de tráfico para conservar la capacidad de las cargas de trabajo existentes que tienen patrones de carga sostenidos.
Si tu servicio no puede tolerar este comportamiento temporal, se recomienda incluir un margen de seguridad y reducir la cantidad de instancias máximas permitidas.
Divisiones de tráfico
Debido a que el límite máximo de instancias es un límite para cada revisión, si el servicio divide el tráfico entre varias revisiones, la cantidad total de instancias del servicio puede exceder la cantidad máxima de instancias. por revisión. Esto se puede observar en las métricas de recuento de instancias.
Implementaciones
Cuando implementas una revisión nueva para entregar el 100% del tráfico, Cloud Run inicia suficientes instancias de la revisión nueva antes de dirigir el tráfico a ella. Esto reduce el impacto de las implementaciones de revisión nuevas en las latencias de solicitud, en especial cuando se entregan niveles altos de tráfico. Debido a que el límite máximo de instancias es un límite para cada revisión, durante una implementación, la cantidad total de instancias del servicio puede exceder el máximo de instancias por revisión. Esto se puede observar en las métricas de recuento de instancias.
Instancias inactivas y minimización de inicios en frío
Para minimizar los inicios en frío, Cloud Run puede mantener las instancias inactivas durante un período después de que terminan de controlar las solicitudes (hasta 15 minutos o 10 minutos para las GPUs).
Una instancia inactiva puede conservar recursos, como conexiones de bases de datos abiertas. Ten en cuenta que el parámetro de configuración de facturación predeterminado es la facturación basada en solicitudes, a menos que configures de forma explícita tu servicio para que tenga facturación basada en instancias.
Para mantener las instancias inactivas de forma permanente, usa la configuración min-instance. Ten en cuenta que usar esta función generará costos incluso cuando el servicio no entregue solicitudes de forma activa.
Ajuste de escala automático y solicitudes pendientes
Las solicitudes permanecerán pendientes hasta 3.5 veces el tiempo de inicio promedio de las instancias de contenedor de este servicio o 10 segundos, lo que sea mayor.
Impacto del ajuste de escala automático en los servicios de copia de seguridad
A medida que la cantidad de instancias aumenta de automáticamente, tu servicio de Cloud Run puede encontrar límites con sus servicios de copia de seguridad. Por ejemplo, Cloud SQL tiene un límite de cuota de la API. Asegúrate de que estos servicios de copia de seguridad tengan suficiente cuota y puedan manejar conexiones desde todas las instancias de tu servicio de Cloud Run. Considera configurar una cantidad máxima de instancias para evitar sobrecargar los servicios de copia de seguridad.
Ajuste de escala automático y Pub/Sub
Google recomienda usar suscripciones de envío para consumir mensajes de un tema de Pub/Sub en Cloud Run. El contenedor recibe mensajes enviados, como solicitudes HTTP, lo que activa el mismo comportamiento de ajuste de escala automático.
Ajuste de escala automático y varios contenedores (sidecars)
Cloud Run considera el uso de CPU de las instancias para el ajuste de escala automático, en el que el uso de CPU de una instancia es el porcentaje de CPU asignada en uso.
Ten en cuenta que asignas CPU cuando estableces límites de CPU a nivel del contenedor. Si usas varios contenedores por instancia, la asignación de CPU real para esa instancia es la suma de los límites de CPU que estableces en cada contenedor.
¿Qué sigue?
- Para configurar objetivos de utilización personalizados o inhabilitar los factores de escalamiento, consulta Configura controles de escalamiento personalizados.
- Para obtener más información sobre otras opciones de escalamiento, consulta escalamiento manual.
- Para administrar la cantidad máxima de instancias de los servicios de Cloud Run, consulta Configura una cantidad máxima de instancias.
- Para administrar la cantidad máxima de solicitudes simultáneas controladas por cada instancia, consulta Configura la simultaneidad.
- Si deseas optimizar la configuración de simultaneidad, consulta las sugerencias de desarrollo para ajustar la simultaneidad.
- Si quieres especificar que una instancia inactiva se siga ejecutando a fin de minimizar la latencia o los inicios en frío en las primeras solicitudes, consulta Usa
min-instancepara habilitar instancias inactivas.