79
Brooks Elliott Brooks Elliott Mesurer la performance des applications avec JMeter Claude Falguière Au Lyon JUG le 21 Décembre 2010

Mesurer les performances avec JMeter

Embed Size (px)

DESCRIPTION

Présentation sur JMeter et les tests de performance d'applications Java EE pour le Lyon JUG le 21 décembre

Citation preview

Page 1: Mesurer les performances avec JMeter

Brooks ElliottBrooks Elliott

Mesurer la performance des applications avec

JMeter

Claude FalguièreAu Lyon JUG le 21 Décembre 2010

Page 2: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 2

Copyright notice

● Vous êtes libre de :● Reproduire, distribuer et communiquer cette création au public● Modifier cette création

● Selon les conditions suivantes :● Paternité. Vous devez citer le nom de l'auteur original de la

manière indiquée par l'auteur de l'oeuvre ou le titulaire des droits qui vous confère cette autorisation (mais pas d'une manière qui suggérerait qu'ils vous soutiennent ou approuvent votre utilisation de l'oeuvre).

● Rien dans ce contrat ne diminue ou ne restreint le droit moral de l'auteur ou des auteurs.

http://creativecommons.org/licenses/by/3.0/

Page 3: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 3

Claude Falguière

Consultante

Co-fondatrice Membre de l'équipe

@cfalguiere

Page 4: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 4

User experience

Page 5: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 5

0,5 s 1 s 10 s

Subjectif

Complexité supposéeOrdre d'affichageStabilité

Page 6: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 6

Paul Foot

Paul Foot

Martineric

Supporter l'effortTenir la durée

Un marathon

ça se prépare !

Page 7: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 7

S(t)imulation

Page 8: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 8

Quels sont les risques à vérifier ? les critères à mesurer ?

Quels sont volumétries ? Les dimensionnements ?

Quels vont faire les utilisateurs en production ?

Le test de performance

Page 9: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 9

Qui ? Quoi ?Où ? Quand ? Combien ? Comment ? Pourquoi ?

Quoi ? Combien?

La Représentativité des tests

Page 10: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 10

Fréquent

ouVital

ouRisquéRecherche complexe

PaieCharges

ConsultationsMAJ employé

Qui ? Quoi ?

Fréquent

ouVital

ouRisqué

Page 11: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 11

Combien ? Quand ? Ou ?

Quelle heure ?

Quel jour ?

Pics

Page 12: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 12

Pourquoi ?

Les enjeux Les coûts

Page 13: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 13

Temps de réponseetDisponibilité, StabilitéRobustesse VieillissementRésistance à l'effet TwitterConsommation de ressources

Les Critères de succès

GALERIEopWEG

Page 14: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 14

JMeter

Page 15: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 15

http://jakarta.apache.org/jmeter/

Projet Apache JakartaScript en XML et Script JVMExtensibleMultiprotocoleEnregistrement des scénarios WebGestion du cache et des cookies

Des outils

Page 16: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 16

DémoConcepts de base

Page 17: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 17

Test Plan

Workbench

Thread Group

Eléments exécutés lorsque l'on lance le plan de test

Nombre d'utilisateurs et d'itérations

Eléments Temporaires

L'IHM

Sampler

Listeners Visualisation des résultatsAction

Page 18: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 18

Script

HTTP ProxyNavigateur

(1) Enregistrer

(3) Rejouer

(2) Variabiliser

Scripts HTTP

Page 19: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 19

DémoEnregistrer un scénarioEt variabiliser

Page 20: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 20

Les concepts

Logic Controller

Configuration

Sampler

Listeners

Emission des requêtes

Visualisation des résultats

Paramètres communs, variables, jeux de données

Bloc de contrôle

Page 21: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 21

MesurerMesurerMesurer

Page 22: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 22

Thread Group 1Thread Group 2

Ramp Up

Plateau Ramp Down

Profil de charge

Page 23: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 23

Combien d 'utilisateurs ? Combien de temps ?Quel profil de charge ?

Quels scénarios?

Que veut on évaluer ?Quels sont les enjeux ?

Environnement requis ?Jeux de données?

Avoir une stratégie de test

Page 24: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 24

Durée du test

Répéter → Aléas de mesure → Variabilité des données

Isoler le rampup → initialisations

Durer → Chargement des caches → Détecter les fuites

Page 25: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 25

Des milliers de relevés

Quelques chiffres

Des exigences

Analyser et ValiderComprendre SynthétiserRestituer

SpécifierConcevoir

ImplémenterExécuter

4h1000

1 action /10 s

1 440 000 relevés

agréger

Page 26: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 26

Moyenne 1,2s

La moyenne n'est pas un bon indicateur

0,5 s 1 s

Page 27: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 27

Moyenne 1,2s 90%

sont < 3,5s

10%

La moyenne n'est pas un bon indicateur

0,5 s 1 s Rare

Inconscient Marquant

Page 28: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 28

Histogram of ts

Duration

Fre

qu

en

cy

2 3 4 5 6

05

10

15

20

> data <- rnorm(100,2)+2

Cumulative histogram of ts

Duration

Fre

qu

en

cy

2 3 4 5 60

20

40

60

80

10

0

La statistique est votre ami

Page 29: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 29

Cumulative histogram of ts

Duration

Fre

qu

en

cy

2 3 4 5 6

02

04

06

08

01

00

> summary(data) Min. 1st Qu. Median Mean 3rd Qu. Max. 1.779 3.203 3.834 3.840 4.483 5.966

> quantile(data,0.95) 95% 5.408672

Quantile 90%

SLA

Les quantiles et les SLA

Page 30: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 30

DémoProfil et résultat

Page 31: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 31

Quelques mauvais temps isolés

Temps très variables

Bimodal

Faire parler la distribution

Page 32: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 32

Les biais de perception

Time

Dur

atio

n

0 20 40 60 80 100

23

45

6

Time

Dur

atio

n

0 20 40 60 80 100

01

23

45

6

OK

KO

K0

OK

Page 33: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 33

Tiens au fait le critère ...

REQ-1234 La page d'accueil doit s'afficher en moins de 600 ms

Est ce qu'on parle bien de la même chose ?

Page 34: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 34

Douter

Page 35: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 35

Le résultat du test dépend totalement des scénarios définis

et de leur implémentation

Martineric

Biais

Garbage In → Garbage Out

Page 36: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 36

Des milliers de relevés

Quelques chiffres

Des exigences

Analyser et ValiderComprendre Synthétiser

Restituer

SpécifierConcevoir

ImplémenterExécuter

Page 37: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 37

Groupe 1 Groupe 2

Trouvez des biais qui rendront le résultat meilleur

Trouvez des biais qui rendront le résultat plus mauvais

Page 38: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 38

Volumétries

Volumes trop faibles Volumes trop importants

Oublier les temps d'attentes

Requêtes moins coûteuses Requête plus coûteuses

Trop de requêtes

Avoir les bonnes volumétries

Monter trop vite en charge

Pas encore les ressources

Simplifier la navigation

Moins de requêtes

It ration tr s courtes é è

Trop de sessions

Page 39: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 39

Jeux de données et cache

Mots cl s exactsé

Toujours les m mes mots cl sê é

Mots cl s g n riques (*)é é é

Trop de mots cl s diff rentsé é

1 seul résultat

Toujours trouvé dans le cache

Trop de résultats

Lessive le cache

Avoir la bonne structure de

données

R utiliser les m mes valeursé ê

Contention

Tests trop court avec cache

Cache vide

Page 40: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 40

Gestion des erreurs

Ignorer les erreurs

Test tr s courtè

Ignorer les limites externes

Faux positifs

Pas le temps de voir les fuites

Faux négatifs

En bref, c'est pas facile !

Page 41: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 41

DémoCompléter le scénario

Page 42: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 42

Les concepts

Logic Controller

Configuration

Pre-Processor

Timers

Sampler

Post Processor

Assertions

Listeners

Préparation de données

Temps d'attente

Extraire des données du résultat

Vérifier le résultat

Jeux de données

Action

Visualisation

Page 43: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 43

Désactiver les listeners coûteux → laisser seulement les agrégats

Ou option –non-gui et paramétrage par variablesGénère un fichier XML .jtl ou CSV

JMeter dans la vrai vie

Page 44: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 44

Gérer la mémoire de JMeter et multi-instance si problème de charge Vérifier la cible, les scripts, les donnéesWarmup / Tir étalon / Tir en Charge

JMeter dans la vrai vie

Page 45: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 45

Valider le résultat ?Retester ? Confirmer les résultats Analyser et tester les hypothèses Isoler les facteurs Augmenter les niveaux de trace

JMeter dans la vrai vie

Page 46: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 46

Partager

Page 47: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 47

Partager le processusComprendre les résultatsPartager les solutions ClientDev

OpsEtablir La confiance

dans le résultat

Page 48: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 48

devops

Google User Groups - Devopsfr- Paris Devops- Lille Devops

Agile jusqu'à la production

Réconcilier Developpement et Opérations

Continuous Deploiement

Page 49: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 49

Measure, Don't guess

Page 50: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 50

Si vous avez un marteau

tout ressemble à un clou

Sic

Il faut faire des procédures stockées, Hibernate c'est pourri

Changez d'OS, Windows ça plante

tout le temps

Il faut remplacer Struts par Spring

Page 51: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 51

Don't shoot in the dark !

Je ne me précipiterai pas sur mon EclipseJe ne me précipiterai pas sur mon EclipseJe ne me précipiterai pas sur mon EclipseJe ne me précipiterai pas sur mon EclipseJe ne me précipiterai pas sur mon EclipseJe ne me précipiterai pas sur mon EclipseJe ne me précipiterai pas sur mon Eclipse

Page 52: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 52

Vous êtes iciVous êtes iciLa cibleLa cibleL'environnement de devL'environnement de dev

Page 53: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 53

Comportement sous stress

Concurrence Ressources limitées

SaturationProblèmes de cohabitation

Individu Groupe Foule

Répétition

Page 54: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 54

Combien ? Où ?

Round Trip

Page 55: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 55

LatenceNavigateur Serveur

GET /

ACK

Dernier octet

Premier octet

Requête

Réponse

Latence

Page 56: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 56

Navigateur

Combien ? Où ?

Temps d'affichage

Page 57: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 57

Profilage In Browser

FireBugChrome Developer Tools

YSlow Google Page Speed AOL Page Test

Charles, Fiddler

HTTP Proxy

Analyse

Add-ons

Page 58: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 58

DémoCharles et YSlow

Page 59: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 59

Temps par tier

Temps par coucheHTTP Phases JSF Domaine JDBC

Combien ? Où ?

Page 60: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 60

Exemple

HTTP 18sJSF RESTORE_VIEW 0sJSF APPLY_REQUEST_VALUES 0sJSF PROCESS_VALIDATIONS 0sJSF UPDATE_MODEL_VALUES 0sJSF INVOKE_APPLICATION 17sJSF RENDER_RESPONSE 0sAOP myapp.persistence 16s

P6Spy 500 requêtes durant la même période

Logger AOP sur myapplication.persistence.*myapp.persistence.contrat.Contrat.save() 8s

Exploitation

du log

Page 61: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 61

Introspection J2EE

- Logs Hibernate- Access Log

- listener HTTP- listener phases JSF

- AOP - Perf4J

- P6SPy- Log4JDBC …

- InfraRed- PerformaSure

Par logsDrivers JDBC virtuels

Profilers Java EE

Page 62: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 62

Améliorer

Page 63: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 63

Pourquoi ?

David Reece

Où est passé le temps de réponse ?

Quels sont les composants impliqués ?

Quelles sont les informations que je veux obtenir ?

Page 64: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 64

Comportement sous stress

Concurrence Ressources limitées

SaturationProblèmes de cohabitation

Individu Groupe Foule

Répétition

Page 65: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 65

Optimisez vôtre temps

Lock/Attente en mnTime out en s ou mn

Service distant 200 msRequête SQL 50 msRéseau local 20 ms

GC en msAccès disque en ms

Exécution de code en ns

Page 66: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 66

Tailles de boîtes

Ressources limitées

Saturation

Foule

Fuite

Attente Time-out

Page 67: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 67

Les limites physiques

Charge (queue length) ou %CPUSwap In ou Mémoire disponibleUsage disque Perfmon, sysinternals

vmstat, iostat,Sysstat (sar)

TraceRoute, netstat, tcpdump, wireshark

TempsNombre de connexionsTaux d'erreur

Page 68: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 68

Tailles de pools

Pool de connexions

JDBC

Pool de threads du

Web container

Workers Fuites

Taux Active / Total

Page 69: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 69

Monitoring

Apache : module server-status

Java EE : JMX MBeans du serveur d'applications MBeans custom

Les monitor Jmeter Tomcat Custom

Page 70: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 70

DémoTomcat et le Monitor

Page 71: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 71

La mémoire virtuelleVia JMXGC Overhead ouTemps passé en GC / Uptime process

Via le système % CPUSwap In

Via le log-verbose:gc + GCViewer

Page 72: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 72

Concurrence

Concurrence

Problèmes de multithreading

Groupe

Comportement instable

Verrous (Transactionnel, Synchronized)

Attentes

Thread DumpHeap Dump

+ MAT, JCA,

Health Center

Page 73: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 73

Profilage

Individu Temps étalon et répartition

Nombre de requêtesTaille des pagesNombre de lignes de réponse

Ressources consomméesLogsProfilers

Mbeans JMX

Page 74: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 74

Atteindre la lune

Page 75: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 75

empreinte

Le test n'est qu'une simulation de la vrai vieS'entrainer

Détecter les défauts de montée en charge

Améliorer Définir la surveillance

Page 76: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 76

Fonctionnalités Maintenabilité Robustesse Scalabilité Performance unitaire

Définir ses priorités

Page 77: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 77Joachim S. Müller (retouchée)

Test sur étalonTest des contentionsTest de robustesseTest de scalabilité Test de vieillissement

Test qualifiant

Partir tôt

Ne pas rester bloqué sur la notion de représentativité

Page 78: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 78

Tu n'aurais pas oublié un truc ?

Page 79: Mesurer les performances avec JMeter

Performances et JMeter - Falguière 79

Merci pour votre attention

Des questions ?

@cfalguiere