Diagnostic performances

126
Diagnostic performance Claude Falguière JUG Toulouse le 7 décembre 2011 JUG Bordeaux le 8 décembre 2011 1

description

Présentation aux JUGs de Toulouse et Bordeaux en décembre 2011

Transcript of Diagnostic performances

Page 1: Diagnostic performances

Diagnostic performance

Claude Falguière

JUG Toulouse le 7 décembre 2011

JUG Bordeaux le 8 décembre 2011

1

Page 2: Diagnostic performances

Copyright notice

2

Vous êtes libre de :Reproduire, distribuer et communiquer cette création au publicModifier 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/

Page 3: Diagnostic performances

Claude Falguière

@cfalguiere

3

Architecte Technique

Co-fondatrice

Crew member

Page 4: Diagnostic performances

4

Page 5: Diagnostic performances

5

Faux ami 1La dream Team

X est performantY est performant Z est performant

=> Mon système est performant

Page 6: Diagnostic performances

Sprint ou marathon ?

6

Page 7: Diagnostic performances

Vitesse ou charge ?

Modèle Simlocker

Bus RATP

7

Modèle Fiat 500

Page 8: Diagnostic performances

8

Faux ami 2

C’est du bon sens !

Page 9: Diagnostic performances

9

User expe!ence

Page 10: Diagnostic performances

Subjectif Complexité supposéeOrdre d'affichageStabilité

10

Page 11: Diagnostic performances

Contre-intuitif

Nombreux composantsInteractions complexes

Caches

Mécanismes correctifs

11

Logique

mais souvent

Page 12: Diagnostic performances

12

Faux ami 3

Avec le cloud fini les problèmes

Page 13: Diagnostic performances

Essentiellement du scale outDʼautres problèmes liés à la mutualisation (latence I/O)Coût de la montée en charge

13

Page 14: Diagnostic performances

Jusque là

tout va bien

14

Page 15: Diagnostic performances

15

Une application ne rend le

service prévu aux utilisateurs que si elle est

déployée

Page 16: Diagnostic performances

OPS

DEV

16

Page 17: Diagnostic performances

17

Page 18: Diagnostic performances

Si vous avez un

marteau

tout ressemble à un

clou18

Page 19: Diagnostic performances

Donʼt shoot in the dark

19

Page 20: Diagnostic performances

travailler ensemble  ?

20

travailler ensemble  ?

Page 21: Diagnostic performances

21

Page 22: Diagnostic performances

22

Page 23: Diagnostic performances

23

http://parisdevops.fr/http://devops.fr

Des User GroupsLilleParisLyonQui sera le prochain ?

Page 24: Diagnostic performances

24

Partager

Page 25: Diagnostic performances

25

?Klon!

Zzzzzzzzzz

Page 26: Diagnostic performances

26

Dis, je comprend pas pourquoi ça

marche pas

Tu peux revéri!er toute la procédure

d’installation ?

Non

A la pêche aux infos

Page 27: Diagnostic performances

27

Explicitez vos hypothèses

et votre démarche

Page 28: Diagnostic performances

28

Crime

LaScène

de

Page 29: Diagnostic performances

29

Page 30: Diagnostic performances

30

Page 31: Diagnostic performances

31

Page 32: Diagnostic performances

32

Page 33: Diagnostic performances

33

Investigations

Page 34: Diagnostic performances

34

Que fait ce système ?

Fréquent

VitalRisqué

Page 35: Diagnostic performances

35

Comment ça marche ?

Page 36: Diagnostic performances

36

Page 37: Diagnostic performances

37

Page 38: Diagnostic performances

38

Page 39: Diagnostic performances

39

Page 40: Diagnostic performances

40

Page 41: Diagnostic performances

41

Ce que vous mesurez soit servir à- bâtir des hypothèses

- (in)valider des hypothèses

Page 42: Diagnostic performances

42

Patterns

Page 43: Diagnostic performances

43

FouleGroupeIsolé

Conflits Saturation

Comportement sous stress

Page 44: Diagnostic performances

44

Ressources limitées + Charge

Saturation

Attente

Capacité

Rejet

Page 45: Diagnostic performances

45

Accès partagé à la même ressource

Problème de cohabitation

Attente Mélange

Concurrence

Page 46: Diagnostic performances

46

EfficacitéRépétition

Volume

Attente d’éléments externes

Page 47: Diagnostic performances

47

Page 48: Diagnostic performances

48

Utilisateurs actifs CPU

MémoireBande passante réseau

Page 49: Diagnostic performances

49

Utilisateurs actifs CPU

MémoireBande passante réseau

11 mois plus tard ...

Page 50: Diagnostic performances

Memory bound : ressource non partageable→ erreur quand plus de ressources

Les limites physiques

50

CPU bound : ressource en time sharing→ partage excessif, lenteur

Network bound : ressource en time sharing→ idem + retry et écroulement

Page 51: Diagnostic performances

Les Limites configurables

Configuration mémoire de la JVM (-Xmx)Tailles limites de poolTailles limites de cachesNombre dʼinstances, de connexions ...

51

Page 52: Diagnostic performances

Dimensionner

les pools52

Page 53: Diagnostic performances

53

Taille du pool

Les tailles de pool

Page 54: Diagnostic performances

54

Taille du poolMémoire

Les tailles de pool

CPU

Réseau

Page 55: Diagnostic performances

55

File d’attente

Taille du pool

Les tailles de pool

Page 56: Diagnostic performances

56

théorie des files d’attente files d’attentes markoviennes (M/M/S)

Y’a Ka

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

Temps moyen de séjour dans le système (τ)Nombre moyen de clients dans le système (<N>) Probabilité d'attente (Pa)

sources Wikipedia

Page 57: Diagnostic performances

57

réseau de files d’attentes

Page 58: Diagnostic performances

58

Approche pragmatique

Estimation globale à partir de tests standardisés (SPEC http://www.spec.org/)

Calibrage par des tests en charge

Page 59: Diagnostic performances

59

Page 60: Diagnostic performances

60

attend

( )( )( )

Augmentation des tailles de pools tant que le nombre de runnable n’excède pas le nombre de CPU

(vmstat)

Waiting for I/O

Runnable (mais de

pas de CPU dispo)

Page 61: Diagnostic performances

61

attend

( )( )( )

Influence de la vitesse des utilisateurs

Influence des jeux

de données

Influence des scénarios joués

Page 62: Diagnostic performances

62

Tout ce qui rentre doit ressortir ... en moyenne

90

File d’attente = temporisation des pics

Page 63: Diagnostic performances

63

Cohérence plutôt que

Rock StarS

Page 64: Diagnostic performances

64

L’entonnoir

Page 65: Diagnostic performances

Dimensionner

la mémoire65

Page 66: Diagnostic performances

66

GC, GC

Règle usuelle : temps de GC < 5% uptime process

Memory profiler ou-verbose:gc + GCViewer

Page 67: Diagnostic performances

67

Les tailles Mémoire

-Xmx800m

4Go

Page 68: Diagnostic performances

68

Les tailles Mémoire

4Go

OutOfMemory : Not enough swap space left

1,2 Go

-Xmx800m

quota 1Go

Page 69: Diagnostic performances

69

ne pas prendre tous les messages au pied de la lettre

douter

Page 70: Diagnostic performances

ulimit, hyperviseurs, shaping réseau, les licences ...

Les Quotas

70

Mutualisation de ressources, Réserver des ressources au système, Priorisation de service,Facturation

Page 71: Diagnostic performances

71

Page 72: Diagnostic performances

72

Page 73: Diagnostic performances

73

1 CPU

Page 74: Diagnostic performances

74

( )( )

( )

( )( )

( )( )

( )

( )( )

( )( )

( )

( )( )

Tout le monde attend

La limite logicielle est préférable à l’écroulement

Taille du pool trop ambitieuse

Page 75: Diagnostic performances

75

Page 76: Diagnostic performances

76

Taille du pool

inefficace

Page 77: Diagnostic performances

77

Page 78: Diagnostic performances

78

Ressources limitées +

Ressources non rendues+

Charge

Saturation

Page 79: Diagnostic performances

MémoireConnexion non rendue au pool Thread bloqué

79

Page 80: Diagnostic performances

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

Les pseudos fuites

Page 81: Diagnostic performances

Récap

Capacité81

Page 82: Diagnostic performances

Les indicateurs se dégradent progressivement

82

Se produit avec le temps même à faible charge

Se produit sous charge

Souvent écroulement après un pic de charge

Pas de saturation de limites matérielles

Signes

Affecte l’ensemble des use cases

Page 83: Diagnostic performances

83

Prévention

Tests de vieillissement

Tests en charge

Capacity Planning

Page 84: Diagnostic performances

84

Page 85: Diagnostic performances

85

Ressource à partager

Verrou

Lock Transactionnel

(DB)

synchronized(Java)

Page 86: Diagnostic performances

86

Très long si

attente mutuelle(Deadlock / Livelock)

ou

famine sur le premier

Page 87: Diagnostic performances

87

Situations propices

variables de classes

variables d’application (compteurs applicatifs)

collections auto-synchronized (Vector, Hashtable)

Page 88: Diagnostic performances

Java→ Thread Dump + outil d'analyse

(MAT, JCA, HealthCenter, Samourai)

Evaluer les portées des synchronized

BD→ voir les outils de DBA

88

Page 89: Diagnostic performances

89

Page 90: Diagnostic performances

90

Page 91: Diagnostic performances

91

Page 92: Diagnostic performances

92

Ressource à partager

Verrou

Corruption de données partagées Comportement

instable

Page 93: Diagnostic performances

Utilisation par plusieurs threads de variables de classe non multi-thread safe(formatters)

93

Page 94: Diagnostic performances

94

Situations propices- Optimisations sauvage des synchronized pour régler

des problèmes de performance

- Caches et compteurs applicatifs mal gérés- Formatters

Page 95: Diagnostic performances

95

Proposer des alternatives propres

Concurrent Collections

librairie «parallèles» type Gpars

Immutabilité

Thread Local, Volatile

Synchronized à portée réduite

Page 96: Diagnostic performances

Récap

Concurrence96

Page 97: Diagnostic performances

Affecte plus certains use case

97

A faible charge

Signes

- Incohérence- Instabilité

- Très faible consommation de ressources- Temps très longs (time-outs)

Page 98: Diagnostic performances

98

Prévention

Provoquer le conflit par un tests à 2 utilisateurs simultanés

1 des 2 est en erreur ... si vous avez de la chance

Très difficile à identifier

1 des 2 est deux fois plus long

Page 99: Diagnostic performances

99

Page 100: Diagnostic performances

Localisé sur un use case

100

Long même en unitaire

Signes

Variations pour un même use case Volume

Préciser le scénario - donnée en cause- volumes / répétition- scénario alternatif

Page 101: Diagnostic performances

Dresser

le bilan

101

Page 102: Diagnostic performances

102

Temps de rendering

Temps de réponse serveur

Page 103: Diagnostic performances

103

Page 104: Diagnostic performances

104

Page 105: Diagnostic performances

105

Page 106: Diagnostic performances

106

Page 107: Diagnostic performances

107

Page 108: Diagnostic performances

108

Plusieurs sources

Latences

Page 109: Diagnostic performances

109

Faire

Les Parler

Chiffres

Page 110: Diagnostic performances

Série Chronologique

Et sa distribution

110

Page 111: Diagnostic performances

Quelques mauvais temps isolés

Temps très variables

Bimodale !? ...

111

Page 112: Diagnostic performances

Que dis cette bimodale ?

112

Page 113: Diagnostic performances

Comportement différent selon les instances

Plusieurs cas sous le même use case mesuré

Lock

Cache

Que dis cette bimodale ?

113

Page 114: Diagnostic performances

114

Page 115: Diagnostic performances

115

- 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

Appels externes

Page 116: Diagnostic performances

116

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

Page 117: Diagnostic performances

117

Complexité algorithmique http://fr.wikipedia.org/wiki/Th%C3%A9orie_de_la_complexit%C3%A9_des_algorithmes

Page 118: Diagnostic performances

118

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)

Page 119: Diagnostic performances

119

VolumeFractionnement

Facteurs de blocage- Ecritures fichiers bufferisées- JDBC Fetch size

Redimensionnement de structures de données non mutables

Page 120: Diagnostic performances

Conclusion .

120

Page 121: Diagnostic performances

121

Priorités

Fonctions Robustesse

StabilitéRapidité

Page 122: Diagnostic performances

122

Page 123: Diagnostic performances

123

Anticiper ≠ planifier

Page 124: Diagnostic performances

124

http://javaperformancetuning.com/

http://highscalability.com/

http://velocityconf.com/velocity20xx

Quelques ressources

Page 125: Diagnostic performances

125

Questions ?

@cfalguiere

Merci pour votre attention

Page 126: Diagnostic performances

126