Mesurer les performances avec JMeter

Preview:

DESCRIPTION

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

Citation preview

Brooks ElliottBrooks Elliott

Mesurer la performance des applications avec

JMeter

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

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/

Performances et JMeter - Falguière 3

Claude Falguière

Consultante

Co-fondatrice Membre de l'équipe

@cfalguiere

Performances et JMeter - Falguière 4

User experience

Performances et JMeter - Falguière 5

0,5 s 1 s 10 s

Subjectif

Complexité supposéeOrdre d'affichageStabilité

Performances et JMeter - Falguière 6

Paul Foot

Paul Foot

Martineric

Supporter l'effortTenir la durée

Un marathon

ça se prépare !

Performances et JMeter - Falguière 7

S(t)imulation

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

Performances et JMeter - Falguière 9

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

Quoi ? Combien?

La Représentativité des tests

Performances et JMeter - Falguière 10

Fréquent

ouVital

ouRisquéRecherche complexe

PaieCharges

ConsultationsMAJ employé

Qui ? Quoi ?

Fréquent

ouVital

ouRisqué

Performances et JMeter - Falguière 11

Combien ? Quand ? Ou ?

Quelle heure ?

Quel jour ?

Pics

Performances et JMeter - Falguière 12

Pourquoi ?

Les enjeux Les coûts

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

Performances et JMeter - Falguière 14

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

Performances et JMeter - Falguière 16

DémoConcepts de base

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

Performances et JMeter - Falguière 18

Script

HTTP ProxyNavigateur

(1) Enregistrer

(3) Rejouer

(2) Variabiliser

Scripts HTTP

Performances et JMeter - Falguière 19

DémoEnregistrer un scénarioEt variabiliser

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

Performances et JMeter - Falguière 21

MesurerMesurerMesurer

Performances et JMeter - Falguière 22

Thread Group 1Thread Group 2

Ramp Up

Plateau Ramp Down

Profil de charge

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

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

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

Performances et JMeter - Falguière 26

Moyenne 1,2s

La moyenne n'est pas un bon indicateur

0,5 s 1 s

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

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

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

Performances et JMeter - Falguière 30

DémoProfil et résultat

Performances et JMeter - Falguière 31

Quelques mauvais temps isolés

Temps très variables

Bimodal

Faire parler la distribution

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

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 ?

Performances et JMeter - Falguière 34

Douter

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

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

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

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

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

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 !

Performances et JMeter - Falguière 41

DémoCompléter le scénario

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

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

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

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

Performances et JMeter - Falguière 46

Partager

Performances et JMeter - Falguière 47

Partager le processusComprendre les résultatsPartager les solutions ClientDev

OpsEtablir La confiance

dans le résultat

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

Performances et JMeter - Falguière 49

Measure, Don't guess

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

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

Performances et JMeter - Falguière 52

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

Performances et JMeter - Falguière 53

Comportement sous stress

Concurrence Ressources limitées

SaturationProblèmes de cohabitation

Individu Groupe Foule

Répétition

Performances et JMeter - Falguière 54

Combien ? Où ?

Round Trip

Performances et JMeter - Falguière 55

LatenceNavigateur Serveur

GET /

ACK

Dernier octet

Premier octet

Requête

Réponse

Latence

Performances et JMeter - Falguière 56

Navigateur

Combien ? Où ?

Temps d'affichage

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

Performances et JMeter - Falguière 58

DémoCharles et YSlow

Performances et JMeter - Falguière 59

Temps par tier

Temps par coucheHTTP Phases JSF Domaine JDBC

Combien ? Où ?

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

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

Performances et JMeter - Falguière 62

Améliorer

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 ?

Performances et JMeter - Falguière 64

Comportement sous stress

Concurrence Ressources limitées

SaturationProblèmes de cohabitation

Individu Groupe Foule

Répétition

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

Performances et JMeter - Falguière 66

Tailles de boîtes

Ressources limitées

Saturation

Foule

Fuite

Attente Time-out

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

Performances et JMeter - Falguière 68

Tailles de pools

Pool de connexions

JDBC

Pool de threads du

Web container

Workers Fuites

Taux Active / Total

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

Performances et JMeter - Falguière 70

DémoTomcat et le Monitor

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

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

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

Performances et JMeter - Falguière 74

Atteindre la lune

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

Performances et JMeter - Falguière 76

Fonctionnalités Maintenabilité Robustesse Scalabilité Performance unitaire

Définir ses priorités

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é

Performances et JMeter - Falguière 78

Tu n'aurais pas oublié un truc ?

Performances et JMeter - Falguière 79

Merci pour votre attention

Des questions ?

@cfalguiere

Recommended