Diagnostic performance
Claude Falguière
JUG Toulouse
le 7 décembre 2011
JUG Bordeaux
le 8 décembre 2011
1
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
11 mois plus tard ...
Utilisateurs actifs CPU
Bande passante réseau Mémoire
49
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
50
Les Limites configurables
Configuration mémoire de la JVM (-Xmx)
Tailles limites de pool
Tailles limites de caches
Nombre dʼinstances, de connexions ...
51
Y’a Ka sources Wikipedia
théorie des files d’attente
files d’attentes markoviennes (M/M/S)
loi de Little
■ λ = fréquence moyenne d'arrivées (loi de Poisson)
■ temps moyen de service
■ trafic offert (nombre moyen d'arrivées pendant le temps moyen de service)
■ S nombre de serveurs
Nombre moyen de clients dans le système (<N>) Probabilité d'attente (Pa) Temps moyen de séjour dans le système (τ)
56
Waiting for
I/O
Augmentation des
tailles de pools tant
que le nombre de ( )
runnable n’excède pas ( ) attend
le nombre de CPU ( )
Runnable
(vmstat) (mais de
pas de CPU
dispo)
60
Influence
Influence de ( )
des jeux
la vitesse des ( ) attend
de
utilisateurs ( )
données
Influence des
scénarios joués
61
Tout ce qui rentre doit
ressortir ... en moyenne
File d’attente =
temporisation des pics
90
62
Les tailles Mémoire
OutOfMemory : Not enough swap space left
4Go
quota
1Go
-Xmx800m
1,2 Go
68
douter
ne pas prendre tous les
messages au pied de la lettre
69
Les Quotas
Mutualisation de ressources,
Réserver des ressources au système,
Priorisation de service,
Facturation
ulimit,
hyperviseurs,
shaping réseau,
les licences ...
70
La limite logicielle est
préférable à l’écroulement
( )( )( )
( )( )( )
( )( )( )
( )( )( )
( )( )( )
Taille du Tout le
pool trop monde attend
ambitieuse
74
Les pseudos fuites
Evaluer l'utilité des caches :
thrashing,
jamais relus
Utiliser un vrai cache :
gestion de la durée de rétention,
recyclage,
utilisation de weak/soft reference
80
Signes
Les indicateurs se
dégradent
progressivement
Se produit
sous charge
Souvent écroulement
Affecte après un pic de charge
l’ensemble
Pas de saturation de
des use cases limites matérielles
Se produit avec le temps
même à faible charge
82
Prévention
Capacity Planning
Tests en charge
Tests de vieillissement
83
Situations propices
- Optimisations sauvage des synchronized pour régler
des problèmes de performance
- Caches et compteurs applicatifs mal gérés
- Formatters
94
Proposer des alternatives propres
Concurrent Collections
librairie «parallèles» type Gpars
Immutabilité
Thread Local, Volatile
Synchronized à portée réduite
95
Signes
- Très faible
consommation de
ressources
- Temps très longs
A faible
(time-outs)
charge
Affecte plus
certains use case
- Incohérence
- Instabilité
97
Prévention
Provoquer le conflit par un tests
à 2 utilisateurs simultanés
1 des 2 est deux fois plus long
1 des 2 est en erreur
... si vous avez de la chance
Très difficile à identifier
98
Signes
Préciser le scénario
Long même en unitaire - donnée en cause
- volumes / répétition
Localisé sur un use case
- scénario alternatif
Variations pour un
même use case Volume
100
Appels externes
- Limiter le temps d’attente et les
traiter les non-réponse en
erreur
- Logguer les temps anormaux aux
extrémités du système
- utiliser des appels asynchrones
115
Répétition
- log, requêtes JDBC dans des boucles
- requêtes involontaires (cascade, refresh)
- répétition induite par le volume de données
bon candidat pour la parallélisation
techniques de Map Reduce
- problèmes d’algorithme
116
Structures de données
- Informations additionnelles
(index, tri)
- Organisation de l’information pour
faciliter les parcours
- Structures spécialisées
(tables de hachage, arbres équilibrés)
118
Volume
Fractionnement
Facteurs de blocage
- Ecritures fichiers bufferisées
- JDBC Fetch size
Redimensionnement de
structures de données
non mutables
119