Simultaneidad

En Knative Serving, cada revisión se escala automáticamente al número de instancias de contenedor necesarias para gestionar todas las solicitudes entrantes.

Cuando haya más instancias de contenedor procesando solicitudes, se utilizará más CPU y memoria, lo que supondrá un aumento de los costes. Cuando se necesiten iniciar nuevas instancias de contenedor, las solicitudes pueden tardar más tiempo en procesarse, lo que reduce el rendimiento de tu servicio.

Para ofrecerte más control, Knative Serving proporciona un ajuste de simultaneidad que especifica el número máximo de solicitudes que puede procesar simultáneamente una instancia de contenedor determinada.

Valores de simultaneidad

De forma predeterminada, las instancias de contenedor de Knative Serving pueden recibir muchas solicitudes al mismo tiempo (hasta un máximo de 80). Ten en cuenta que, en comparación, las soluciones de funciones como servicio (FaaS), como las funciones de Cloud Run, tienen una simultaneidad fija de 1.

Aunque deberías usar el valor de simultaneidad predeterminado, si es necesario, puedes reducir la simultaneidad máxima. Por ejemplo, si tu código no puede procesar solicitudes paralelas, define la simultaneidad como 1.

El valor de simultaneidad especificado es un máximo y es posible que el servicio de Knative no envíe tantas solicitudes a una instancia de contenedor determinada si la CPU de la instancia ya está muy utilizada.

En el siguiente diagrama se muestra cómo afecta el ajuste de simultaneidad al número de instancias de contenedor necesarias para gestionar las solicitudes simultáneas entrantes:

Diagrama de simultaneidad

Cuándo limitar la simultaneidad a una solicitud a la vez

Puedes limitar la simultaneidad para que solo se envíe una solicitud a la vez a cada instancia de contenedor en ejecución. Deberías plantearte hacerlo en los siguientes casos:

  • Cada solicitud usa la mayor parte de la CPU o la memoria disponibles.
  • La imagen de tu contenedor no está diseñada para gestionar varias solicitudes al mismo tiempo. Por ejemplo, si tu contenedor depende de un estado global que dos solicitudes no pueden compartir.

Ten en cuenta que una simultaneidad de 1 probablemente afectará negativamente al rendimiento del escalado, ya que se tendrán que iniciar muchas instancias de contenedor para gestionar un pico de solicitudes entrantes.

Caso de éxito

Las siguientes métricas muestran un caso práctico en el que 400 clientes realizan 3 solicitudes por segundo a un servicio de Knative Serving que tiene una concurrencia máxima de 1. La línea superior verde muestra las solicitudes a lo largo del tiempo, mientras que la línea inferior azul indica el número de instancias de contenedor que se han iniciado para gestionar las solicitudes.

Simultaneidad establecida en uno

Las siguientes métricas muestran 400 clientes que hacen 3 solicitudes por segundo a un servicio de Knative Serving que tiene una simultaneidad máxima de 80. La línea superior verde muestra las solicitudes a lo largo del tiempo, mientras que la línea inferior azul muestra el número de instancias de contenedor que se han iniciado para gestionar las solicitudes. Ten en cuenta que se necesitan muchas menos instancias para gestionar el mismo volumen de solicitudes.

Simultaneidad definida en 80

Siguientes pasos

Para gestionar la simultaneidad de tus servicios de Knative Serving, consulta Configurar la simultaneidad.

Para optimizar la configuración de simultaneidad, consulta los consejos de desarrollo para ajustar la simultaneidad.