Simultaneidad

En Knative serving, cada revisión se ajusta de forma automática a la cantidad de instancias de contenedor necesarias para manejar todas las solicitudes entrantes.

Cuando hay más instancias de contenedor que procesan solicitudes, se genera un uso mayor de CPU y memoria, lo que genera costos más altos. Cuando se deben iniciar nuevas instancias de contenedor, es posible que las solicitudes tomen más tiempo en procesarse, lo que disminuye el rendimiento del servicio.

Para darte más control, Knative serving proporciona una configuración de simultaneidad que especifica la cantidad máxima de solicitudes que una instancia de contenedor puede procesar de forma simultánea.

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 debes usar el valor de simultaneidad predeterminado, puedes disminuir la simultaneidad máxima. Por ejemplo, si tu código no puede procesar solicitudes paralelas, configura la simultaneidad en 1.

El valor de simultaneidad especificado es un máximo y es posible que Knative serving no envíe tantas solicitudes a una instancia de contenedor determinada si la CPU de la instancia ya tiene un uso alto.

En el siguiente diagrama, se muestra cómo la configuración de simultaneidad afecta la cantidad de instancias de contenedor necesarias para manejar 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. Debes considerar hacer esto en los siguientes casos:

  • Cada solicitud usa la mayor parte de la CPU o memoria disponible.
  • Tu imagen de contenedor no está diseñada para controlar varias solicitudes a la vez; por ejemplo, cuando tu contenedor depende del estado global que dos solicitudes no pueden compartir.

Ten en cuenta que es probable que una simultaneidad de 1 afecte de forma negativa el rendimiento del escalamiento, ya que muchas instancias de contenedor tendrán que iniciarse a fin de controlar un aumento en las solicitudes entrantes.

Caso de éxito

En las siguientes métricas, se muestra un caso práctico en el que 400 clientes realizan 3 solicitudes por segundo a un servicio de Knative serving configurado en una simultaneidad máxima de 1. La línea superior verde muestra las solicitudes a lo largo del tiempo y la línea inferior azul muestra la cantidad de instancias de contenedor que se iniciaron para controlar las solicitudes.

Simultaneidad configurada en uno

En las siguientes métricas, se muestran 400 clientes que realizan 3 solicitudes por segundo a un servicio de Knative serving configurado en una simultaneidad máxima de 80. La línea superior verde muestra las solicitudes a lo largo del tiempo y la línea inferior azul muestra la cantidad de instancias de contenedor que se iniciaron para controlar las solicitudes. Ten en cuenta que se necesitan muchas menos instancias para controlar el mismo volumen de solicitudes.

Simultaneidad configurada en 80

¿Qué sigue?

Para administrar la simultaneidad de tus servicios de entrega de Knative, consulta Configura la simultaneidad.

Si deseas optimizar la configuración de simultaneidad, consulta las sugerencias de desarrollo para ajustar la simultaneidad.