Réaliser des tests de performances de site web avec Tsung

Publié le 16 juin 2011 par Pydubreucq

Comme expliqué précédemment Tsung est un outil permettant de réaliser des tests de performances multi-protocole

Je vais essayé de fournir une méthode pour installer Tsung sur une Debian Squeeze (testing) et ensuite je vais vous montrer comment réaliser des tests de performances.

Installation :

Tout d’abord, il faut installer les pré-requis :

aptitude install erlang-asn1 erlang-base erlang-corba erlang-crypto erlang-dev erlang-docbuilder erlang-edoc erlang-erl-docgen erlang-eunit erlang-ic erlang-inets erlang-inviso erlang-mnesia erlang-nox erlang-odbc erlang-os-mon erlang-parsetools erlang-percept erlang-public-key erlang-runtime-tools erlang-snmp erlang-ssh erlang-ssl erlang-syntax-tools erlang-tools erlang-webtool erlang-xmerl libsctp1 lksctp-tools

Une fois que tout est installé, il suffit de récupérer l’archive de Tsung et de la compiler.

Il existe une version paquet en .deb de Tsung pour Ubuntu mais de mon côté ça n’a pas fonctionné, la version de Erlang présent sur les dépôts différait de la version utilisée pour générer le paquet .deb

./configure
make
make install

Une fois le paquet installé, vous aurez 2 nouveaux binaires :

tsung-recorder & tsung

  • tsung-recorder va vous permettre de créer vos scénarios de test de performances.
  • tsung est l’outil qui lance le test

Comment réaliser des tests de performances :

Nous allons lancer tsung-recorder :

tsung-recorder start

Tsung-recorder va écouter sur le port 8090.

Il vous suffit ensuite de paramétrer le proxy de votre navigateur http://localhost:8090 puis de naviguer sur votre site internet.

Tsung-recorder va enregistrer toutes vos actions qui deviendront votre scénario.

Penser à lancer un stop une fois le scénario réalisé :

tsung-recorder stop

Vous retrouverez dans votre répertoire utilisateur un fichier xml qui aura un nom de ce genre :

tsung_recorder20110615-22:44.xml

Note :

Il faut penser à fermer tous les autres onglets, afin d’éviter de voir apparaître des requêtes qui seraient celle de rafraichissement automatique de page, j’ai eu le tour avec cacti par exemple.

Vous pouvez aussi désactiver les extensions générant des requêtes, j’ai pour ma part rencontré des problèmes avec l’extension LastPass

Une fois le scénario de navigation créé il faut créer le fichier de configuraiton utilisé par tsung :

Vous trouverez des exemples de fichiers de configuration dans ce dossier :

/usr/share/doc/tsung/examples/

Voici une explication basique du fichier de configuration, qui doit se trouver dans votre répertoire utilisateur, pour moi :

/root/.tsung/tsung.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 cible –>
<servers>
<server host= »blog.admin-linux.org » port= »80″ type= »tcp »></server>
</servers>

<load>
<!– plusieurs phases d’arrivée de connexions peuvent être paramétrés :
Pour chaque phase, vous devez paramétrer l’interval entre chaque
nouvelle connection durant la phase.
Dans mon exemple, la phase dure 7 minutes, et durant ces 7 minutes
il y aura une connection toutes les 2 secondes –>
<arrivalphase phase= »1″ duration= »7″ unit= »minute »>
<users interarrival= »2″ unit= »second »></users>
</arrivalphase>
</load>

<!– Ici on va paramétrer les différents user_agent avec lesquels on
souhaite réaliser ce test.
La somme des probabilité doit toujours être de 100 –>

<options>
<option type= »ts_http » name= »user_agent »>
<user_agent probability= »40″>Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1</user_agent>
<user_agent probability= »40″>Mozilla/5.0 (X11; Linux x86_64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1</user_agent>
<user_agent probability= »20″>Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2) Gecko/20100115 Firefox/3.6</user_agent>
</option>
</options>

<!– start a session for a http user. the probability is the
frequency of this type os session. The sum of all session’s
probabilities must be 100 –>

<sessions>

<!– Ici on place les instructions du fichier xml généré avec tsung-recorder
ici tsung_recorder20110615-22:44.xml –>

</sessions>
</tsung>

Une fois votre fichier paramétré, il vous suffit de lancer tsung :

pydlaptop ~ # tsung start
Starting Tsung
"Log directory is: /root/.tsung/log/20110616-12:19"

Vous avez effectué à ce moment là votre premier test de performance, reste à connaître les résultats de ce tests.

Analyser ses performances :


Suite au test de performances, il est nécessaire d’avoir une vision du résultat.

Pour cela Tsung fournit un outils qui permet de générer une page donnant accès aux données, mais fournit aussi des graphiques

Il existe l’outil tsung_stats.pl pour ça.

Tout d’abord, il faut installer les pré-requis :

aptitude install gnuplot gnuplot-nox gnuplot-x11 groff libgd2-noxpm libnetpbm10 netpbm psutils ttf-liberation libappconfig-perl libtemplate-perl

Voici comment voir les paramètres de la commande :

/usr/lib/tsung/bin/tsung_stats.pl -help

Voici la commande que j’ai lancé pour traiter les données de mon test :

pydlaptop ~ # /usr/lib/tsung/bin/tsung_stats.pl --stats .tsung/log/20110615-23\:53/tsung.log
warn, last interval (4) not equal to the first, use the first one (10)
No data for Match
No data for Event
No data for Async
No data for Errors

Vous optiendrez l’arborescence ci-dessous :

pydlaptop ~ # ls -l /home/pydubreucq/prog/tsung/.
total 808
drwxr-xr-x  2 pydubreucq pydubreucq   4096 16 juin  10:27 data
-rw-r--r--  1 pydubreucq pydubreucq   9155 16 juin  10:35 gnuplot.log
drwxr-xr-x  2 pydubreucq pydubreucq   4096 16 juin  10:27 gnuplot_scripts
-rw-r--r--  1 pydubreucq pydubreucq   5272 16 juin  10:35 graph.html
drwxr-xr-x  2 pydubreucq pydubreucq   4096 16 juin  10:32 images
-rw-r--r--  1 pydubreucq pydubreucq   6895 16 juin  10:35 report.html

Il vous suffit ensuite d’ouvrir le fichier report.html dans un navigateur pour avoir ceux-ci :

Il est également possible de réaliser des graphes comparatifs via l’outils tsplot que je ne présenterai pas ici, mais qui est très intéressant.

Pour aller encore plus loin, il est possible de générer des bases de données RRDs :

Vous pouvez générer des rrds grâce au script réalisé par Rodolphe Quiédeville

Pour cela, il faut également installer les pré-requis :

aptitude install libdbi0 librrd4 rrdtool librrds-perl

Voici le script en question :

/usr/lib/tsung/bin/tsung-rrd.pl

Dire où trouver le fichier de log de tsung dans la variable ci-dessous :

$log_file = "tsung.log";

Ou alors, vous modifiez un peu le script pour que la valeur de log_file soit un argument passé à la commande comme ci-dessous :

$log_file = "$ARGV[0]";

De ce fait pour créer les rrd il faut lancer la commande comme ci-dessous :

/usr/lib/tsung/bin/tsung-rrd.pl /root/.tsung/log/20110615-23\:53/tsung.log

Ceci génére plusieurs fichiers RRD que vous pouvez exploiter par la suite.

Libre à vous ensuite d’exploiter vos fichiers RRD ce n’est pas le but de cet article.

Liens utiles :

Site Officiel de Tsung

Documentation de Tsung