Mesurer Les Performances Avec JMeter Cours Du Soir Valtech 25 Mars 2010
Diagnostic performances
1. Diagnostic performance
Claude Falguière
Geneva JUG
le 12 Octobre 2011
JUGL Lausanne
le 13 Octobre 2011
1
vendredi 14 octobre 2011
2. Copyright notice
http://creativecommons.org/licenses/by/3.0/
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.
2
vendredi 14 octobre 2011
3. Claude Falguière
@cfalguiere
Technique
3
vendredi 14 octobre 2011
23. Combien ? Quand ?
Quelle heure ?
Quel jour ?
Pics
23
vendredi 14 octobre 2011
24. Pourquoi ?
Les enjeux Les coûts
24
vendredi 14 octobre 2011
25. Pourquoi ?
Temps de réponse
et
Disponibilité, Stabilité GALERIEopWEG
Robustesse
Vieillissement
Résistance à l'effet Twitter
Consommation de ressources
25
vendredi 14 octobre 2011 G
26. STRATEGIE DE TEST
POURQUOI ?
Que veut on évaluer ?
Quels sont les enjeux ?
QUOI ? COMBIEN ?
Combien d 'utilisateurs ?
Combien de temps ?
Quel pro l de charge ?
COMMENT ?
Environnement requis ?
Jeux de données?
26
vendredi 14 octobre 2011
28. représentativité
Le résultat du test dépend
totalement
des scénarios définis
et de leur implémentation
19
28
vendredi 14 octobre 2011
29. représentativité
Le résultat du test dépend
totalement
des scénarios définis
et de leur implémentation
Garbage In → Garbage Out
19
28
vendredi 14 octobre 2011
71. Mesurer
Ce que vous mesurez doit servir
- à bâtir des hypothèses
- à confirmer des hypothèses
Est ce que le
réseau est
surutilisé ?
Est ce que je
passe du temps côté
client ou serveur ?
70
vendredi 14 octobre 2011
92. - Se produit sous charge
- Affecte tous les use cases
Confirmation Accroissement de l’usage sur
une longue période
Trouver les limites atteintes
- time outs
- ressources saturées
91
vendredi 14 octobre 2011
93. Les limites physiques
Memory bound :
ressource non partageable
→ erreur quand plus de ressources
CPU bound :
ressource en time sharing
→ partage excessif, lenteur
Network bound :
ressource en time sharing
→ idem + retry et écroulement
92
vendredi 14 octobre 2011
94. Les Quotas
ulimit, hyperviseurs, shaping réseau, les licences ...
Mutualisation de ressources,
Réserver des ressources au système,
Priorisation de service,
Facturation
93
vendredi 14 octobre 2011
95. Les Limites configurables
Configuration mémoire de la JVM (-Xmx)
Tailles limites de pool
Tailles limites de caches
Nombre dʼinstances, de connexions ...
94
vendredi 14 octobre 2011
98. - Se produit sous charge
- Affecte tous les use cases
- Souvent écroulement après un
pic de charge
Résolution
Trouver la bonne configuration
- utilisation optimale du CPU et pas plus
- vmstat (runnable)
97
vendredi 14 octobre 2011
100. - Se produit sous charge
- Affecte tous les use cases
Confirmation
Saturation de limites
configurées mais pas des
limites matérielles
Résolution Lever ces limites
99
vendredi 14 octobre 2011
101. dimensionnement
La limite logicielle est préférable à
l’écroulement
100
vendredi 14 octobre 2011
102. Comment dimensionner ?
Dimensionnement par tests de charge
- respecter le modèle de charge de l’utilisateur
Influence de la vitesse des utilisateurs
- attentes sur le serveur Web ou le container Web
Influence des jeux de données
- attentes de la base de données
101
vendredi 14 octobre 2011
109. dimensionnement
Tout ce qui rentre doit ressortir
… en moyenne
Le nombre d’actifs est défini
par la taille du pool
Les files d’attente régulent les
variations de débit
108
vendredi 14 octobre 2011
110. Cohérence
plutôt que
Rock StarS
109
vendredi 14 octobre 2011
114. - Se produit avec le temps
même à faible charge
- Affecte tous les use cases
- Les indicateurs se dégradent
progressivement
Résolution Trouver la fuite ...
- Tester les use case isolément, la fuite est
souvent liée à un scénario particulier
- Certains outils d’introspection détectent
les fuites de connexion sur les pools
113
vendredi 14 octobre 2011
115. Mémoire
Connexion non rendue au pool
Thread bloqué
114
vendredi 14 octobre 2011
116. Les pseudo fuites
... aka les caches
Evaluer l'utilité :
thrashing, jamais relus
Utiliser un vrai cache :
durée de rétention,
recyclage
Weak reference,
soft reference
115
vendredi 14 octobre 2011
120. - Très faible consommation de
ressources
- Temps très longs (time-outs)
- Affecte particulièrement certains
use cases et à faible charge
Confirmation
Trouver le lock
Provoquer le lock
- test à 2 utilisateurs synchronisés
→ 1 des 2 est deux fois plus long
119
vendredi 14 octobre 2011
121. Java
→ Thread Dump + outil d'analyse
(MAT, JCA, HealthCenter,
Samourai)
Evaluer les portées des synchronized
Attention aux variables communes
(données et compteurs applicatifs)
BD
→ voir les outils de DBA
120
vendredi 14 octobre 2011
122. La
chaise
musicale
121
vendredi 14 octobre 2011
124. Utilisation par plusieurs
threads de variables de
classe non multi-thread safe
(formatters)
123
vendredi 14 octobre 2011
125. - Erreurs d'incohérence
- Affecte plus certains use cases
- A faible charge
- Instabilité
Confirmation
Provoquer le problème
- test synchronisés
→ 1 des 2 est en erreur ... si vous
avez de la chance
124
vendredi 14 octobre 2011
126. Très difficile à identifier
Causes courantes :
- Optimisations sauvage des synchronized pour
régler des problèmes de performance
- Caches et compteurs applicatifs mal gérés
- Formatters
Solutions possibles :
→ Thread Local, synchronized, volatile
125
vendredi 14 octobre 2011
129. - localisé sur un use case
- variations dans un use case
Préciser le scénario
- donnée en cause
- volumes / répétition
- scénario alternatif
128
vendredi 14 octobre 2011
130. Que dis cette bimodale ?
129
vendredi 14 octobre 2011
131. Que dis cette bimodale ?
Comportement
différent selon les Plusieurs cas sous
instances le même use case
mesuré
Lock
Cache
130
vendredi 14 octobre 2011
132. Patience et
longueur de
temps ...
131
vendredi 14 octobre 2011
134. Le processus
Dresser le bilan
→ Comprendre où ça se passe à peu près
Mesurer ce qui permet
- de choisir un pattern
- de comprendre la cause
Eliminer des hypothèses
Ne pas choisir une vérité trop rapidement
Boucler
133
vendredi 14 octobre 2011