7 votes

Comment injecter un nombre constant d'utilisateurs dans Gatling ?

Je ne vois pas très bien comment je peux contrôler un modèle de charge de travail fermé dans Gatling.

Si j'utilise constantConcurrentUsers comme ceci :

myScenario.inject(
    constantConcurrentUsers(40) during (2 minutes)
)

Je pensais que cela signifiait que le nombre d'utilisateurs actifs serait constant. Mais au lieu de cela, je reçois des rapports comme celui-ci :

40 constant concurrent users?

Où le nombre d'utilisateurs n'est pas constant et 3 à 5 fois supérieur à ce que je voulais.

Dans la sortie de la console cependant, je peux voir que quelque chose est constante (4 scénarios ici, chacun chargé de 10 utilisateurs concurrents constants) :

Console output of 40 constant concurrent users

Mais la charge totale est beaucoup plus importante que ce à quoi je m'attendais.

J'avais expérimenté le throttling, et les résultats y étaient clairs. D'après ce que j'ai compris, l'étranglement maximise le nombre de demandes actives simultanées (une demande est active si elle a été envoyée mais n'a pas encore reçu de réponse). Je définis un nombre de demandes qui doivent passer, et Gatling envoie une nouvelle demande chaque fois qu'une demande est terminée. Et comme il n'y a pas beaucoup de différence entre les temps de réponse, un rapport ressemble à ceci :

Constant number of sent requests with throttle

Je voulais faire la même chose, mais de manière à pouvoir contrôler la durée de la simulation, et non le nombre total de requêtes envoyées. constantConcurrentUsers semblait être juste ce qu'il me fallait, mais il produit des résultats inattendus. Ma simulation de l'étranglement fait environ 3000 requêtes en 1 minute avec un étranglement de 50. En même temps, si je configure 50 utilisateurs simultanés pendant 1 minute, il y a plus de 7000 requêtes envoyées dans le rapport. Les temps de réponse sont beaucoup plus faibles dans le cas de l'étranglement. La simulation de l'étranglement envoie donc les demandes beaucoup plus lentement que la simulation des utilisateurs simultanés, mais pas parce que les demandes prennent plus de temps.

Je sais que les utilisateurs actifs et les demandes envoyées ne sont pas les mêmes et que constantConcurrentUsers contrôle le nombre d'utilisateurs tandis que l'accélérateur contrôle les demandes. Mais tous mes scénarios ne contiennent qu'une seule demande et je ne comprends pas la différence entre les résultats.

Mes questions sont donc les suivantes :

  • Qu'est-ce qui est constant exactement lorsque j'utilise constantConcurrentUsers ?
  • Comment le nombre de requêtes est-il calculé lorsque j'utilise la fonction constantConcurrentUsers ?
  • Quelle est la relation entre "utilisateurs actifs" dans le rapport et "actif" dans la sortie de la console ?

J'ai lu cette partie de la documentation sur les Gatling, qui est vraiment courte et manque d'une description détaillée. J'ai également lu cet article qui présente des graphiques que je n'ai jamais vus dans aucun rapport Gatling et qui ne répond pas à ma question.

Merci pour toute contribution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X