SlideShare une entreprise Scribd logo
1  sur  106
Télécharger pour lire hors ligne
de 1 à 1 million avec Tsung
Rodolphe Quiédeville
Confoo - Montréal
19 février 2015
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 1 / 59
#mylife
Admin/Sys tendance DevOps depuis 20 ans
84000 heures de connections au web
Nourri au logiciel libre exclusivement
Contributeur à Tsung
Formateur auprès de Upstream-University
Responsable Performance chez Novapost / PeopleDoc
Consultant sur les performances des SI(G)
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 2 / 59
Qu’est-ce qu’un test de performance ?
charge, volumétrie donnée
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 3 / 59
Qu’est-ce qu’un test de performance ?
charge, volumétrie donnée
résistance, au desssus des limites
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 3 / 59
Qu’est-ce qu’un test de performance ?
charge, volumétrie donnée
résistance, au desssus des limites
vieillissement, dans 2 mois, dans 5 ans
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 3 / 59
Qu’est-ce qu’un test de performance ?
charge, volumétrie donnée
résistance, au desssus des limites
vieillissement, dans 2 mois, dans 5 ans
montée en charge, ouverture des nouveaux marchés
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 3 / 59
Qu’est-ce qu’un test de performance ?
charge, volumétrie donnée
résistance, au desssus des limites
vieillissement, dans 2 mois, dans 5 ans
montée en charge, ouverture des nouveaux marchés
Simulation au plus près du réel des conditions d’exploitation d’un
système.
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 3 / 59
Ce n’est pas
!= test unitaire
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 4 / 59
Ce n’est pas
!= test unitaire
!= test fonctionnel
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 5 / 59
Ce n’est pas
!= test unitaire
!= test fonctionnel
!= test de conformité
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 6 / 59
Ce n’est pas
!= test unitaire
!= test fonctionnel
!= test de conformité
Ces tests ont été réalisés avant d’effectuer les tests de charge ; au
risque de pertes de temps et de pertinence dans l’analyse des
résultats.
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 7 / 59
A quoi cela sert-il ?
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 8 / 59
A éviter cela
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 9 / 59
La situation
client mécontent
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 10 / 59
La situation
client mécontent
boss encore plus
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 10 / 59
La situation
client mécontent
boss encore plus
chef de projet serre les dents
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 10 / 59
La situation
client mécontent
boss encore plus
chef de projet serre les dents
soirée de foutue
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 10 / 59
Mais pourquoi ?
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 11 / 59
Quelle peut être la ou les cause(s) ?
sur consommation de CPU
saturation de mémoire
saturation des io
lock sur la base de données
saturation lien réseau
filesystem plein
...
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 12 / 59
Le site préféré des développeurs ?
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 13 / 59
chez-moi-ca-marche.com
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 14 / 59
Cas d’école
plusieurs dizaines de photos sur la home
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 15 / 59
Cas d’école
plusieurs dizaines de photos sur la home
images servies par un cgi
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 15 / 59
Cas d’école
plusieurs dizaines de photos sur la home
images servies par un cgi
sources des images non maitrisées
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 15 / 59
Cas d’école
plusieurs dizaines de photos sur la home
images servies par un cgi
sources des images non maitrisées
pas de limites sur la taille des images
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 15 / 59
Cas d’école
plusieurs dizaines de photos sur la home
images servies par un cgi
sources des images non maitrisées
pas de limites sur la taille des images
resize des images à la volée
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 15 / 59
Cas d’école
plusieurs dizaines de photos sur la home
images servies par un cgi
sources des images non maitrisées
pas de limites sur la taille des images
resize des images à la volée
pas de stockage de l’image retaillée
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 15 / 59
503 Service unavalaible
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 16 / 59
chez-moi-ca-marche.com
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 17 / 59
mais pas en prod !
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 18 / 59
So 90’s, now the web is 2.0 !
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 19 / 59
Cas d’école, le retour
Situation : problème de performance sur l’affichage de la homepage
en production
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 20 / 59
Cas d’école, le retour
situation : problème de performance sur l’affichage de la homepage en
production
lecture de logs
# grep -c "GET / " access.log
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 21 / 59
Cas d’école, le retour
situation : problème de performance sur l’affichage de la homepage en
production
lecture de logs
# grep -c "GET / " access.log
# 23 000
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 22 / 59
Cas d’école, le retour
situation : problème de performance sur l’affichage de la homepage en
production
lecture de logs
# grep -c "GET / " access.log
# 23 000
# grep -c "GET /api/v1/foo?format=json" access.log
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 23 / 59
Cas d’école, le retour
situation : problème de performance sur l’affichage de la homepage en
production
lecture de logs
# grep -c "GET / " access.log
# 23 000
# grep -c "GET /api/v1/foo?format=json" access.log
# 300 000
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 24 / 59
Chargeons Tsung de nous aider
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 25 / 59
Chargeons Tsung de nous aider
aide-toi, le ciel t’aidera
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 25 / 59
Tsung
début développement en 2001
écrit en Erlang
publié sous GNU GPL V2
projet Idealx initialement nommé IDX-Tsunami
test de serveur XMPP
version 1.5.1 stable, 1.6.0 bientôt
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 26 / 59
Caractéristiques
multi protocoles
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 27 / 59
Caractéristiques
multi protocoles
scalable
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 27 / 59
Caractéristiques
multi protocoles
scalable
pas d’interface graphique
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 27 / 59
Caractéristiques
multi protocoles
scalable
pas d’interface graphique
scenarios XML avec validation XSL
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 27 / 59
Caractéristiques
multi protocoles
scalable
pas d’interface graphique
scenarios XML avec validation XSL
extensible par plugins
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 27 / 59
Caractéristiques
multi protocoles
scalable
pas d’interface graphique
scenarios XML avec validation XSL
extensible par plugins
sondes de monitoring
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 27 / 59
Caractéristiques
multi protocoles
scalable
pas d’interface graphique
scenarios XML avec validation XSL
extensible par plugins
sondes de monitoring
modèle Stochastique avec distribution de Poisson
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 27 / 59
Caractéristiques
multi protocoles
scalable
pas d’interface graphique
scenarios XML avec validation XSL
extensible par plugins
sondes de monitoring
modèle Stochastique avec distribution de Poisson
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 28 / 59
Protocoles supportés en 1.5.1
HTTP/HTTPS
Websocket
Jabber/XMPP
Webdav
AMQP / MQTT / ZeroMQ
LDAP
MySQL
PostgreSQL
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 29 / 59
Principe de fonctionnement
un contrôleur
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / 59
Principe de fonctionnement
un contrôleur
0 à N injecteurs
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / 59
Principe de fonctionnement
un contrôleur
0 à N injecteurs
une cible
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / 59
Principe de fonctionnement
un contrôleur
0 à N injecteurs
une cible
un scenario
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / 59
Principe de fonctionnement
un contrôleur
0 à N injecteurs
une cible
un scenario, des scenarii
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / 59
Principe de fonctionnement
un contrôleur
0 à N injecteurs
une cible
un scenario, des scenarii
des jeux de données de test
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / 59
Principe de fonctionnement
un contrôleur
0 à N injecteurs
une cible
un scenario, des scenarii
des jeux de données de test, pas de dump de production
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / 59
Principe de fonctionnement
un contrôleur
0 à N injecteurs
une cible
un scenario, des scenarii
des jeux de données de test, pas de dump de production
des logs
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / 59
Principe de fonctionnement
un contrôleur
0 à N injecteurs
une cible
un scenario, des scenarii
des jeux de données de test, pas de dump de production
des logs
des rapports de résultats
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / 59
Action !
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 31 / 59
Installation
apt-get install tsung
yum install tsung
...
git clone && ./configure && make install
make deb rpm
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 32 / 59
Scenario
Example
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd">
<tsung loglevel="debug" dumptraffic="protocol" version="1.0">
<clients />
<servers />
<options />
<load>
<arrivalphase />
</load>
<sessions>
<session>
<transaction />
<transaction />
</session>
</sessions>
</tsung>
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 33 / 59
Scenario
La cible
Simple
<servers>
<server host="www.target.fr" port="8080" type="tcp" />
</servers>
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 34 / 59
Scenario
La cible
Simple
<servers>
<server host="www.target.fr" port="8080" type="tcp" />
</servers>
Complexe
<servers>
<server host="192.168.0.1" port="80" weight="2" type="tcp" />
<server host="192.168.0.2" port="8080" weight="1" type="tcp" />
<server host="192.168.0.3" port="80" weight="1" type="tcp" />
<server host="192.168.0.4" port="80" weight="1" type="tcp" />
<server host="192.168.0.5" port="80" weight="10" type="tcp" />
</servers>
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 34 / 59
Scenario
Les injecteurs
Simple
<clients>
<client host="localhost" use_controller_vm="true"/>
</clients>
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 35 / 59
Scenario
Les injecteurs
Simple
<clients>
<client host="localhost" use_controller_vm="true"/>
</clients>
Complexe
<clients>
<client host="foo" weight="1">
<ip value="10.9.195.12"></ip>
<ip value="10.9.195.13"></ip>
</client>
<client host="bar" weight="2" />
</clients>
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 35 / 59
Scenario
Les injecteurs
Simple
<clients>
<client host="localhost" use_controller_vm="true"/>
</clients>
Complexe
<clients>
<client host="foo" weight="1">
<ip value="10.9.195.12"></ip>
<ip value="10.9.195.13"></ip>
</client>
<client host="bar" weight="2" />
</clients>
Tout le traffic réseau entre le contrôlleur et les injecteurs passe par un
lien ssh monté automatiquement
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 35 / 59
Scenario
La charge
Example
<load>
<arrivalphase phase="1" duration="10" unit="minute">
<users arrivalrate="1" unit="second"></users>
</arrivalphase>
<arrivalphase phase="2" duration="60" unit="minute">
<users arrivalrate="10" unit="second"></users>
</arrivalphase>
</load>
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 36 / 59
Scenario
Création du scenario
En mode proxy
$ tsung-recorder start
Starting Tsung recorder on port 8090
"Record file: /home/rodo/.tsung/tsung_recorder20131003-1633.xml"
Depuis les logs
$ log2tsung.pl
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 37 / 59
Scenario
Les requêtes
Example
<request>
<http url="/" method="GET" version="1.1" />
</request>
<request>
<http url="/api/v1/foo?format=json" method="GET" version="1.1" />
</request>
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 38 / 59
Scenario
Sur le contrôleur
Exécution
$ tsung -f scenario.xml -l logs/ start
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 39 / 59
Les résultats
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 40 / 59
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 41 / 59
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 42 / 59
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 43 / 59
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 44 / 59
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 45 / 59
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 46 / 59
Fonctions avancées
gestion des cookies automatique
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 47 / 59
Fonctions avancées
gestion des cookies automatique
thinktime aléatoire
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 47 / 59
Fonctions avancées
gestion des cookies automatique
thinktime aléatoire
boucles et sections conditionnelles
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 47 / 59
Fonctions avancées
gestion des cookies automatique
thinktime aléatoire
boucles et sections conditionnelles
analyse du résultat
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 47 / 59
Fonctions avancées
gestion des cookies automatique
thinktime aléatoire
boucles et sections conditionnelles
analyse du résultat
variables dynamiques
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 47 / 59
Fonctions avancées
gestion des cookies automatique
thinktime aléatoire
boucles et sections conditionnelles
analyse du résultat
variables dynamiques
données aléatoires
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 47 / 59
Fonctions avancées
gestion des cookies automatique
thinktime aléatoire
boucles et sections conditionnelles
analyse du résultat
variables dynamiques
données aléatoires
extension par modules erlang
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 47 / 59
Fonctions avancées
gestion des cookies automatique
thinktime aléatoire
boucles et sections conditionnelles
analyse du résultat
variables dynamiques
données aléatoires
extension par modules erlang
...
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 47 / 59
match
L’élément match permet de déclencher une action suivant le contenu
du résultat de la requête.
Example
<request>
<match do="loop" sleep_loop="5" max_loop="10" when="match">Retry</match>
<match do="abort" when="match">Error</match>
<http url="/index.php" method="GET">
</request>
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 48 / 59
dyn_variable
Les variables dynamiques sont initialisées par lecture du résultat d’une
action et peuvent être ré-utilisées dans les actions suivantes.
Example
<request>
<dyn_variable name="nb_page" re="Page d+ on (d+)" />
<http url="/articles" method="GET" version="1.1" ></http>
</request>
<request subst="true">
<http url="/articles?page=%%_nb_page%%" method="GET" version="1.1" ></http>
</request>
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 49 / 59
dyn_variable
Lecture d’un fichier JSON
Example
<request>
<dyn_variable name="nb_page" jsonpath="field.array[3].value"/>
<http url="/articles" method="GET" version="1.1" ></http>
</request>
<request subst="true">
<http url="/articles?page=%%_nb_page%%" method="GET" version="1.1" ></http>
</request>
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 50 / 59
dyn_variable
Utilisation du xpath
Example
<request>
<dyn_variable name="field1_value" xpath="//div[2]/@value"/>
<http url="/articles" method="GET" version="1.1" ></http>
</request>
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 51 / 59
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 52 / 59
Cas concret
jeu télévisé allemand avec retour des téléspectateurs
30 millions de joueurs avec une action toutes les 10 secondes
https://stormforger.com/blog/2014/05/27/load-testing-an-interactive-tv-show-with-over-1-million-users/
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 53 / 59
Cas concret
jeu télévisé allemand avec retour des téléspectateurs
30 millions de joueurs avec une action toutes les 10 secondes
fail à 85000 requêtes par secondes
https://stormforger.com/blog/2014/05/27/load-testing-an-interactive-tv-show-with-over-1-million-users/
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 53 / 59
Cas concret
jeu télévisé allemand avec retour des téléspectateurs
30 millions de joueurs avec une action toutes les 10 secondes
fail à 85000 requêtes par secondes
test poussé à 330 000/sec ce qui équivaut à 1Millions de joueurs
https://stormforger.com/blog/2014/05/27/load-testing-an-interactive-tv-show-with-over-1-million-users/
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 53 / 59
Cas concret
jeu télévisé allemand avec retour des téléspectateurs
30 millions de joueurs avec une action toutes les 10 secondes
fail à 85000 requêtes par secondes
test poussé à 330 000/sec ce qui équivaut à 1Millions de joueurs
plateforme EC2 avec 50 nodes, 800 core, 1.5TB de RAM
https://stormforger.com/blog/2014/05/27/load-testing-an-interactive-tv-show-with-over-1-million-users/
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 53 / 59
Cas concret
jeu télévisé allemand avec retour des téléspectateurs
30 millions de joueurs avec une action toutes les 10 secondes
fail à 85000 requêtes par secondes
test poussé à 330 000/sec ce qui équivaut à 1Millions de joueurs
plateforme EC2 avec 50 nodes, 800 core, 1.5TB de RAM
1,213,583,187 requests, soit 50Gbits
https://stormforger.com/blog/2014/05/27/load-testing-an-interactive-tv-show-with-over-1-million-users/
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 53 / 59
Cas concret
jeu télévisé allemand avec retour des téléspectateurs
30 millions de joueurs avec une action toutes les 10 secondes
fail à 85000 requêtes par secondes
test poussé à 330 000/sec ce qui équivaut à 1Millions de joueurs
plateforme EC2 avec 50 nodes, 800 core, 1.5TB de RAM
1,213,583,187 requests, soit 50Gbits
taux d’erreur 0.000000216% (1 error every 4,624,616 requests)
https://stormforger.com/blog/2014/05/27/load-testing-an-interactive-tv-show-with-over-1-million-users/
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 53 / 59
Quelques conseils
commencez au plus tôt la rédaction des scénarios
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 54 / 59
Quelques conseils
commencez au plus tôt la rédaction des scénarios
créez vos données de test avec l’outil de test
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 54 / 59
Quelques conseils
commencez au plus tôt la rédaction des scénarios
créez vos données de test avec l’outil de test
architecture de pre-prod au plus près de la prod
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 54 / 59
Quelques conseils
commencez au plus tôt la rédaction des scénarios
créez vos données de test avec l’outil de test
architecture de pre-prod au plus près de la prod
le dernier test pour la route en prod
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 54 / 59
Contribuer
Docs, https://tsung.readthedocs.org/
Code, https://github.com/processone/tsung/
CI, http:
//jenkins.quiedeville.org/view/Tsung/job/Tsung/
Bugtrack,
https://support.process-one.net/browse/TSUN
Irc, freenode #tsung
ML, https://lists.process-one.net/mailman/
listinfo/tsung-users
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 55 / 59
Pardon, j’ai menti
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 56 / 59
Tsung ne supporte pas 1 million d’utilisateurs
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 57 / 59
mais 10 millions
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 58 / 59
mais 10 millions
75 noeuds
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 58 / 59
mais 10 millions
75 noeuds
> 1 million requêtes/secondes
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 58 / 59
Questions ?
Rodolphe Quiédeville
rodolphe.quiedeville@novapost.fr
Document publié sous Licence Creative Commons BY-SA 2.0
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 59 / 59

Contenu connexe

En vedette

Questionaire On Music Magazine
Questionaire On Music Magazine Questionaire On Music Magazine
Questionaire On Music Magazine CharlotteW123
 
Accéleration stochastique (Some thoughts about cosmic rays acceleration)
Accéleration stochastique (Some thoughts about cosmic rays acceleration)Accéleration stochastique (Some thoughts about cosmic rays acceleration)
Accéleration stochastique (Some thoughts about cosmic rays acceleration)Ahmed Ammar Rebai PhD
 
Information metier hotellerie restauration café, bar brasserie www.hotellerie...
Information metier hotellerie restauration café, bar brasserie www.hotellerie...Information metier hotellerie restauration café, bar brasserie www.hotellerie...
Information metier hotellerie restauration café, bar brasserie www.hotellerie...Emploi Hotellerie Restauration
 
Catalogue de formation 2014-2015
Catalogue de formation 2014-2015Catalogue de formation 2014-2015
Catalogue de formation 2014-2015Cursus Management
 
Ppl15 096
Ppl15 096Ppl15 096
Ppl15 096blogVAP
 
Diapo tonic 2000 vidéo
Diapo tonic 2000 vidéoDiapo tonic 2000 vidéo
Diapo tonic 2000 vidéoKinou30
 
agroalimentaire
agroalimentaireagroalimentaire
agroalimentaireedwardoch
 
Le marché secondaire des logiciels
Le marché secondaire des logicielsLe marché secondaire des logiciels
Le marché secondaire des logicielstipsmarketing
 
La ʺquestion felicianoʺ et les manifestations de rue, apparences et culture p...
La ʺquestion felicianoʺ et les manifestations de rue, apparences et culture p...La ʺquestion felicianoʺ et les manifestations de rue, apparences et culture p...
La ʺquestion felicianoʺ et les manifestations de rue, apparences et culture p...UFPB
 
Initiation a la_medecine_libellule
Initiation a la_medecine_libelluleInitiation a la_medecine_libellule
Initiation a la_medecine_libellulegerdev
 
Four Corners french français
Four Corners french françaisFour Corners french français
Four Corners french français4corners3
 
Laurent Duveau: Microsoft Edge pour les développeurs web
Laurent Duveau: Microsoft Edge pour les développeurs webLaurent Duveau: Microsoft Edge pour les développeurs web
Laurent Duveau: Microsoft Edge pour les développeurs webMSDEVMTL
 

En vedette (18)

Vente Bases de Vie
Vente Bases de VieVente Bases de Vie
Vente Bases de Vie
 
Questionaire On Music Magazine
Questionaire On Music Magazine Questionaire On Music Magazine
Questionaire On Music Magazine
 
Accéleration stochastique (Some thoughts about cosmic rays acceleration)
Accéleration stochastique (Some thoughts about cosmic rays acceleration)Accéleration stochastique (Some thoughts about cosmic rays acceleration)
Accéleration stochastique (Some thoughts about cosmic rays acceleration)
 
Perte et vol de mobile
Perte et vol de mobilePerte et vol de mobile
Perte et vol de mobile
 
Information metier hotellerie restauration café, bar brasserie www.hotellerie...
Information metier hotellerie restauration café, bar brasserie www.hotellerie...Information metier hotellerie restauration café, bar brasserie www.hotellerie...
Information metier hotellerie restauration café, bar brasserie www.hotellerie...
 
Portefolio s
Portefolio sPortefolio s
Portefolio s
 
Plaquette acou s propa
Plaquette acou s propaPlaquette acou s propa
Plaquette acou s propa
 
Catalogue de formation 2014-2015
Catalogue de formation 2014-2015Catalogue de formation 2014-2015
Catalogue de formation 2014-2015
 
Ppl15 096
Ppl15 096Ppl15 096
Ppl15 096
 
Diapo tonic 2000 vidéo
Diapo tonic 2000 vidéoDiapo tonic 2000 vidéo
Diapo tonic 2000 vidéo
 
Café VTÉ rencontre Reptic 3 octobre 2013
Café VTÉ rencontre Reptic 3 octobre 2013Café VTÉ rencontre Reptic 3 octobre 2013
Café VTÉ rencontre Reptic 3 octobre 2013
 
agroalimentaire
agroalimentaireagroalimentaire
agroalimentaire
 
Le marché secondaire des logiciels
Le marché secondaire des logicielsLe marché secondaire des logiciels
Le marché secondaire des logiciels
 
La ʺquestion felicianoʺ et les manifestations de rue, apparences et culture p...
La ʺquestion felicianoʺ et les manifestations de rue, apparences et culture p...La ʺquestion felicianoʺ et les manifestations de rue, apparences et culture p...
La ʺquestion felicianoʺ et les manifestations de rue, apparences et culture p...
 
Initiation a la_medecine_libellule
Initiation a la_medecine_libelluleInitiation a la_medecine_libellule
Initiation a la_medecine_libellule
 
Four Corners french français
Four Corners french françaisFour Corners french français
Four Corners french français
 
Laurent Duveau: Microsoft Edge pour les développeurs web
Laurent Duveau: Microsoft Edge pour les développeurs webLaurent Duveau: Microsoft Edge pour les développeurs web
Laurent Duveau: Microsoft Edge pour les développeurs web
 
Upsc ias-2014-gs-paper-1
Upsc ias-2014-gs-paper-1Upsc ias-2014-gs-paper-1
Upsc ias-2014-gs-paper-1
 

Plus de Rodolphe Quiédeville (16)

Tests unitaires pour PostgreSQL avec pgTap
Tests unitaires pour PostgreSQL avec pgTapTests unitaires pour PostgreSQL avec pgTap
Tests unitaires pour PostgreSQL avec pgTap
 
PostgreSQL Meetup Nantes #2
PostgreSQL Meetup Nantes #2PostgreSQL Meetup Nantes #2
PostgreSQL Meetup Nantes #2
 
SQL Debug avec Django @ PyConFr 2015
SQL Debug avec Django @ PyConFr 2015SQL Debug avec Django @ PyConFr 2015
SQL Debug avec Django @ PyConFr 2015
 
Pytong2015
Pytong2015Pytong2015
Pytong2015
 
Confoo django
Confoo djangoConfoo django
Confoo django
 
BBL Données gégraphiques libres chez Work4labs
BBL Données gégraphiques libres chez Work4labsBBL Données gégraphiques libres chez Work4labs
BBL Données gégraphiques libres chez Work4labs
 
Tsung GIS
Tsung GISTsung GIS
Tsung GIS
 
BBL autour de PostgreSQL @Novapost
BBL autour de PostgreSQL @NovapostBBL autour de PostgreSQL @Novapost
BBL autour de PostgreSQL @Novapost
 
BBL chez Mappy autour de Tsung
BBL chez Mappy autour de TsungBBL chez Mappy autour de Tsung
BBL chez Mappy autour de Tsung
 
Un Tsung vaut mieux que 2 "croisons les doigts"
Un Tsung vaut mieux que 2 "croisons les doigts"Un Tsung vaut mieux que 2 "croisons les doigts"
Un Tsung vaut mieux que 2 "croisons les doigts"
 
OpenStreetMap Realtime Check
OpenStreetMap Realtime CheckOpenStreetMap Realtime Check
OpenStreetMap Realtime Check
 
Présentation de Tsung chez Leboncoin
Présentation de Tsung chez LeboncoinPrésentation de Tsung chez Leboncoin
Présentation de Tsung chez Leboncoin
 
de 1 à 1 million avec Tsung
de 1 à 1 million avec Tsungde 1 à 1 million avec Tsung
de 1 à 1 million avec Tsung
 
Tests de performance avec Tsung
Tests de performance avec TsungTests de performance avec Tsung
Tests de performance avec Tsung
 
Asterisk
AsteriskAsterisk
Asterisk
 
Tests de montée en charge avec Tsung
Tests de montée en charge avec TsungTests de montée en charge avec Tsung
Tests de montée en charge avec Tsung
 

Tsung de 1 à 1 million / Confoo Montréal 2015

  • 1. de 1 à 1 million avec Tsung Rodolphe Quiédeville Confoo - Montréal 19 février 2015 Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 1 / 59
  • 2. #mylife Admin/Sys tendance DevOps depuis 20 ans 84000 heures de connections au web Nourri au logiciel libre exclusivement Contributeur à Tsung Formateur auprès de Upstream-University Responsable Performance chez Novapost / PeopleDoc Consultant sur les performances des SI(G) Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 2 / 59
  • 3. Qu’est-ce qu’un test de performance ? charge, volumétrie donnée Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 3 / 59
  • 4. Qu’est-ce qu’un test de performance ? charge, volumétrie donnée résistance, au desssus des limites Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 3 / 59
  • 5. Qu’est-ce qu’un test de performance ? charge, volumétrie donnée résistance, au desssus des limites vieillissement, dans 2 mois, dans 5 ans Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 3 / 59
  • 6. Qu’est-ce qu’un test de performance ? charge, volumétrie donnée résistance, au desssus des limites vieillissement, dans 2 mois, dans 5 ans montée en charge, ouverture des nouveaux marchés Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 3 / 59
  • 7. Qu’est-ce qu’un test de performance ? charge, volumétrie donnée résistance, au desssus des limites vieillissement, dans 2 mois, dans 5 ans montée en charge, ouverture des nouveaux marchés Simulation au plus près du réel des conditions d’exploitation d’un système. Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 3 / 59
  • 8. Ce n’est pas != test unitaire Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 4 / 59
  • 9. Ce n’est pas != test unitaire != test fonctionnel Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 5 / 59
  • 10. Ce n’est pas != test unitaire != test fonctionnel != test de conformité Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 6 / 59
  • 11. Ce n’est pas != test unitaire != test fonctionnel != test de conformité Ces tests ont été réalisés avant d’effectuer les tests de charge ; au risque de pertes de temps et de pertinence dans l’analyse des résultats. Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 7 / 59
  • 12. A quoi cela sert-il ? Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 8 / 59
  • 13. A éviter cela Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 9 / 59
  • 14. La situation client mécontent Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 10 / 59
  • 15. La situation client mécontent boss encore plus Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 10 / 59
  • 16. La situation client mécontent boss encore plus chef de projet serre les dents Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 10 / 59
  • 17. La situation client mécontent boss encore plus chef de projet serre les dents soirée de foutue Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 10 / 59
  • 18. Mais pourquoi ? Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 11 / 59
  • 19. Quelle peut être la ou les cause(s) ? sur consommation de CPU saturation de mémoire saturation des io lock sur la base de données saturation lien réseau filesystem plein ... Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 12 / 59
  • 20. Le site préféré des développeurs ? Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 13 / 59
  • 21. chez-moi-ca-marche.com Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 14 / 59
  • 22. Cas d’école plusieurs dizaines de photos sur la home Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 15 / 59
  • 23. Cas d’école plusieurs dizaines de photos sur la home images servies par un cgi Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 15 / 59
  • 24. Cas d’école plusieurs dizaines de photos sur la home images servies par un cgi sources des images non maitrisées Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 15 / 59
  • 25. Cas d’école plusieurs dizaines de photos sur la home images servies par un cgi sources des images non maitrisées pas de limites sur la taille des images Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 15 / 59
  • 26. Cas d’école plusieurs dizaines de photos sur la home images servies par un cgi sources des images non maitrisées pas de limites sur la taille des images resize des images à la volée Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 15 / 59
  • 27. Cas d’école plusieurs dizaines de photos sur la home images servies par un cgi sources des images non maitrisées pas de limites sur la taille des images resize des images à la volée pas de stockage de l’image retaillée Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 15 / 59
  • 28. 503 Service unavalaible Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 16 / 59
  • 29. chez-moi-ca-marche.com Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 17 / 59
  • 30. mais pas en prod ! Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 18 / 59
  • 31. So 90’s, now the web is 2.0 ! Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 19 / 59
  • 32. Cas d’école, le retour Situation : problème de performance sur l’affichage de la homepage en production Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 20 / 59
  • 33. Cas d’école, le retour situation : problème de performance sur l’affichage de la homepage en production lecture de logs # grep -c "GET / " access.log Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 21 / 59
  • 34. Cas d’école, le retour situation : problème de performance sur l’affichage de la homepage en production lecture de logs # grep -c "GET / " access.log # 23 000 Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 22 / 59
  • 35. Cas d’école, le retour situation : problème de performance sur l’affichage de la homepage en production lecture de logs # grep -c "GET / " access.log # 23 000 # grep -c "GET /api/v1/foo?format=json" access.log Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 23 / 59
  • 36. Cas d’école, le retour situation : problème de performance sur l’affichage de la homepage en production lecture de logs # grep -c "GET / " access.log # 23 000 # grep -c "GET /api/v1/foo?format=json" access.log # 300 000 Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 24 / 59
  • 37. Chargeons Tsung de nous aider Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 25 / 59
  • 38. Chargeons Tsung de nous aider aide-toi, le ciel t’aidera Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 25 / 59
  • 39. Tsung début développement en 2001 écrit en Erlang publié sous GNU GPL V2 projet Idealx initialement nommé IDX-Tsunami test de serveur XMPP version 1.5.1 stable, 1.6.0 bientôt Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 26 / 59
  • 40. Caractéristiques multi protocoles Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 27 / 59
  • 41. Caractéristiques multi protocoles scalable Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 27 / 59
  • 42. Caractéristiques multi protocoles scalable pas d’interface graphique Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 27 / 59
  • 43. Caractéristiques multi protocoles scalable pas d’interface graphique scenarios XML avec validation XSL Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 27 / 59
  • 44. Caractéristiques multi protocoles scalable pas d’interface graphique scenarios XML avec validation XSL extensible par plugins Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 27 / 59
  • 45. Caractéristiques multi protocoles scalable pas d’interface graphique scenarios XML avec validation XSL extensible par plugins sondes de monitoring Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 27 / 59
  • 46. Caractéristiques multi protocoles scalable pas d’interface graphique scenarios XML avec validation XSL extensible par plugins sondes de monitoring modèle Stochastique avec distribution de Poisson Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 27 / 59
  • 47. Caractéristiques multi protocoles scalable pas d’interface graphique scenarios XML avec validation XSL extensible par plugins sondes de monitoring modèle Stochastique avec distribution de Poisson Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 28 / 59
  • 48. Protocoles supportés en 1.5.1 HTTP/HTTPS Websocket Jabber/XMPP Webdav AMQP / MQTT / ZeroMQ LDAP MySQL PostgreSQL Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 29 / 59
  • 49. Principe de fonctionnement un contrôleur Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / 59
  • 50. Principe de fonctionnement un contrôleur 0 à N injecteurs Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / 59
  • 51. Principe de fonctionnement un contrôleur 0 à N injecteurs une cible Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / 59
  • 52. Principe de fonctionnement un contrôleur 0 à N injecteurs une cible un scenario Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / 59
  • 53. Principe de fonctionnement un contrôleur 0 à N injecteurs une cible un scenario, des scenarii Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / 59
  • 54. Principe de fonctionnement un contrôleur 0 à N injecteurs une cible un scenario, des scenarii des jeux de données de test Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / 59
  • 55. Principe de fonctionnement un contrôleur 0 à N injecteurs une cible un scenario, des scenarii des jeux de données de test, pas de dump de production Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / 59
  • 56. Principe de fonctionnement un contrôleur 0 à N injecteurs une cible un scenario, des scenarii des jeux de données de test, pas de dump de production des logs Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / 59
  • 57. Principe de fonctionnement un contrôleur 0 à N injecteurs une cible un scenario, des scenarii des jeux de données de test, pas de dump de production des logs des rapports de résultats Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / 59
  • 58. Action ! Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 31 / 59
  • 59. Installation apt-get install tsung yum install tsung ... git clone && ./configure && make install make deb rpm Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 32 / 59
  • 60. Scenario Example <?xml version="1.0"?> <!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd"> <tsung loglevel="debug" dumptraffic="protocol" version="1.0"> <clients /> <servers /> <options /> <load> <arrivalphase /> </load> <sessions> <session> <transaction /> <transaction /> </session> </sessions> </tsung> Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 33 / 59
  • 61. Scenario La cible Simple <servers> <server host="www.target.fr" port="8080" type="tcp" /> </servers> Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 34 / 59
  • 62. Scenario La cible Simple <servers> <server host="www.target.fr" port="8080" type="tcp" /> </servers> Complexe <servers> <server host="192.168.0.1" port="80" weight="2" type="tcp" /> <server host="192.168.0.2" port="8080" weight="1" type="tcp" /> <server host="192.168.0.3" port="80" weight="1" type="tcp" /> <server host="192.168.0.4" port="80" weight="1" type="tcp" /> <server host="192.168.0.5" port="80" weight="10" type="tcp" /> </servers> Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 34 / 59
  • 63. Scenario Les injecteurs Simple <clients> <client host="localhost" use_controller_vm="true"/> </clients> Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 35 / 59
  • 64. Scenario Les injecteurs Simple <clients> <client host="localhost" use_controller_vm="true"/> </clients> Complexe <clients> <client host="foo" weight="1"> <ip value="10.9.195.12"></ip> <ip value="10.9.195.13"></ip> </client> <client host="bar" weight="2" /> </clients> Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 35 / 59
  • 65. Scenario Les injecteurs Simple <clients> <client host="localhost" use_controller_vm="true"/> </clients> Complexe <clients> <client host="foo" weight="1"> <ip value="10.9.195.12"></ip> <ip value="10.9.195.13"></ip> </client> <client host="bar" weight="2" /> </clients> Tout le traffic réseau entre le contrôlleur et les injecteurs passe par un lien ssh monté automatiquement Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 35 / 59
  • 66. Scenario La charge Example <load> <arrivalphase phase="1" duration="10" unit="minute"> <users arrivalrate="1" unit="second"></users> </arrivalphase> <arrivalphase phase="2" duration="60" unit="minute"> <users arrivalrate="10" unit="second"></users> </arrivalphase> </load> Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 36 / 59
  • 67. Scenario Création du scenario En mode proxy $ tsung-recorder start Starting Tsung recorder on port 8090 "Record file: /home/rodo/.tsung/tsung_recorder20131003-1633.xml" Depuis les logs $ log2tsung.pl Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 37 / 59
  • 68. Scenario Les requêtes Example <request> <http url="/" method="GET" version="1.1" /> </request> <request> <http url="/api/v1/foo?format=json" method="GET" version="1.1" /> </request> Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 38 / 59
  • 69. Scenario Sur le contrôleur Exécution $ tsung -f scenario.xml -l logs/ start Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 39 / 59
  • 70. Les résultats Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 40 / 59
  • 71. Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 41 / 59
  • 72. Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 42 / 59
  • 73. Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 43 / 59
  • 74. Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 44 / 59
  • 75. Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 45 / 59
  • 76. Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 46 / 59
  • 77. Fonctions avancées gestion des cookies automatique Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 47 / 59
  • 78. Fonctions avancées gestion des cookies automatique thinktime aléatoire Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 47 / 59
  • 79. Fonctions avancées gestion des cookies automatique thinktime aléatoire boucles et sections conditionnelles Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 47 / 59
  • 80. Fonctions avancées gestion des cookies automatique thinktime aléatoire boucles et sections conditionnelles analyse du résultat Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 47 / 59
  • 81. Fonctions avancées gestion des cookies automatique thinktime aléatoire boucles et sections conditionnelles analyse du résultat variables dynamiques Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 47 / 59
  • 82. Fonctions avancées gestion des cookies automatique thinktime aléatoire boucles et sections conditionnelles analyse du résultat variables dynamiques données aléatoires Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 47 / 59
  • 83. Fonctions avancées gestion des cookies automatique thinktime aléatoire boucles et sections conditionnelles analyse du résultat variables dynamiques données aléatoires extension par modules erlang Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 47 / 59
  • 84. Fonctions avancées gestion des cookies automatique thinktime aléatoire boucles et sections conditionnelles analyse du résultat variables dynamiques données aléatoires extension par modules erlang ... Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 47 / 59
  • 85. match L’élément match permet de déclencher une action suivant le contenu du résultat de la requête. Example <request> <match do="loop" sleep_loop="5" max_loop="10" when="match">Retry</match> <match do="abort" when="match">Error</match> <http url="/index.php" method="GET"> </request> Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 48 / 59
  • 86. dyn_variable Les variables dynamiques sont initialisées par lecture du résultat d’une action et peuvent être ré-utilisées dans les actions suivantes. Example <request> <dyn_variable name="nb_page" re="Page d+ on (d+)" /> <http url="/articles" method="GET" version="1.1" ></http> </request> <request subst="true"> <http url="/articles?page=%%_nb_page%%" method="GET" version="1.1" ></http> </request> Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 49 / 59
  • 87. dyn_variable Lecture d’un fichier JSON Example <request> <dyn_variable name="nb_page" jsonpath="field.array[3].value"/> <http url="/articles" method="GET" version="1.1" ></http> </request> <request subst="true"> <http url="/articles?page=%%_nb_page%%" method="GET" version="1.1" ></http> </request> Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 50 / 59
  • 88. dyn_variable Utilisation du xpath Example <request> <dyn_variable name="field1_value" xpath="//div[2]/@value"/> <http url="/articles" method="GET" version="1.1" ></http> </request> Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 51 / 59
  • 89. Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 52 / 59
  • 90. Cas concret jeu télévisé allemand avec retour des téléspectateurs 30 millions de joueurs avec une action toutes les 10 secondes https://stormforger.com/blog/2014/05/27/load-testing-an-interactive-tv-show-with-over-1-million-users/ Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 53 / 59
  • 91. Cas concret jeu télévisé allemand avec retour des téléspectateurs 30 millions de joueurs avec une action toutes les 10 secondes fail à 85000 requêtes par secondes https://stormforger.com/blog/2014/05/27/load-testing-an-interactive-tv-show-with-over-1-million-users/ Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 53 / 59
  • 92. Cas concret jeu télévisé allemand avec retour des téléspectateurs 30 millions de joueurs avec une action toutes les 10 secondes fail à 85000 requêtes par secondes test poussé à 330 000/sec ce qui équivaut à 1Millions de joueurs https://stormforger.com/blog/2014/05/27/load-testing-an-interactive-tv-show-with-over-1-million-users/ Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 53 / 59
  • 93. Cas concret jeu télévisé allemand avec retour des téléspectateurs 30 millions de joueurs avec une action toutes les 10 secondes fail à 85000 requêtes par secondes test poussé à 330 000/sec ce qui équivaut à 1Millions de joueurs plateforme EC2 avec 50 nodes, 800 core, 1.5TB de RAM https://stormforger.com/blog/2014/05/27/load-testing-an-interactive-tv-show-with-over-1-million-users/ Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 53 / 59
  • 94. Cas concret jeu télévisé allemand avec retour des téléspectateurs 30 millions de joueurs avec une action toutes les 10 secondes fail à 85000 requêtes par secondes test poussé à 330 000/sec ce qui équivaut à 1Millions de joueurs plateforme EC2 avec 50 nodes, 800 core, 1.5TB de RAM 1,213,583,187 requests, soit 50Gbits https://stormforger.com/blog/2014/05/27/load-testing-an-interactive-tv-show-with-over-1-million-users/ Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 53 / 59
  • 95. Cas concret jeu télévisé allemand avec retour des téléspectateurs 30 millions de joueurs avec une action toutes les 10 secondes fail à 85000 requêtes par secondes test poussé à 330 000/sec ce qui équivaut à 1Millions de joueurs plateforme EC2 avec 50 nodes, 800 core, 1.5TB de RAM 1,213,583,187 requests, soit 50Gbits taux d’erreur 0.000000216% (1 error every 4,624,616 requests) https://stormforger.com/blog/2014/05/27/load-testing-an-interactive-tv-show-with-over-1-million-users/ Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 53 / 59
  • 96. Quelques conseils commencez au plus tôt la rédaction des scénarios Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 54 / 59
  • 97. Quelques conseils commencez au plus tôt la rédaction des scénarios créez vos données de test avec l’outil de test Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 54 / 59
  • 98. Quelques conseils commencez au plus tôt la rédaction des scénarios créez vos données de test avec l’outil de test architecture de pre-prod au plus près de la prod Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 54 / 59
  • 99. Quelques conseils commencez au plus tôt la rédaction des scénarios créez vos données de test avec l’outil de test architecture de pre-prod au plus près de la prod le dernier test pour la route en prod Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 54 / 59
  • 100. Contribuer Docs, https://tsung.readthedocs.org/ Code, https://github.com/processone/tsung/ CI, http: //jenkins.quiedeville.org/view/Tsung/job/Tsung/ Bugtrack, https://support.process-one.net/browse/TSUN Irc, freenode #tsung ML, https://lists.process-one.net/mailman/ listinfo/tsung-users Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 55 / 59
  • 101. Pardon, j’ai menti Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 56 / 59
  • 102. Tsung ne supporte pas 1 million d’utilisateurs Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 57 / 59
  • 103. mais 10 millions Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 58 / 59
  • 104. mais 10 millions 75 noeuds Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 58 / 59
  • 105. mais 10 millions 75 noeuds > 1 million requêtes/secondes Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 58 / 59
  • 106. Questions ? Rodolphe Quiédeville rodolphe.quiedeville@novapost.fr Document publié sous Licence Creative Commons BY-SA 2.0 Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 59 / 59