Simultanéité

Dans Knative serving, chaque révision est automatiquement adaptée au nombre d'instances de conteneur nécessaires pour traiter toutes les requêtes entrantes.

Plus il y a d'instances de conteneur qui traitent des requêtes, plus le nombre de ressources processeur et mémoire utilisées augmente, ce qui entraîne des coûts plus élevés. Lorsque de nouvelles instances de conteneur doivent être démarrées, le traitement des requêtes peut prendre plus de temps, ce qui réduit les performances de votre service.

Pour vous offrir davantage de contrôle, Knative serving fournit un paramètre de simultanéité qui spécifie le nombre maximal de requêtes pouvant être traitées simultanément par une instance de conteneur donnée.

Valeurs de simultanéité

Par défaut, les instances de conteneur Knative serving peuvent recevoir plusieurs requêtes simultanément (80 au maximum). Sachez qu'en comparaison, les solutions Functions as a Service (FaaS) telles que Cloud Functions ont une simultanéité fixe de 1.

Bien que vous deviez utiliser la valeur de simultanéité par défaut, vous pouvez réduire la simultanéité maximale si nécessaire. Par exemple, si votre code ne peut pas traiter les requêtes parallèles, définissez la simultanéité sur 1.

La valeur de simultanéité spécifiée est une valeur maximale et, si le processeur d'une instance de conteneur est déjà très sollicité, Knative serving peut décider de limiter à une valeur inférieure le nombre de requêtes à envoyer à cette instance.

Le schéma suivant montre comment le paramètre de simultanéité influe sur le nombre d'instances de conteneur nécessaires pour gérer les requêtes simultanées entrantes :

Schéma illustrant la simultanéité

Quand limiter l'accès simultané à une requête à la fois

Vous pouvez limiter la simultanéité de sorte qu'une seule requête à la fois soit envoyée à chaque instance de conteneur en cours d'exécution. Vous devriez envisager de le faire dans les cas suivants :

  • Lorsque chaque requête utilise la majeure partie du processeur ou de la mémoire disponible.
  • Lorsque votre image de conteneur n'est pas conçue pour traiter plusieurs requêtes simultanément, par exemple si votre conteneur repose sur un état global qui deux requêtes ne peuvent pas partager.

Sachez qu'une simultanéité de 1 risque d'affecter négativement les performances en termes de dimensionnement, car le traitement d'un pic de requêtes entrantes nécessitera le démarrage de nombreuses instances de conteneur.

Étude de cas

Les métriques suivantes illustrent un cas d'utilisation dans lequel 400 clients envoient trois requêtes par seconde à un service Knative serving dont la simultanéité maximale est définie sur 1. La courbe verte en haut représente le nombre de requêtes au fil du temps. La courbe bleue en bas représente le nombre d'instances de conteneur démarrées afin de traiter les requêtes.

Avec une simultanéité définie sur 1

Les métriques suivantes illustrent un cas d'utilisation dans lequel 400 clients envoient trois requêtes par seconde à un service Knative serving dont la simultanéité maximale est définie sur 80. La courbe verte en haut représente le nombre de requêtes au fil du temps. La courbe bleue en bas représente le nombre d'instances de conteneur démarrées afin de traiter les requêtes. Notez que beaucoup moins d'instances sont nécessaires pour gérer le même volume de requêtes.

Avec une simultanéité définie sur 80

Étape suivante

Pour gérer la simultanéité de vos services Knative serving, consultez la page Configurer la simultanéité.

Pour optimiser le paramètre de simultanéité, reportez-vous à la page Conseils de développement pour le réglage de la simultanéité.