Effectuer des tests de montée en charge avec Tsung (Partie 2 – Configuration)
13 fév
Cet article est la seconde partie d’un tutoriel en trois phases, consacré à Tsung. Après nous être intéressé à l’installation de Tsung, nous allons dans cette seconde partie détailler la configuration de l’outil (tout en restant dans le cadre du test d’une application web) ainsi que l’enregistrement de scénarios.
Sommaire du tutoriel
- Effectuer des tests de montée en charge avec Tsung (Partie 1 – Installation)
- Effectuer des tests de montée en charge avec Tsung (Partie 2 – Configuration)
- Effectuer des tests de montée en charge avec Tsung (Partie 3 – Le test)
1 – Copier un exemple basique dans ~/.tsung
Tsung propose plusieurs fichiers d’exemples de configuration, et nous allons ici en prendre un simple afin de l’adapter à notre application. Il faut tout d’abord vérifier l’existence du répertoire ~/.tsung qui est l’emplacement des fichiers de configuration et de journaux de Tsung.
Mkdir ~/.tsung
Copier ensuite le fichier d’exemple.
cp /usr/share/doc/tsung/examples/http_simple.xml ~/.tsung/tsung.xml
2 – Enregistrement d’un scénario
A cette étape nous allons utiliser la commande « Tsung-recorder » pour enregistrer un scénario de navigation, c’est-à-dire l’activité d’un internaute sur notre application. Cette étape est néanmoins optionnelle puisqu’il sera possible d’écrire notre scénario directement dans le fichier de configuration de Tsung (un scénario peut être juste le chargement d’une page, un fichier etc.).
Pour lancer l’enregistrement d’un scénario il suffit de taper la commande :
tsung-recorder start
Tsung-recorder lancera un proxy qui écoutera sur le port 8090 et enregistrera la navigation dans un fichier. Il suffira ensuite de paramétrer un navigateur internet afin qu’il utilise ce proxy.
Tsung recorder nous indiquera aussi le nom du fichier généré.
L’étape suivante est de lancer le navigateur (ici Firefox) installé sur le serveur. Si vous ne possédez pas d’interface graphique sur le serveur, il faudra rediriger la sortie graphique avec l’option –X de ssh.
Pour ce faire, il faut tout d’abord installer les paquets X Window.
yum groupinstall 'X Window System'
Ouvrir une nouvelle session SSH.
ssh –X utilisateur@serveur
Puis lancer Firefox via la commande.
Firefox
Votre navigateur doit alors s’ouvrir. Il suffit maintenant de configurer le proxy et de naviguer sur l’application que l’on souhaite tester.
Une fois terminé, taper la commande suivante pour arrêter l’enregistrement :
tsung-recorder stop
Nous pouvons visualiser l’enregistrement en ouvrant le fichier :
cat ~/.tsung/tsung_recorder20130201-2335.xml
Voici un extrait du contenu :
<request><http url='/index.html' version='1.1' method='GET'></http></request> <request><http url='/contact.html' version='1.1' method='GET'></http></request>
3 – Configuration du test
Maintenant que tout est installé et que notre scénario est enregistré, nous allons éditer la configuration de notre test afin de renseigner tous les paramètres de la montée en charge. Pour cela il faut éditer le fichier tsung.xml
Dans le XML de configuration, quatre nœuds vont nous intéresser :
- <Clients> : Il s’agit de définir les clients utilisés par Tsung. Il est possible de définir les IP, nombre d’utilisateurs maximum, nombre de processeurs etc.
- <Servers> : Défini le serveur cible (notre plateforme à tester).
- <Load> : Défini la/les phase(s) d’arrivée(s) de nos visiteurs, c’est-à-dire les étapes de notre montée en charge. Le nœud Load est donc composé d’un ou plusieurs nœuds arrivalphase.
- <Arrivalphase> : Contient les détails d’une phase d’arrivée : durée, nombre d’utilisateurs à simuler, fréquence d’arrivée des visiteurs …
- Généralement, plusieurs phases seront définies en accentuant la montée en charge, jusqu’à arriver à un stress intensif.
- <Sessions> : Contient les scénarios d’utilisation possible. Chaque scénario équivaut à un nœud « Session », et est composé de « Request ». A noter qu’il est possible de définir des probabilités pour les scénarios (le total des probabilités doit toujours être égal à 100).
- Les boucles : permettent d’augmenter le nombre de requêtes à effectuer sur l’application. Tsung nous permet de boucler sur les balises <request>, via l’utilisation de <For> …
- <for from= »1″ to= »10″ var= »i »><request>…</request></for> : Pour boucler 10 fois sur les <Request>, de façon à générer encore plus de requêtes sur notre plateforme.
Maintenant que nous avons présenté rapidement les principaux points du fichier de configuration, nous allons passer à l’édition. Pour ce faire, il suffit d’ouvrir le fichier ~/.tsung/tsung.xml, et de le modifier afin de créer la configuration de test idéale pour votre architecture, vos besoins, etc.
vi ~/.tsung/tsung.xml
Voici un exemple de fichier XML :
<?xml version="1.0"?> <!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd"> <tsung loglevel="notice" version="1.0"> <!-- Configuration du client --> <clients> <client host="localhost" use_controller_vm="true"/> </clients> <!-- Configuration du serveur --> <servers> <server host="192.168.1.11" port="80" type="tcp"></server> </servers> <!-- phases d'arrivée, 3 paliers de 10 minutes où l'on augmente la fréquence d'arrivée de 1 puis 10 puis 30 visiteurs par seconde --> <load> <arrivalphase phase="1" duration="10" unit="minute"> <users arrivalrate="1" unit="second"></users> </arrivalphase> <arrivalphase phase="2" duration="10" unit="minute"> <users arrivalrate="10" unit="second"></users> </arrivalphase> <arrivalphase phase="3" duration="10" unit="minute"> <users arrivalrate="30" unit="second"></users> </arrivalphase> </load> <!-- Les scénarios --> <sessions> <!-- Scénarios 1 avec 70% de probabilité, l'internaute charge successivement 3 pages --> <session name="scenario1" probability="70" type="ts_http"> <request><http url='/page1.html' version='1.1' method='GET'></http></request> <request><http url='/page2.html' version='1.1' method='GET'></http></request> <request><http url='/page3.html' version='1.1' method='GET'></http></request> </session> <!-- Scénarios 2 avec 30% de probabilité, l'internaute charge 10 fois la page 1 --> <session name="scenario2" probability="30" type="ts_http"> <for from="1" to="10" var="i"> <request><http url='/page1.html' version='1.1' method='GET'></http></request> </for> </session> </sessions> </tsung>
Dans la troisième et dernière partie de ce tutoriel nous verrons comment lancer le test de montée en charge et générer un rapport.
Commentaires récents