1. Mesurer la
performance des
applications avec
Brooks Elliott
JMeter
Claude Falguière
Au Lyon JUG le 21 Décembre 2010
2. Copyright notice
● Vous êtes libre de : http://creativecommons.org/licenses/by/3.0/
● 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.
Performances et JMeter - Falguière 2
3. Claude Falguière
@cfalguiere
Consultante
Co-fondatrice
Membre de l'équipe
Performances et JMeter - Falguière 3
8. Le test de performance
Quels vont faire
les utilisateurs en
Quels sont volumétries ?
production ?
Les dimensionnements ?
Quels sont les risques à vérifier ?
les critères à mesurer ?
Performances et JMeter - Falguière 8
9. La Représentativité des tests
Quoi ? Combien?
Qui ? Quoi ?
Où ? Quand ? Combien ?
Comment ? Pourquoi ?
Performances et JMeter - Falguière 9
10. Qui ? Quoi ?
Consultations
MAJ Fréquent
employé
ou
Vital
Charges Paie
ou
Recherche complexe Risqué
Performances et JMeter - Falguière 10
11. Combien ? Quand ? Ou ?
Quelle
heure ?
Quel
jour ?
Pics
Performances et JMeter - Falguière 11
12. Pourquoi ?
Les enjeux Les coûts
Performances et JMeter - Falguière 12
13. Les Critères de succès
Temps de réponse
et
Disponibilité, Stabilité
Robustesse
Vieillissement
Résistance à l'effet Twitter
GALERIEopWEG
Consommation de ressources
Performances et JMeter - Falguière 13
15. Des outils
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
Performances et JMeter - Falguière 15
17. L'IHM
Test Plan Eléments exécutés lorsque
l'on lance le plan de test
Thread Group
Nombre
d'utilisateurs et
d'itérations
Sampler
Action
Listeners Visualisation des résultats
Workbench
Eléments Temporaires
Performances et JMeter - Falguière 17
19. Démo
Enregistrer un scénario
Et variabiliser
Performances et JMeter - Falguière 19
20. Les concepts Paramètres
Configuration communs,
variables, jeux
de données
Bloc de
contrôle
Sampler
Emission des requêtes
Logic Controller
Listeners Visualisation des résultats
Performances et JMeter - Falguière 20
22. Profil de charge
Plateau
Ramp Ramp
Up Down
Thread Group 1
Thread Group 2
Performances et JMeter - Falguière 22
23. Avoir une stratégie de test
Que veut on évaluer ?
Quels sont les enjeux ?
Quels scénarios?
Combien d 'utilisateurs ?
Combien de temps ?
Quel profil de charge ?
Environnement requis ?
Jeux de données?
Performances et JMeter - Falguière 23
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 24
25. 1 action
Des exigences 4h /10 s
1000
Spécifier
Concevoir
Implémenter
Exécuter
Des milliers de relevés 1 440 000
Analyser et Valider relevés
Comprendre
agréger
Synthétiser
Restituer
Quelques chiffres
Performances et JMeter - Falguière 25
26. La moyenne n'est pas un bon indicateur
0,5 s 1s
Moyenne
1,2s
Performances et JMeter - Falguière 26
27. La moyenne n'est pas un bon indicateur
Inconscient
Marquant
0,5 s 1s Rare
Moyenne 10%
90%
1,2s sont
< 3,5s
Performances et JMeter - Falguière 27
28. La statistique est votre ami
> data <- rnorm(100,2)+2
Histogram of ts Cumulative histogram of ts
100
20
80
Frequency
Frequency
15
60
10
40
20
5
0
0
2 3 4 5 6 2 3 4 5 6
Duration Duration
Performances et JMeter - Falguière 28
29. Les quantiles et les SLA
> summary(data) > quantile(data,0.95)
Min. 1st Qu. Median Mean 3rd Qu. Max. 95%
1.779 3.203 3.834 3.840 4.483 5.966 5.408672
Cumulative histogram of ts
100
Quantile 90%
80
Frequency
60
40
20
0
SLA
2 3 4 5 6
Duration
Performances et JMeter - Falguière 29
30. Démo
Profil et résultat
Performances et JMeter - Falguière 30
31. Faire parler la distribution
Quelques mauvais
temps isolés
Temps très
variables
Bimodal
Performances et JMeter - Falguière 31
32. Les biais de perception
6
5
OK
Duration
4
KO
3
2
0 20 40 60 80 100
Time
6
5
4
K0
Duration
3
OK
2
1
0
0 20 40 60 80 100
Time
Performances et JMeter - Falguière 32
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 33
35. Garbage In → Garbage Out
Le résultat du test dépend
totalement des scénarios définis
et de leur implémentation
Biais
Martineric
Performances et JMeter - Falguière 35
36. Des exigences
Spécifier
Concevoir
Implémenter
Exécuter
Des milliers de relevés
Analyser et Valider
Comprendre
Synthétiser
Restituer
Quelques chiffres
Performances et JMeter - Falguière 36
37. Groupe 1 Groupe 2
Trouvez des biais Trouvez des biais
qui rendront le qui rendront le
résultat meilleur résultat plus mauvais
Performances et JMeter - Falguière 37
38. Volumétries
Volumes trop faibles Volumes trop importants
Requêtes moins coûteuses Requête plus coûteuses
Simplifier la navigation Oublier les temps d'attentes
Moins de requêtes Trop de requêtes
Monter trop vite en charge
Avoir les bonnes Pas encore les ressources
volumétries Itération très courtes
Trop de sessions
Performances et JMeter - Falguière 38
39. Jeux de données et cache
Mots clés exacts Mots clés génériques (*)
1 seul résultat Trop de résultats
Toujours les mêmes mots clés Trop de mots clés différents
Toujours trouvé dans le cache Lessive le cache
Réutiliser les mêmes valeurs
Avoir la bonne Contention
structure de Tests trop court avec cache
données Cache vide
Performances et JMeter - Falguière 39
40. Gestion des erreurs
Ignorer les erreurs Ignorer les limites externes
Faux positifs Faux négatifs
Test très court
Pas le temps de voir les fuites
En bref, c'est pas
facile !
Performances et JMeter - Falguière 40
42. Les concepts
Configuration Jeux de données
Pre-Processor Préparation de
données
Timers Temps d'attente
Logic Controller
Sampler Action
Post Processor Extraire des données
du résultat
Assertions Vérifier le résultat
Listeners Visualisation
Performances et JMeter - Falguière 42
43. JMeter dans la vrai vie
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
Performances et JMeter - Falguière 43
44. JMeter dans la vrai vie
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 / T étalon / T en Charge
ir ir
Performances et JMeter - Falguière 44
45. JMeter dans la vrai vie
Valider le résultat ?
Retester ?
Confirmer les résultats
Analyser et tester les hypothèses
Isoler les facteurs
Augmenter les niveaux de trace
Performances et JMeter - Falguière 45
46. Partager
Performances et JMeter - Falguière 46
47. Partager le processus
Comprendre les résultats
Dev Partager les solutions Client
Etablir La confiance
Ops dans le résultat
Performances et JMeter - Falguière 47
48. Agile jusqu'à la production
devops
Réconcilier
Developpement et
Opérations
Google User Groups
Continuous - Devopsfr
Deploiement - Paris Devops
- Lille Devops
Performances et JMeter - Falguière 48
50. Il faut faire des Si vous avez
procédures stockées, un marteau
Hibernate c'est pourri
tout ressemble
à un clou
Changez d'OS,
Windows ça plante
tout le temps
Il faut remplacer
Struts par Spring
Sic
Performances et JMeter - Falguière 50
51. Don't shoot in the dark !
J ne me précipiterai pas sur mon Eclipse
e
J ne me précipiterai pas sur mon Eclipse
e
J ne me précipiterai pas sur mon Eclipse
e
J ne me précipiterai pas sur mon Eclipse
e
J ne me précipiterai pas sur mon Eclipse
e
J ne me précipiterai pas sur mon Eclipse
e
J ne me précipiterai pas sur mon Eclipse
e
Performances et JMeter - Falguière 51
52. La cible
Vous êtes ici
L'environnement de dev
Performances et JMeter - Falguière 52
53. Comportement sous stress
Individu Groupe Foule
Ressources
Concurrence limitées
Répétition Problèmes de Saturation
cohabitation
Performances et JMeter - Falguière 53
54. Combien ? Où ?
Round Trip
Performances et JMeter - Falguière 54
55. Latence
Navigateur Serveur
GET /
Requête
ACK
Latence
Premier octet
Réponse
Dernier octet
Performances et JMeter - Falguière 55
56. Combien ? Où ?
Navigateur
Temps
d'affichage
Performances et JMeter - Falguière 56
57. Profilage In Browser
FireBug Add -o ns
Chrome Developer Tools
YSlow A nalyse
Google Page Speed
AOL Page Test
Charles, HTTP
Fiddler P roxy
Performances et JMeter - Falguière 57
59. Combien ? Où ?
Temps par tier
HTTP
Phases JSF Temps par couche
Domaine
JDBC
Performances et JMeter - Falguière 59
60. atio n
Exemple
Exploit
HTTP d u log 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
Logger AOP sur myapplication.persistence.*
myapp.persistence.contrat.Contrat.save() 8s
P6Spy
500 requêtes durant la même période
Performances et JMeter - Falguière 60
61. Introspection J2EE
D rivers JDBC
Par logs virtuels
- Logs Hibernate - P6SPy
- Access Log - Log4JDBC
…
- listener HTTP
- listener phases JSF Pro filers
Jav a EE
- AOP - InfraRed
- Perf4J - PerformaSure
Performances et JMeter - Falguière 61
62. Améliorer
Performances et JMeter - Falguière 62
63. Pourquoi ?
Où est passé le
temps de réponse ?
Quels sont les
composants
impliqués ?
Quelles sont les
informations que
je veux obtenir ? David Reece
Performances et JMeter - Falguière 63
64. Comportement sous stress
Individu Groupe Foule
Ressources
Concurrence limitées
Répétition Problèmes de Saturation
cohabitation
Performances et JMeter - Falguière 64
65. Lock/Attente en mn
Time out en s ou mn
Service distant 200 ms
Optimisez Requête SQL 50 ms
vôtre temps Réseau local 20 ms
GC en ms
Accès disque en ms
Exécution de code en ns
Performances et JMeter - Falguière 65
66. Tailles de boîtes
Foule
Ressources
limitées
Fuite
Saturation
Attente Time-out
Performances et JMeter - Falguière 66
67. Les limites physiques
Charge (queue length) ou %CPU
Swap In ou Mémoire disponible
Usage disque fmo n,
Per sysinternals
vmst at, iostat,
Temps Sysstat (sar)
Nombre de connexions
Taux d'erreur Tr aceRoute, netstat,
tcpdump, wireshark
Performances et JMeter - Falguière 67
68. Tailles de pools
Workers
Pool de
threads du
Fuites
Web Pool de
container connexions
JDBC
T ux Ac
a tive / T tal
o
Performances et JMeter - Falguière 68
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 69
70. Démo
Tomcat et le Monitor
Performances et JMeter - Falguière 70
71. La mémoire virtuelle
Via JMX
GC Overhead ou
Temps passé en GC / Uptime process
Via le log
-verbose:gc + GCViewer
Via le système
% CPU
Swap In
Performances et JMeter - Falguière 71
72. Concurrence
ad D ump
Groupe Th re
eap D ump
H
CA,
AT, J er
+ M
Health Ce nt
Concurrence
Verrous
(Transactionnel, Attentes
Synchronized)
Problèmes de Comportement
multithreading instable
Performances et JMeter - Falguière 72
73. Profilage
Individu Temps étalon et répartition
Nombre de requêtes
Taille des pages
Pro filers Nombre de lignes de réponse
Logs Ressources consommées
e a ns JMX
Mb
Performances et JMeter - Falguière 73
75. Le test n'est qu'une
S'entrainer simulation de la vrai vie
Détecter les défauts de
montée en charge
Améliorer
Définir la surveillance
empreinte
Performances et JMeter - Falguière 75
77. Ne pas rester bloqué sur la notion de
représentativité
Test sur étalon
Test des contentions
Test de robustesse Partir tôt
Test de scalabilité
Test de vieillissement
Test qualifiant Joachim S. Müller (retouchée)
Performances et JMeter - Falguière 77