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
Top Related