Recherche ...

Chargement...

21/02/2009

Tests de charge distribués avec Apache JMeter

Apache JMeter est un outils graphique écrit 100% en java permettant d'exécuter des tests fonctionnels et de mesurer les performances du système sur lequel ces tests sont executés.  Initialement, JMeter était prévu pour tester des pages web mais rapidement, des extensions ont été ajoutées pour pouvoir tester différents type de serveurs (base de données, ldap, jms, mail, ...).

Une des fonctionnalités de JMeter est de pouvoir simuler autant d'utilisateurs que nous voulons afin de pouvoir effectuer des tests de montée en charge mais lorsque nous souhaitons simuler un grand nombre d'utilisateurs, une seule machine pour effectuer l'injection peut être insuffisante, il faut donc configurer l'outils pour les tests soient executés par plusieurs machines en parrallèle.



Pour se faire, JMeter doit être installé sur chaque machine devant jouer les tests.

Démarrez l'ensemble des noeuds esclaves (les machines qui exécuterons les tests) avec le script ${JMETER_HOME}\bin\jmeter-server.bat et notez leurs adresses IP.

Ensuite, avant de démarrer la console graphique de JMeter pour pouvoir lancer nos tests, il faut déclarer les noeuds esclaves dans les fichiers de configuration de JMeter. Pour cela, il faut éditer le fichier de configuration  ${JMETER_HOME}\bin\jmeter.properties et renseigner la variable remote_hosts avec les IP des machines esclaves :

[bash]
#---------------------------------------------------------------------------
# Remote hosts and RMI configuration
#---------------------------------------------------------------------------

# Remote Hosts - comma delimited
remote_hosts=127.0.0.1, 192.168.0.57
#remote_hosts:localhost:1099,localhost:2010

# RMI port to be used by the server (must start rmiregistry with same port)
#server_port=1099
[/bash]

Dans cet exemple, j'ai ajouté une machine en plus de la machine maître, mais nous pouvons tout à fait utiliser 15 machines esclaves et supprimer l'IP de la machine maître (127.0.0.1) afin que celle-ci ne se contente de jouer les rôles d'ordonnanceur et de collecteur de résultat (ce qui est vivement conseillé quand il y a beaucoup de machines esclave).

Une fois ce fichier de configuration mis à jour, nous pouvons démarrer la machine maître et utiliser la console :




Sur la capture d'écran, on voit qu'on a maintenant 3 possibilités :
  • lancer les tests avec la machine maître (menu: Démarrer)
  • lancer les tests avec une seule des machines configurées (menu: Démarrage distant > choisir la machine)
  • lancer les tests avec l'ensemble des machines configurées (menu: Démarrage distant de tous)

Voilà, c'est donc très simple :-)

2 commentaires:

François Petitit a dit…

Holà :)

Il faut aussi parfois ajouter -Djava.rmi.server.hostname=AA.BB.CC.DD à la ligne de commande de lancement de jmeter-server sur chacun des injecteurs, où AA.BB.CC.DD est l'adresse IP de l'injecteur.

Cela évite des "connection refused".

Et aussi ajouter le jar mail.jar dans /lib/ext/ pour appeler des web services SOAP ;)

Kerry22hX a dit…
Ce commentaire a été supprimé par un administrateur du blog.

Enregistrer un commentaire