JMeter : Superviser un serveur Tomcat

Dans les tutorials JMeter précédents nous avons vu que JMeter est un bon outil pour effectuer des tirs de charges. JMeter sait faire d’autres choses.

Je vous propose de voir comment on peut utiliser JMeter pour superviser un Tomcat dans sa version 6.0.

Pour cela, nous allons suivre le mode d’emploi disponible depuis le site de documentation JMeter :
http://jakarta.apache.org/jmeter/usermanual/build-monitor-test-plan.html

Mais avec quelques légères adaptations.

Le pré-requis est bien entendu d’avoir installé un serveur Tomcat (sous Unix/Linux ou Windows) avec un Java JDK.

Editer le fichier de configurations des utilisateurs :

[root@bouboule:/opt/tomcat/conf]# vi tomcat-users.xml

Le fichier ressemble à cela :

<?xml version=’1.0′ encoding=’utf-8′?>
<tomcat-users> <role rolename=”tomcat”/>
<role rolename=”role1″/>
<user username=”both” password=”tomcat” roles=”tomcat,role1″/>
<user username=”tomcat” password=”tomcat” roles=”tomcat”/>
<user username=”role1″ password=”tomcat” roles=”role1″/> 
</tomcat-users>

Le modifier pour avoir :

<?xml version=’1.0′ encoding=’utf-8′?>
<tomcat-users>
<role rolename=”manager”/>
<role rolename=”tomcat”/>
<role rolename=”admin”/>
<role rolename=”role1″/>
<user username=”both” password=”tomcat” roles=”tomcat,role1″/>
<user username=”tomcat” password=”tomcat!!” roles=”tomcat,admin,manager”/>
<user username=”role1″ password=”tomcat” roles=”role1″/>
</tomcat-users>

Vérifions que la supervision Tomcat fonctionne, pour cela on démarre son serveur Tomcat, et avec un navigateur, on saisie l’URL :

http://svr-tomcat:8080/manager/status

Une fenêtre de saisie de login / mot de passe apparaît :

Une fenêtre de saisie de login / mot de passe apparait

Ensuite, le navigateur fait apparaît le statut d’exécution de Tomcat :

statut d'exécution de Tomcat

Bon, tout est OK. Passons au paramétrage de JMeter.

Après avoir démarrer JMeter, on commence par ajouter un Thread Group au niveau du Test Plan.

Ajout d'un Thread Group

Dans la configuration du Thread Group, on choisira le Loop Count à Forever (en cochant la case) afin d’avoir un outil de monitoring qui s’arrête seulement quand l’opérateur le décide.

On notera qu’il est possible aussi d’utiliser la programmation de fonctionnement (via Scheduler) afin de synchroniser la supervision du Tomcat avec par exemple l’exécution d’un tir de charges.

Configuration du Thread Group

On ajoute ensuite un élément HTTP Authorization Manager afin de gérer l’authentification demandée par Tomcat pour voir le statut du serveur.

On ajoute un élément HTTP Authorization Manager

Dans la configuration du HTTP Authorization Manager, on ajoutera dans :

  • le champ Usernane : tomcat (en fonction du paramétrage du fichier tomcat-users.xml)
  • le champ Password : tomcat!! (en fonction du paramétrage du fichier tomcat-users.xml)
  • Les autres champs sont laissés à vide.

Login et Password dans l'élément authorization manager

On continue en ajoutant un élément HTTP Request pour effectuer la requête HTTP permettant de demander le statut du serveur.

Ajout d'un élément HTTP Request pour demander le statut du serverur

Dans la configuration de l’élément HTTP Request, on modifiera la valeur des champs suivants :

  • Name : Server Status
  • Server Name or IP : svr-tomcat (ou l’adresse IP du serveur)
  • Port Number : 8080
  • Path : /manager/status
  • Send Parameters With the Request : ajout d’un élément
  • Name : XML et Value : true.
  • Sans oublier à la fin, de cocher le champ Use as Monitor.

Configuration de l'élément HTTP Request

Afin de demander le statut du serveur régulièrement on ajoute un élément Constant Timer qui laissera un intervalle de temps entre chaque demande. Attention à ne pas le mettre trop souvent car l’appel à cette requête de statut consomme une unité d’exécution sur le Tomcat.

Ajout d'un élément Constant Timer

On paramétra l’élément Constant Timer pour une fréquence de 5000 ms (5s) de rafraichissement des données de monitoring.

Configuration du Constant Timer à 5 secondes

Il ne reste plus qu’à ajouter l’élément Monitor Results pour voir de manière graphique l’état du serveur Tomcat.

Ajout d'un élément Monitor Results

Ensuite on passe à l’exécution d’un tir de test sur le serveur Tomcat. Pour cela, j’ai repris le tir de charges par palier, tout en supervisant le Tomcat.

Concernant les paramètres de JVM, j’ai réduit volontairement la mémoire maximum allouée à 128 Mo afin surcharger le serveur. Dans le fichier catalina.sh (dans TOMCAT_HOME/bin), j’ai ajouté la ligne suivant au début du fichier :

JAVA_OPTS=”$JAVA_OPTS -server -Xms64M -Xmx128M”

Voici l’affichage de l’état de santé du serveur Tomcat à un instant T :
Supervision Tomcat : Etat de santé

Et voici le graphique de performance du serveur Tomcat durant le tir de charges.

Graphiques de performances du serveur Tomcat durant le tir de charges

Quelques explications du graphique :
Explications du graphique de performances du serveur Tomcat durant le tir de charges

On retrouve donc les deux paliers (50 utilisateurs et 100 utilisateurs). La courbe des Thread (units d’exécution) de Tomcat reflète assez bien la charge du serveur par rapport au nombre d’utilisateurs simulés.

Le serveur Tomcat commence à être chargé dès la phase de montée de 50 à 100 VU. Ensuite à 100 utilisateurs, Tomcat est surchargé, le nombre d’unités d’exécution est au maximum régulièrement, la mémoire JVM enchaine les passage de GC. La retombée subite à 50 VU redonne tout de suite la santé au serveur Tomcat.

Voilà pour ce petit tutorial sur la supervision d’un Tomcat 6. Bon courage.

./

Laisser un commentaire