JMeter : suivre un tir de charge en mode non-gui avec le résumé statistique

Dans le billet précédent, j’indiquais qu’il est préférable de lancer un test de charge en utilisant JMeter en mode non-gui afin de préserver les ressources de la machine JMeter.

Cependant en mode d’exécution non-gui, il est frustrant de ne pas « voir ce qui se passe » : est-ce que le tir de charge se passe bien ?, est-ce qu’il n’y a pas d’erreurs ?, y-a-t-il un blocage ?, …

Heureusement pour nous, JMeter a prévu une option qui va nous permettre d’avoir quelques données durant un tir de charges exécuté en mode non-gui.

Il s’agit du « summariser », ce dernier va afficher à intervalle pré-défini les statistiques du test en cours. Voici un exemple :

summary +   200 in  30.0s =    6.7/s Avg:    13 Min:     8 Max:    53 Err:     0 (0.00%)
summary =  1448 in 225.0s =    6.4/s Avg:    13 Min:     6 Max:    67 Err:     0 (0.00%)

La première ligne indique que, depuis le dernier intervalle, il y a eu 200 échantillons exécutés durant les 30 dernières secondes, ce qui fait un débit de 6,7 échantillons par seconde. La moyenne des temps de réponses est 13 ms, le minimum durant la période a été 8 ms, le maximum 53 ms. Et il n’y a pas eu d’erreur détectées durant cette dernière période.

La deuxième ligne indique les mêmes données, sauf que la période correspond au temps depuis le (début) lancement du test de charge. Donc ici, c’est 1448 échantillons (tous confondus) en 225 secondes, etc.

Pour activer cette option, il faut aller simplement éditer le fichier JMETER_HOME/bin/jmeter.properties au niveau des paramètres suivants :

#---------------------------------------------------------------------------
# Summariser configuration (mainly applies to non-GUI mode)
#---------------------------------------------------------------------------
# Summariser settings
#
# Define the following property to automatically start a summariser with that name
# (applies to non-GUI mode ony)
#summariser.name=summary
#
# interval between summaries (in seconds) default 3 minutes
#summariser.interval=180
#
# Write messages to log file
#summariser.log=true
#
# Write messages to System.out
#summariser.out=true

Je vous recommande de faire un copier/coller de ces éléments, puis les mettre dans le fichier user.properties (situé dans le même répertoire), et les modifier à votre convenance.

Par exemple :

#---------------------------------------------------------------------------
# Summariser configuration (mainly applies to non-GUI mode)
#---------------------------------------------------------------------------
# Summariser settings
#
# Define the following property to automatically start a summariser with that name
# (applies to non-GUI mode ony)
summariser.name=summary
#
# interval between summaries (in seconds) default 3 minutes (180)
summariser.interval=30
#
# Write messages to log file (c'est à dire jmeter.log)
summariser.log=false
#
# Write messages to System.out
summariser.out=true

Et voilà, c’est prêt pour un affichage chaque 30 secondes sur la console durant le tir de charge.

Voici un exemple de sortie :

milamber@surprise:~/opt/jakarta-jmeter-2.3.2/bin$ jmeter -n -t ./Simple.jmx -l ./resultats.csv
Creating summariser
Created the tree successfully using Simple.jmx
Starting the test @ Sun Feb 01 08:45:44 WET 2009 (1233477944841)
summary +    49 in  15.0s =    3.3/s Avg:    15 Min:     6 Max:    67 Err:     0 (0.00%)
summary +   199 in  30.0s =    6.6/s Avg:    14 Min:     8 Max:    60 Err:     0 (0.00%)
summary =   248 in  45.0s =    5.5/s Avg:    15 Min:     6 Max:    67 Err:     0 (0.00%)
summary +   200 in  30.0s =    6.7/s Avg:    14 Min:     9 Max:    52 Err:     0 (0.00%)
summary =   448 in  75.0s =    6.0/s Avg:    14 Min:     6 Max:    67 Err:     0 (0.00%)
[......]
summary +   200 in  30.0s =    6.7/s Avg:    12 Min:     8 Max:    51 Err:     0 (0.00%)
summary =  3848 in 585.0s =    6.6/s Avg:    13 Min:     6 Max:   219 Err:     0 (0.00%)
summary +   152 in  30.1s =    5.0/s Avg:    13 Min:     8 Max:    51 Err:     0 (0.00%)
summary =  4000 in 615.2s =    6.5/s Avg:    13 Min:     6 Max:   219 Err:     0 (0.00%)
summary =  4000 in 615.2s =    6.5/s Avg:    13 Min:     6 Max:   219 Err:     0 (0.00%)
Tidying up ...    @ Sun Feb 01 08:56:00 WET 2009 (1233478560189)
... end of run

Voilà, bon courage.

./