Les scénarios sont au point, il faut maintenant procéder aux tests de charge proprement dits.
Il faut envisager 3 objectifs possibles pour vos tests
- vérifier que votre infrastructure tient la charge sous un trafic donné
- optimiser votre infrastructure et avoir des métriques selon l’architecture
- trouver les limites de votre infrastructure
Bien souvent, vous allez retrouver un mélange de ces 3 cas au fur et à mesure de vos tests. Inutile de préciser que chercher les limites est la dernière étape, lorsqu’on a déjà fait tous les tests possibles auparavant. Bien souvent, on arrive aux limites de l’infrastructure lors des premiers essais sans nécessairement s’en apercevoir.
Donc les essais suivants n’apportent pas nécessairement d’informations supplémentaires. Il est donc nécessaire d’avoir une méthodologie des plus strictes en s’assurant à chaque « tir » que les composants fonctionnent correctement (vérifier les mises en cache, les erreurs, etc…) et que le tir correspond bien aux hypothèses. C’est d’ailleurs souvent quand on regarde les résultats qu’on se rend compte qu’un composants n’avait pas les bons paramètres, que le cache ne fonctionnait pas convenablement, etc…
Et comme la phase d’optimisation peut également nécessiter quelques tests surtout si on veut faire des comparaisons correctes, il faut imaginer que les tests aux limites arriveront bien plus tard.
Avec JMeter 5.4 la grande nouveauté c’est la création d’un rapport HTML !!!
Avant, on utilisait les graphes des listener qu’on ajoutait au Thread plan. On récupérait le données des tirs dans un fichier CSV, et on affichait le graphe dans JMeter. Mais très souvent, c’était une opération fastidieuse, car le graphe s’affichait dans JMeter à l’intérieur du panneau de droite, avec une lecture difficile du graphe.
C’est désormais de l’histoire ancienne, car le générateur de rapport HTML, comme son nom l’indique génère du HTML, qu’on va pouvoir afficher dans un navigateur. Et en plus, ce générateur produit tous les graphes intéressants avec un seul fichier CSV, graphes qu’on peut sauvegarder sous format PNG.
On génère le fichier CSV lors du test en ligne de commande avec l’option -l . En supposant que notre scénario s’appelle scenario.jmx et qu’on n’a aucun listener activé et qu’aucun n’écrit dans un fichier. Tout se passe lors du lancement en ligne de commande :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
buster-jmeter:~/apache-jmeter-5.4.1/bin$ ./jmeter -n -t ~/Documents/scenario.jmx -l ~/Documents/scenario.csv WARNING: package sun.awt.X11 not in java.desktop Creating summariser <summary> Created the tree successfully using scenario.jmx Starting standalone test @ Tue Dec 17 11:14:15 CET 2019 (1576577655079) Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445 Warning: Nashorn engine is planned to be removed from a future JDK release summary + 72 in 00:00:15 = 4.9/s Avg: 7801 Min: 2398 Max: 13300 Err: 0 (0.00%) Active: 50 Started: 50 Finished: 0 summary + 240 in 00:00:30 = 8.0/s Avg: 6302 Min: 4931 Max: 9203 Err: 0 (0.00%) Active: 50 Started: 50 Finished: 0 summary = 312 in 00:00:45 = 7.0/s Avg: 6648 Min: 2398 Max: 13300 Err: 0 (0.00%) summary + 252 in 00:00:30 = 8.4/s Avg: 6007 Min: 4888 Max: 7224 Err: 0 (0.00%) Active: 50 Started: 50 Finished: 0 summary = 564 in 00:01:15 = 7.6/s Avg: 6362 Min: 2398 Max: 13300 Err: 0 (0.00%) summary + 248 in 00:00:30 = 8.2/s Avg: 5907 Min: 4758 Max: 7032 Err: 0 (0.00%) Active: 50 Started: 50 Finished: 0 summary = 812 in 00:01:45 = 7.8/s Avg: 6223 Min: 2398 Max: 13300 Err: 0 (0.00%) summary + 245 in 00:00:30 = 8.2/s Avg: 6094 Min: 4943 Max: 7230 Err: 0 (0.00%) Active: 50 Started: 50 Finished: 0 summary = 1057 in 00:02:15 = 7.9/s Avg: 6193 Min: 2398 Max: 13300 Err: 0 (0.00%) summary + 250 in 00:00:30 = 8.3/s Avg: 5883 Min: 4871 Max: 7108 Err: 0 (0.00%) Active: 50 Started: 50 Finished: 0 summary = 1307 in 00:02:45 = 7.9/s Avg: 6133 Min: 2398 Max: 13300 Err: 0 (0.00%) summary + 247 in 00:00:30 = 8.3/s Avg: 6017 Min: 4902 Max: 7008 Err: 0 (0.00%) Active: 50 Started: 50 Finished: 0 summary = 1554 in 00:03:15 = 8.0/s Avg: 6115 Min: 2398 Max: 13300 Err: 0 (0.00%) summary + 251 in 00:00:30 = 8.3/s Avg: 5908 Min: 4902 Max: 7259 Err: 0 (0.00%) Active: 50 Started: 50 Finished: 0 summary = 1805 in 00:03:45 = 8.0/s Avg: 6086 Min: 2398 Max: 13300 Err: 0 (0.00%) summary + 195 in 00:00:21 = 9.4/s Avg: 5601 Min: 1899 Max: 7089 Err: 0 (0.00%) Active: 0 Started: 50 Finished: 50 summary = 2000 in 00:04:05 = 8.2/s Avg: 6039 Min: 1899 Max: 13300 Err: 0 (0.00%) Tidying up ... @ Tue Dec 17 11:18:20 CET 2019 (1576577900863) ... end of run buster-jmeter:~/apache-jmeter-5.4.1/bin$ |
Une fois le test terminé, on a un fichier de données scenario.csv
qui permet de faire le rapport.
Avant de faire le rapport, il faut créer un répertoire vide, par exemple ~/Documents/scenario
qui va contenir tout le HTML du rapport.
Il faut également préciser un fichier user.properties
dans lequel on pourrait, entre autres, filtrer des lignes du fichier CSV. Un exemple de user.properties
est fourni dans le répertoire jmeter/bin
. Il suffit de le copier dans le répertoire ~/Documents
pour en avoir un prêt à l’emploi.
On lance jmeter uniquement avec le scénario en mode graphique et on va dans le menu « Tools → Generate HTML Report » dans lequel on fournit nos données
1 |
buster-jmeter:~/apache-jmeter-5.4.1/bin$ ./jmeter -t ~/Documents/scenario.jmx |
Dans le répertoire du rapport, ~/Documents/scenario
on trouve un fichier index.html
qui nous permettra d’afficher les graphes :
1 2 3 |
aa2@apollo:~/Documents/scenario-3$ ls content/ index.html sbadmin2-1.0.7/ statistics.json aa2@apollo:~/Documents/scenario-3$ |
On peut afficher les différents graphes JMeter, on peut zoomer, supprimer des série et sauvegarder les graphes en PNG en cliquant sur la clé à molettes.
Pour voir le détail des métriques et du test des pages statiques de WordPress, je vous renvoie à la série d’articles : Booster son WordPress avec Varnish.
Par contre, l’aventure JMeter se poursuit avec la mise au point des scénarios sur des pages dynamiques, c’est à dire sur des formulaires et des pages dépendantes d’une session.
Site officiel de JMeter : https://jmeter.apache.org/