Simultaneidad

En la entrega de Knative, cada revisión se escala de forma automática a la cantidad de instancias de contenedor necesarias para controlar 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 brindarte más control, la entrega de Knative proporciona una configuración de simultaneidad que especifica la cantidad máxima de solicitudes que una instancia de contenedor determinada puede procesar de forma simultánea.

Valores de simultaneidad

De forma predeterminada, las instancias de contenedor de entrega de Knative 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 Cloud Functions, 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 el máximo, y es posible que la entrega de Knative no envíe tantas solicitudes a una instancia de contenedor determinada si la CPU de la instancia ya se usa mucho.

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 de uso en el que 400 clientes realizan 3 solicitudes por segundo a un servicio de entrega de Knative 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 entrega de Knative que está 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 los 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.