de 1 à 1 million avec Tsung

631 vues

Publié le

Présentation des tests de performance et de leur mise en pratique avec Tsung. Description du fonctionnement de Tsung de son mécanisme de base et de ses fonctions avancées.

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

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
631
Sur SlideShare
0
Issues des intégrations
0
Intégrations
10
Actions
Partages
0
Téléchargements
5
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

de 1 à 1 million avec Tsung

  1. 1. de 1 à 1 million avec Tsung Rodolphe Quiédeville La Cantine - Nantes 22 octobre 2013 Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 1 / 53
  2. 2. Ma pomme Administrateur système et réseaux tendance DevOps Nourri de logiciel libre depuis 15 ans Signe astrologeek debian ascendant emacs Contributeur à Tsung Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 2 / 53
  3. 3. Qu’est-ce qu’un test de performance ? charge résistance vieillissement montée en charge configuration pics de charge Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 3 / 53
  4. 4. Qu’est-ce qu’un test de performance ? charge résistance vieillissement montée en charge configuration pics de charge Simulation au plus près du réel des conditions d’exploitation d’un système. Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 4 / 53
  5. 5. Ce n’est pas != test unitaire Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 5 / 53
  6. 6. Ce n’est pas != test unitaire != test fonctionnel Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 6 / 53
  7. 7. Ce n’est pas != test unitaire != test fonctionnel != test de conformité Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 7 / 53
  8. 8. 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 8 / 53
  9. 9. A quoi cela sert-il ? Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 9 / 53
  10. 10. A éviter cela Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 10 / 53
  11. 11. La situation client mécontent Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 11 / 53
  12. 12. La situation client mécontent boss pas content Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 12 / 53
  13. 13. La situation client mécontent boss pas content chef de projet serre les dents Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 13 / 53
  14. 14. La situation client mécontent boss pas content chef de projet serre les dents soirée de foutue Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 14 / 53
  15. 15. Mais pourquoi ? Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 15 / 53
  16. 16. Quelle peut être la cause ? Inputs 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 16 / 53
  17. 17. Le site préféré des développeurs ? Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 17 / 53
  18. 18. chez-moi-ca-marche.com Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 18 / 53
  19. 19. Cas d’école plusieurs dizaines de photos sur la home Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 19 / 53
  20. 20. Cas d’école plusieurs dizaines de photos sur la home images servies par un cgi Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 20 / 53
  21. 21. Cas d’école plusieurs dizaines de photos sur la home images servies par un cgi sources des images non maitrisées Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 21 / 53
  22. 22. 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 22 / 53
  23. 23. 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 23 / 53
  24. 24. 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 24 / 53
  25. 25. chez-moi-ca-marche.com Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 25 / 53
  26. 26. mais pas en prod ! Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 26 / 53
  27. 27. So 90’s, now is web 2.0 ! Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 27 / 53
  28. 28. Cas d’école, le retour Situation : problème de performance sur l’affichage de la homepage en production Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 28 / 53
  29. 29. 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 29 / 53
  30. 30. 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 30 / 53
  31. 31. 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 31 / 53
  32. 32. 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 32 / 53
  33. 33. Chargeons Tsung de nous aider Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 33 / 53
  34. 34. Principe de fonctionnement un contrôleur 0 à N injecteurs une cible un scenario des logs des rapports de résultats Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 34 / 53
  35. 35. Action ! Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 35 / 53
  36. 36. Installation apt-get install tsung yum install tsung ... git clone && ./configure && make install make deb rpm Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 36 / 53
  37. 37. 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 37 / 53
  38. 38. Scenario La cible Example Simple <servers> <server host="www.target.fr" port="8080" type="tcp" /> </servers> Example Complexe <servers> <server host="192.168.0.1" port="80" weight="2" type="tcp" /> <server host="192.168.0.2" port="80" weight="1" type="tcp" /> </servers> Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 38 / 53
  39. 39. Scenario Les injecteurs Example Simple <clients> <client host="foo" weight="1" /> </clients> Example 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 39 / 53
  40. 40. 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 40 / 53
  41. 41. 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 41 / 53
  42. 42. 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 42 / 53
  43. 43. Scenario Sur le contrôleur Exécution $ tsung -f scenario.xml -l logs/ start Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 43 / 53
  44. 44. Les résultats Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 44 / 53
  45. 45. Fonctions avancées variables dynamiques gestion des cookies automatique analyse du résulat thinktime données aléatoires extension par modules erlang boucles et tests ... Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 45 / 53
  46. 46. 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 46 / 53
  47. 47. 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 47 / 53
  48. 48. 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 48 / 53
  49. 49. 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 49 / 53
  50. 50. 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 50 / 53
  51. 51. 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 51 / 53
  52. 52. 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 (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 52 / 53
  53. 53. Questions ? Rodolphe Quiédeville rodolphe@quiedeville.org http://blog.rodolphe.quiedeville.org/ Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 53 / 53

×