53
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

de 1 à 1 million avec Tsung

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: de 1 à 1 million avec Tsung

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

Page 2: de 1 à 1 million avec Tsung

Ma pomme

Administrateur système et réseaux tendance DevOpsNourri de logiciel libre depuis 15 ansSigne astrologeek debian ascendant emacsContributeur à Tsung

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 2 / 53

Page 3: de 1 à 1 million avec Tsung

Qu’est-ce qu’un test de performance ?chargerésistancevieillissementmontée en chargeconfigurationpics de charge

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 3 / 53

Page 4: de 1 à 1 million avec Tsung

Qu’est-ce qu’un test de performance ?chargerésistancevieillissementmontée en chargeconfigurationpics de charge

Simulation au plus près du réel des conditions d’exploitation d’unsystème.

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 4 / 53

Page 5: de 1 à 1 million avec Tsung

Ce n’est pas!= test unitaire

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 5 / 53

Page 6: de 1 à 1 million avec Tsung

Ce n’est pas!= test unitaire!= test fonctionnel

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 6 / 53

Page 7: de 1 à 1 million avec Tsung

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

Page 8: de 1 à 1 million avec Tsung

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 ; aurisque de pertes de temps et de pertinence dans l’analyse desrésultats.

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 8 / 53

Page 9: de 1 à 1 million avec Tsung

A quoi cela sert-il ?

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 9 / 53

Page 10: de 1 à 1 million avec Tsung

A éviter cela

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 10 / 53

Page 11: de 1 à 1 million avec Tsung

La situationclient mécontent

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 11 / 53

Page 12: de 1 à 1 million avec Tsung

La situationclient mécontentboss pas content

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 12 / 53

Page 13: de 1 à 1 million avec Tsung

La situationclient mécontentboss pas contentchef de projet serre les dents

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 13 / 53

Page 14: de 1 à 1 million avec Tsung

La situationclient mécontentboss pas contentchef de projet serre les dentssoirée de foutue

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 14 / 53

Page 15: de 1 à 1 million avec Tsung

Mais pourquoi ?

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 15 / 53

Page 16: de 1 à 1 million avec Tsung

Quelle peut être la cause ?

Inputssur consommation de CPUsaturation de mémoiresaturation des iolock sur la base de donnéessaturation lien réseaufilesystem plein...

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 16 / 53

Page 17: de 1 à 1 million avec Tsung

Le site préféré des développeurs ?

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 17 / 53

Page 18: de 1 à 1 million avec Tsung

chez-moi-ca-marche.com

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 18 / 53

Page 19: de 1 à 1 million avec Tsung

Cas d’écoleplusieurs dizaines de photos sur la home

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 19 / 53

Page 20: de 1 à 1 million avec Tsung

Cas d’écoleplusieurs dizaines de photos sur la homeimages servies par un cgi

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 20 / 53

Page 21: de 1 à 1 million avec Tsung

Cas d’écoleplusieurs dizaines de photos sur la homeimages servies par un cgisources des images non maitrisées

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 21 / 53

Page 22: de 1 à 1 million avec Tsung

Cas d’écoleplusieurs dizaines de photos sur la homeimages servies par un cgisources des images non maitriséespas de limites sur la taille des images

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 22 / 53

Page 23: de 1 à 1 million avec Tsung

Cas d’écoleplusieurs dizaines de photos sur la homeimages servies par un cgisources des images non maitriséespas de limites sur la taille des imagesresize des images à la volée

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 23 / 53

Page 24: de 1 à 1 million avec Tsung

Cas d’écoleplusieurs dizaines de photos sur la homeimages servies par un cgisources des images non maitriséespas de limites sur la taille des imagesresize des images à la voléepas de stockage de l’image retaillée

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 24 / 53

Page 25: de 1 à 1 million avec Tsung

chez-moi-ca-marche.com

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 25 / 53

Page 26: de 1 à 1 million avec Tsung

mais pas en prod !

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 26 / 53

Page 27: de 1 à 1 million avec Tsung

So 90’s, now is web 2.0 !

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 27 / 53

Page 28: de 1 à 1 million avec Tsung

Cas d’école, le retourSituation : problème de performance sur l’affichage de la homepageen production

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 28 / 53

Page 29: de 1 à 1 million avec Tsung

Cas d’école, le retoursituation : problème de performance sur l’affichage de la homepage enproduction

lecture de logs# grep -c "GET / " access.log

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 29 / 53

Page 30: de 1 à 1 million avec Tsung

Cas d’école, le retoursituation : problème de performance sur l’affichage de la homepage enproduction

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

Page 31: de 1 à 1 million avec Tsung

Cas d’école, le retoursituation : problème de performance sur l’affichage de la homepage enproduction

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

Page 32: de 1 à 1 million avec Tsung

Cas d’école, le retoursituation : problème de performance sur l’affichage de la homepage enproduction

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

Page 33: de 1 à 1 million avec Tsung

Chargeons Tsung de nous aider

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 33 / 53

Page 34: de 1 à 1 million avec Tsung

Principe de fonctionnement

un contrôleur0 à N injecteursune cibleun scenariodes logsdes rapports de résultats

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 34 / 53

Page 35: de 1 à 1 million avec Tsung

Action !

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 35 / 53

Page 36: de 1 à 1 million avec Tsung

Installation

apt-get install tsungyum install tsung...git clone && ./configure && make installmake deb rpm

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 36 / 53

Page 37: de 1 à 1 million avec Tsung

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

Page 38: de 1 à 1 million avec Tsung

Scenario

La cible

ExampleSimple<servers>

<server host="www.target.fr" port="8080" type="tcp" /></servers>

ExampleComplexe<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

Page 39: de 1 à 1 million avec Tsung

Scenario

Les injecteurs

ExampleSimple<clients>

<client host="foo" weight="1" /></clients>

ExampleComplexe<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

Page 40: de 1 à 1 million avec Tsung

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

Page 41: de 1 à 1 million avec Tsung

Scenario

Création du scenario

En mode proxy$ tsung-recorder startStarting 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

Page 42: de 1 à 1 million avec Tsung

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

Page 43: de 1 à 1 million avec Tsung

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

Page 44: de 1 à 1 million avec Tsung

Les résultats

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 44 / 53

Page 45: de 1 à 1 million avec Tsung

Fonctions avancées

variables dynamiquesgestion des cookies automatiqueanalyse du résulatthinktimedonnées aléatoiresextension par modules erlangboucles et tests...

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 45 / 53

Page 46: de 1 à 1 million avec Tsung

match

L’élément match permet de déclencher une action suivant le contenudu 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

Page 47: de 1 à 1 million avec Tsung

dyn_variable

Les variables dynamiques sont initialisées par lecture du résultat d’uneaction 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

Page 48: de 1 à 1 million avec Tsung

dyn_variable

Les variables dynamiques sont initialisées par lecture du résultat d’uneaction 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

Page 49: de 1 à 1 million avec Tsung

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

Page 50: de 1 à 1 million avec Tsung

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

Page 51: de 1 à 1 million avec Tsung

Quelques conseils

commencez au plus tôt la rédaction des scénarioscréez vos données de test avec l’outil de testarchitecture de pre-prod au plus près de la prodle dernier test pour la route en prod

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 51 / 53

Page 52: de 1 à 1 million avec Tsung

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 #tsungML, https://lists.process-one.net/mailman/listinfo/tsung-users

Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 52 / 53

Page 53: de 1 à 1 million avec Tsung

Questions ?

Rodolphe Quiédeville

[email protected]://blog.rodolphe.quiedeville.org/

Document publié sous Licence Creative Commons BY-SA 2.0Rodolphe Quiédeville (Freelance) de 1 à 1 million avec Tsung 22 octobre 2013 53 / 53