claude.falguiere
5,294 views
79 slides
Dec 27, 2010
Slide 1 of 79
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
About This Presentation
Présentation sur JMeter et les tests de performance d'applications Java EE pour le Lyon JUG le 21 décembre
Size: 3.05 MB
Language: fr
Added: Dec 27, 2010
Slides: 79 pages
Slide Content
Brooks ElliottBrooks Elliott
Mesurer la
performance des
applications avec
JMeter
Claude Falguière
Au 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ée
Ordre d'affichage
Stabilité
Performances et JMeter - Falguière 6
Paul Foot
Paul Foot
Martineric
Supporter l'effort
Tenir 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
ou
Vital
ou
RisquéRecherche complexe
PaieCharges
Consultations
MAJ
employé
Qui ? Quoi ?
Fréquent
ou
Vital
ou
Risqué
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éponse
et
Disponibilité, Stabilité
Robustesse
Vieillissement
Résistance à l'effet Twitter
Consommation 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 Jakarta
Script en XML et Script JVM
Extensible
Multiprotocole
Enregistrement des scénarios Web
Gestion du cache et des cookies
Des outils
Performances et JMeter - Falguière 16
Démo
Concepts 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
ListenersVisualisation des résultats
Action
Performances et JMeter - Falguière 19
Démo
Enregistrer un scénario
Et 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
Mesurer
Mesurer
Mesurer
Performances et JMeter - Falguière 22
Thread Group 1
Thread 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 Valider
Comprendre
Synthétiser
Restituer
Spécifier
Concevoir
Implémenter
Exécuter
4h
1000
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
F
r
e
q
u
e
n
c
y
2 3 4 5 6
0
5
1
0
1
5
2
0
> data <- rnorm(100,2)+2
Cumulative histogram of ts
Duration
F
r
e
q
u
e
n
c
y
2 3 4 5 6
0
2
0
4
0
6
0
8
0
1
0
0
La statistique est votre ami
Performances et JMeter - Falguière 29
Cumulative histogram of ts
Duration
F
r
e
q
u
e
n
c
y
2 3 4 5 6
0
2
0
4
0
6
0
8
0
1
0
0
> 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émo
Profil 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
D
u
r
a
t
i
o
n
0 20 40 60 80 100
2
3
4
5
6
Time
D
u
r
a
t
i
o
n
0 20 40 60 80 100
0
1
2
3
4
5
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 Valider
Comprendre
Synthétiser
Restituer
Spécifier
Concevoir
Implémenter
Exé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émo
Complé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 variables
Gé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ées
Warmup / 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 processus
Comprendre les résultats
Partager les solutions
Client
Dev
Ops
Etablir 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 Eclipse
Je ne me précipiterai pas sur mon Eclipse
Je ne me précipiterai pas sur mon Eclipse
Je ne me précipiterai pas sur mon Eclipse
Je ne me précipiterai pas sur mon Eclipse
Je ne me précipiterai pas sur mon Eclipse
Je ne me précipiterai pas sur mon Eclipse
Performances et JMeter - Falguière 52
Vous êtes iciVous êtes ici
La cibleLa cible
L'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
Latence
Navigateur 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
FireBug
Chrome Developer Tools
YSlow
Google Page Speed
AOL Page Test
Charles,
Fiddler
HTTP
Proxy
Analyse
Add-ons
Performances et JMeter - Falguière 58
Démo
Charles et YSlow
Performances et JMeter - Falguière 59
Temps par tier
Temps par couche
HTTP
Phases JSF
Domaine
JDBC
Combien ? Où ?
Performances et JMeter - Falguière 60
Exemple
HTTP 18s
JSF RESTORE_VIEW 0s
JSF APPLY_REQUEST_VALUES 0s
JSF PROCESS_VALIDATIONS 0s
JSF UPDATE_MODEL_VALUES 0s
JSF INVOKE_APPLICATION 17s
JSF RENDER_RESPONSE 0s
AOP 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 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 mn
Time out en s ou mn
Service distant 200 ms
Requête SQL 50 ms
Réseau local 20 ms
GC en ms
Accè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 %CPU
Swap In ou Mémoire disponible
Usage disque
Perfmon, sysinternals
vmstat, iostat,
Sysstat (sar)
TraceRoute, netstat,
tcpdump, wireshark
Temps
Nombre de connexions
Taux 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émo
Tomcat et le Monitor
Performances et JMeter - Falguière 71
La mémoire virtuelle
Via JMX
GC Overhead ou
Temps passé en GC / Uptime process
Via le système
% CPU
Swap 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 Dump
Heap Dump
+ MAT, JCA,
Health Center
Performances et JMeter - Falguière 73
Profilage
IndividuTemps étalon et répartition
Nombre de requêtes
Taille des pages
Nombre de lignes de réponse
Ressources consomméesLogs
Profilers
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 vie
S'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 77
Joachim S. Müller (retouchée)
Test sur étalon
Test des contentions
Test de robustesse
Test 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