22
0
Fork 0
wiki/HowtoTsung.md

127 lines
4.6 KiB
Markdown
Raw Normal View History

2018-09-26 15:56:15 +02:00
---
title: Howto Tsung
categories: tips network utilities tools sysadmin
...
* Site officiel : <http://tsung.erlang-projects.org/>
* Manuel de Tsung : <http://tsung.erlang-projects.org/user_manual.html>
Tsung (anciennement IDX-Tsunami) est un outil de test de monté en charge. Il peut être utilisé pour les services suivants : HTTP, WebDAV, SOAP, PostgreSQL, MySQL, AMQP, MQTT, LDAP et Jabber / XMPP.
Latout principal de Tsung réside dans sa capacité à simuler un très grand nombre dutilisateurs simultanés à partir dune seule machine. Il peut être également utilisé en tirant parti de plusieurs machines, en mode cluster. Lorsqu'il est utilisé sur un cluster, il permet de générer une charge vraiment très impressionnante à partir d'un cluster modeste, facile à configurer et à gérer.
2016-12-29 11:25:39 +01:00
2018-09-26 15:56:15 +02:00
Tsung est développé en Erlang.
2016-12-29 11:25:39 +01:00
2018-09-26 15:56:15 +02:00
## Installation
2016-12-29 11:25:39 +01:00
2018-09-26 15:56:15 +02:00
Sous Debian
2016-12-29 11:25:39 +01:00
~~~
# aptitude install tsung
~~~
2018-09-26 15:56:15 +02:00
> *Note* : sur Debian 9 il y a [un souci](https://github.com/processone/tsung/issues/276) qui peut être contourné avec ces commandes :
2018-09-21 12:12:26 +02:00
~~~
# ln -s /usr/share /usr/lib/share
# ln -s /usr/lib/x86_64-linux-gnu/tsung /usr/lib/tsung
~~~
2018-09-26 15:56:15 +02:00
Sous OpenBSD :
~~~
# pkg_add tsung
~~~
## Utilisation
2016-12-29 11:25:39 +01:00
### Enregistrement d'une session
~~~
$ tsung-recorder start
2018-09-26 15:56:15 +02:00
2016-12-29 11:25:39 +01:00
$ tsung-recorder stop
~~~
2018-09-26 15:56:15 +02:00
### Créer un scenario de test
2016-12-29 11:25:39 +01:00
2018-09-26 15:56:15 +02:00
Dupliquer et compléter les entêtes XML grâces aux exemples dans /usr/share/doc/tsung/examples/
2016-12-29 11:25:39 +01:00
2018-09-26 15:56:15 +02:00
Un exemple :
2016-12-29 11:25:39 +01:00
~~~
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd">
<tsung loglevel="notice" version="1.0">
<!-- Client side setup -->
<clients>
<client host="mamachine" maxusers="30000"/>
</clients>
<!-- Server side setup -->
<servers>
<server host="www.test.com" port="80" type="tcp"></server>
</servers>
<load duration="5" unit="minute">
<arrivalphase phase="1" duration="5" unit="minute">
2017-01-09 17:20:21 +01:00
<users interarrival="1" unit="second"></users>
</arrivalphase>
2016-12-29 11:25:39 +01:00
</load>
<sessions>
2017-01-09 17:20:21 +01:00
<session name='test' probability='100' type='ts_http'>
<request><http url='<http://www.example.com'> version='1.1' method='GET'></<http></request>
2016-12-29 11:25:39 +01:00
[…]
</session>
</sessions>
2017-01-09 17:22:35 +01:00
</tsung>
2016-12-29 11:25:39 +01:00
~~~
2018-09-26 15:56:15 +02:00
### Lancer un scenario de test
2016-12-29 11:25:39 +01:00
~~~
tsung -f tsung-toto.xml start
~~~
2018-09-26 15:56:15 +02:00
### Consulter le test en cours
2018-09-21 16:15:44 +02:00
2018-09-21 16:16:33 +02:00
Tsung démarre un serveur web intégré et accessible sur [http://localhost:8091/]()
2018-09-26 15:56:15 +02:00
2018-09-21 16:15:44 +02:00
Cela permet de consulter les infos sur le test pendant son fonctionnement et même de stopper le test si on constate qu'il pose problème.
Si le test est lancé avec l'option `-k` le serveur web n'est pas arrêté lorsque le test est terminé.
2016-12-29 11:25:39 +01:00
### Générer les stats
~~~
cd ~/.tsung/log/20081103-16:21
/usr/lib/tsung/bin/tsung_stats.pl
~~~
2018-09-26 15:56:15 +02:00
## Améliorer les performances de Tsung
2016-12-29 11:25:39 +01:00
* ulimit
* Baisser le loglevel
2018-09-26 15:56:15 +02:00
## Mode multi clients
2016-12-29 11:25:39 +01:00
Il faut pouvoir se connecter en ssh via clé et sans passphrase.[[BR]]
Il faut que le nom de machine du master résout sur les slaves. (On pourra modifier le fichier hosts).[[BR]]
/!\ Il faut la même version de tsung et erlang et des librairies sur chaque machine.[[BR]]
2018-02-06 17:09:13 +01:00
/!\ Il ne faut pas de pare-feu, des ports dynamiques sont ouverts pour communiquer entre le master et les slaves.
2018-09-26 15:56:15 +02:00
## Erreur badmatch,{error,enoent}
2018-02-06 17:09:13 +01:00
Il faut créer des liens symboliques :
~~~
# ln -s /usr/share /usr/lib/share
# ln -s /usr/lib/x86_64-linux-gnu/tsung /usr/lib/tsung
2018-09-26 15:56:15 +02:00
~~~