de 1 à 1 million avec Tsung
Rodolphe Quiédeville
Confoo - Montréal
19 février 2015
Rodolphe Quiédeville (Novapost) de 1 à ...
#mylife
Admin/Sys tendance DevOps depuis 20 ans
84000 heures de connections au web
Nourri au logiciel libre exclusivement
...
Qu’est-ce qu’un test de performance ?
charge, volumétrie donnée
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsun...
Qu’est-ce qu’un test de performance ?
charge, volumétrie donnée
résistance, au desssus des limites
Rodolphe Quiédeville (N...
Qu’est-ce qu’un test de performance ?
charge, volumétrie donnée
résistance, au desssus des limites
vieillissement, dans 2 ...
Qu’est-ce qu’un test de performance ?
charge, volumétrie donnée
résistance, au desssus des limites
vieillissement, dans 2 ...
Qu’est-ce qu’un test de performance ?
charge, volumétrie donnée
résistance, au desssus des limites
vieillissement, dans 2 ...
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 2...
Ce n’est pas
!= test unitaire
!= test fonctionnel
!= test de conformité
Rodolphe Quiédeville (Novapost) de 1 à 1 million a...
Ce n’est pas
!= test unitaire
!= test fonctionnel
!= test de conformité
Ces tests ont été réalisés avant d’effectuer les t...
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...
La situation
client mécontent
boss encore plus
chef de projet serre les dents
Rodolphe Quiédeville (Novapost) de 1 à 1 mil...
La situation
client mécontent
boss encore plus
chef de projet serre les dents
soirée de foutue
Rodolphe Quiédeville (Novap...
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 ...
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évrie...
Cas d’école
plusieurs dizaines de photos sur la home
images servies par un cgi
Rodolphe Quiédeville (Novapost) de 1 à 1 mi...
Cas d’école
plusieurs dizaines de photos sur la home
images servies par un cgi
sources des images non maitrisées
Rodolphe ...
Cas d’école
plusieurs dizaines de photos sur la home
images servies par un cgi
sources des images non maitrisées
pas de li...
Cas d’école
plusieurs dizaines de photos sur la home
images servies par un cgi
sources des images non maitrisées
pas de li...
Cas d’école
plusieurs dizaines de photos sur la home
images servies par un cgi
sources des images non maitrisées
pas de li...
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édevill...
Cas d’école, le retour
situation : problème de performance sur l’affichage de la homepage en
production
lecture de logs
# g...
Cas d’école, le retour
situation : problème de performance sur l’affichage de la homepage en
production
lecture de logs
# g...
Cas d’école, le retour
situation : problème de performance sur l’affichage de la homepage en
production
lecture de logs
# g...
Cas d’école, le retour
situation : problème de performance sur l’affichage de la homepage en
production
lecture de logs
# g...
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é...
Tsung
début développement en 2001
écrit en Erlang
publié sous GNU GPL V2
projet Idealx initialement nommé IDX-Tsunami
test...
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 ...
Caractéristiques
multi protocoles
scalable
pas d’interface graphique
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec...
Caractéristiques
multi protocoles
scalable
pas d’interface graphique
scenarios XML avec validation XSL
Rodolphe Quiédevill...
Caractéristiques
multi protocoles
scalable
pas d’interface graphique
scenarios XML avec validation XSL
extensible par plug...
Caractéristiques
multi protocoles
scalable
pas d’interface graphique
scenarios XML avec validation XSL
extensible par plug...
Caractéristiques
multi protocoles
scalable
pas d’interface graphique
scenarios XML avec validation XSL
extensible par plug...
Caractéristiques
multi protocoles
scalable
pas d’interface graphique
scenarios XML avec validation XSL
extensible par plug...
Protocoles supportés en 1.5.1
HTTP/HTTPS
Websocket
Jabber/XMPP
Webdav
AMQP / MQTT / ZeroMQ
LDAP
MySQL
PostgreSQL
Rodolphe ...
Principe de fonctionnement
un contrôleur
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / ...
Principe de fonctionnement
un contrôleur
0 à N injecteurs
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 f...
Principe de fonctionnement
un contrôleur
0 à N injecteurs
une cible
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec ...
Principe de fonctionnement
un contrôleur
0 à N injecteurs
une cible
un scenario
Rodolphe Quiédeville (Novapost) de 1 à 1 m...
Principe de fonctionnement
un contrôleur
0 à N injecteurs
une cible
un scenario, des scenarii
Rodolphe Quiédeville (Novapo...
Principe de fonctionnement
un contrôleur
0 à N injecteurs
une cible
un scenario, des scenarii
des jeux de données de test
...
Principe de fonctionnement
un contrôleur
0 à N injecteurs
une cible
un scenario, des scenarii
des jeux de données de test,...
Principe de fonctionnement
un contrôleur
0 à N injecteurs
une cible
un scenario, des scenarii
des jeux de données de test,...
Principe de fonctionnement
un contrôleur
0 à N injecteurs
une cible
un scenario, des scenarii
des jeux de données de test,...
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...
Scenario
Example
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd">
<tsung loglevel="debug" du...
Scenario
La cible
Simple
<servers>
<server host="www.target.fr" port="8080" type="tcp" />
</servers>
Rodolphe Quiédeville ...
Scenario
La cible
Simple
<servers>
<server host="www.target.fr" port="8080" type="tcp" />
</servers>
Complexe
<servers>
<s...
Scenario
Les injecteurs
Simple
<clients>
<client host="localhost" use_controller_vm="true"/>
</clients>
Rodolphe Quiédevil...
Scenario
Les injecteurs
Simple
<clients>
<client host="localhost" use_controller_vm="true"/>
</clients>
Complexe
<clients>...
Scenario
Les injecteurs
Simple
<clients>
<client host="localhost" use_controller_vm="true"/>
</clients>
Complexe
<clients>...
Scenario
La charge
Example
<load>
<arrivalphase phase="1" duration="10" unit="minute">
<users arrivalrate="1" unit="second...
Scenario
Création du scenario
En mode proxy
$ tsung-recorder start
Starting Tsung recorder on port 8090
"Record file: /hom...
Scenario
Les requêtes
Example
<request>
<http url="/" method="GET" version="1.1" />
</request>
<request>
<http url="/api/v...
Scenario
Sur le contrôleur
Exécution
$ tsung -f scenario.xml -l logs/ start
Rodolphe Quiédeville (Novapost) de 1 à 1 milli...
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 ...
Fonctions avancées
gestion des cookies automatique
thinktime aléatoire
Rodolphe Quiédeville (Novapost) de 1 à 1 million av...
Fonctions avancées
gestion des cookies automatique
thinktime aléatoire
boucles et sections conditionnelles
Rodolphe Quiéde...
Fonctions avancées
gestion des cookies automatique
thinktime aléatoire
boucles et sections conditionnelles
analyse du résu...
Fonctions avancées
gestion des cookies automatique
thinktime aléatoire
boucles et sections conditionnelles
analyse du résu...
Fonctions avancées
gestion des cookies automatique
thinktime aléatoire
boucles et sections conditionnelles
analyse du résu...
Fonctions avancées
gestion des cookies automatique
thinktime aléatoire
boucles et sections conditionnelles
analyse du résu...
Fonctions avancées
gestion des cookies automatique
thinktime aléatoire
boucles et sections conditionnelles
analyse du résu...
match
L’élément match permet de déclencher une action suivant le contenu
du résultat de la requête.
Example
<request>
<mat...
dyn_variable
Les variables dynamiques sont initialisées par lecture du résultat d’une
action et peuvent être ré-utilisées ...
dyn_variable
Lecture d’un fichier JSON
Example
<request>
<dyn_variable name="nb_page" jsonpath="field.array[3].value"/>
<ht...
dyn_variable
Utilisation du xpath
Example
<request>
<dyn_variable name="field1_value" xpath="//div[2]/@value"/>
<http url=...
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 sec...
Cas concret
jeu télévisé allemand avec retour des téléspectateurs
30 millions de joueurs avec une action toutes les 10 sec...
Cas concret
jeu télévisé allemand avec retour des téléspectateurs
30 millions de joueurs avec une action toutes les 10 sec...
Cas concret
jeu télévisé allemand avec retour des téléspectateurs
30 millions de joueurs avec une action toutes les 10 sec...
Cas concret
jeu télévisé allemand avec retour des téléspectateurs
30 millions de joueurs avec une action toutes les 10 sec...
Cas concret
jeu télévisé allemand avec retour des téléspectateurs
30 millions de joueurs avec une action toutes les 10 sec...
Quelques conseils
commencez au plus tôt la rédaction des scénarios
Rodolphe Quiédeville (Novapost) de 1 à 1 million avec T...
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...
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
architec...
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
architec...
Contribuer
Docs, https://tsung.readthedocs.org/
Code, https://github.com/processone/tsung/
CI, http:
//jenkins.quiedeville...
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...
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é...
Questions ?
Rodolphe Quiédeville
rodolphe.quiedeville@novapost.fr
Document publié sous Licence Creative Commons BY-SA 2.0
...
Prochain SlideShare
Chargement dans…5
×

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

897 vues

Publié le

Développer une application scalable aujourd'hui est à la portée de tous, la tester pour lui faire supporter de 1 à 1 millions d'utilisateur est aussi simple, si on utilise Tsung. Après une présentation générale on entrera dans les arcanes des modules Erlang pour développer des tests de peformance riches en fonctionnalités

Publié dans : Technologie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
897
Sur SlideShare
0
Issues des intégrations
0
Intégrations
16
Actions
Partages
0
Téléchargements
12
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

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

  1. 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. 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. 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. 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. 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. 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. 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. 8. Ce n’est pas != test unitaire Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 4 / 59
  9. 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. 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. 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. 12. A quoi cela sert-il ? Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 8 / 59
  13. 13. A éviter cela Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 9 / 59
  14. 14. La situation client mécontent Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 10 / 59
  15. 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. 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. 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. 18. Mais pourquoi ? Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 11 / 59
  19. 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. 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. 21. chez-moi-ca-marche.com Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 14 / 59
  22. 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. 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. 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. 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. 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. 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. 28. 503 Service unavalaible Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 16 / 59
  29. 29. chez-moi-ca-marche.com Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 17 / 59
  30. 30. mais pas en prod ! Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 18 / 59
  31. 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. 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. 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. 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. 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. 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. 37. Chargeons Tsung de nous aider Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 25 / 59
  38. 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. 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. 40. Caractéristiques multi protocoles Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 27 / 59
  41. 41. Caractéristiques multi protocoles scalable Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 27 / 59
  42. 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. 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. 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. 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. 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. 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. 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. 49. Principe de fonctionnement un contrôleur Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 30 / 59
  50. 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. 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. 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. 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. 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. 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. 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. 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. 58. Action ! Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 31 / 59
  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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 70. Les résultats Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 40 / 59
  71. 71. Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 41 / 59
  72. 72. Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 42 / 59
  73. 73. Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 43 / 59
  74. 74. Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 44 / 59
  75. 75. Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 45 / 59
  76. 76. Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 46 / 59
  77. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 89. Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 52 / 59
  90. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 101. Pardon, j’ai menti Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 56 / 59
  102. 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. 103. mais 10 millions Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 58 / 59
  104. 104. mais 10 millions 75 noeuds Rodolphe Quiédeville (Novapost) de 1 à 1 million avec Tsung 19 février 2015 58 / 59
  105. 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. 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

×