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 :
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) :
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 :
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.