Diagnostic performances

140
Diagnostic performance Claude Falguière Geneva JUG le 12 Octobre 2011 JUGL Lausanne le 13 Octobre 2011 1 vendredi 14 octobre 2011

description

 

Transcript of Diagnostic performances

Diagnostic performance

Claude Falguière

Geneva JUG le 12 Octobre 2011

JUGL Lausanne le 13 Octobre 2011

1

vendredi 14 octobre 2011

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/

vendredi 14 octobre 2011

Claude Falguière@cfalguiere

3

Technique

vendredi 14 octobre 2011

4

vendredi 14 octobre 2011

5

Faux ami 1La dream Team

X est performantY est performant Z est performant

=> Mon système est performant

vendredi 14 octobre 2011

Sprint ou marathon ?

6

vendredi 14 octobre 2011

Vitesse ou charge ?

Modèle Simlocker

Bus RATP

7

Modèle Fiat 500

vendredi 14 octobre 2011

8

Faux ami 2

C’est du bon sens !

vendredi 14 octobre 2011

9

User expe!ence

vendredi 14 octobre 2011

Subjectif Complexité supposéeOrdre d'affichageStabilité

10

vendredi 14 octobre 2011

Contre-intuitif

Nombreux composantsInteractions complexes

Caches

Mécanismes correctifs

11

Logique mais souvent

vendredi 14 octobre 2011

12

Faux ami 3

Avec le cloud fini les problèmes

vendredi 14 octobre 2011

Essentiellement du scale out

Dʼautres problèmes liés à la mutualisation (latence I/O)

Coût de la montée en charge

13

vendredi 14 octobre 2011

14

S(t)imuler

vendredi 14 octobre 2011

15

vendredi 14 octobre 2011

16

Quels vont faire les utilisateurs en production ?

vendredi 14 octobre 2011

17

Les volumétries ? Les dimensionnements ?

vendredi 14 octobre 2011

18

Les risques à vérifier ? Les critères à mesurer ?

vendredi 14 octobre 2011

19

Qui ? Quoi ?Où ? Quand ? Combien ? Comment ? Pourquoi ?

vendredi 14 octobre 2011

20

Qui ?

vendredi 14 octobre 2011

21

Recherche complexe

Consultations

Paie

Qui ? Quoi ?

vendredi 14 octobre 2011

22

Qui ? Quoi ?

vendredi 14 octobre 2011

23

Combien ? Quand ?

Quelle heure ?

Quel jour ?

Pics

vendredi 14 octobre 2011

24

Les enjeux Les coûts

Pourquoi ?

vendredi 14 octobre 2011

25

GALERIEopWEG

GALERIEopWEG

Pourquoi ?

Temps de réponse

etDisponibilité, StabilitéRobustesse VieillissementRésistance à l'effet TwitterConsommation de ressources

vendredi 14 octobre 2011

26

Que veut on évaluer ?Quels sont les enjeux ?

Environnement requis ?Jeux de données?

POURQUOI ?

Combien d 'utilisateurs ?Combien de temps ?Quel pro"l de charge ?

QUOI ? COMBIEN ?

COMMENT ?

STRATEGIE DE TEST

vendredi 14 octobre 2011

27

Représentativité

vendredi 14 octobre 2011

28

Le résultat du test dépend totalement

des scénarios définis et de leur implémentation

représentativité

19

vendredi 14 octobre 2011

28

Garbage In → Garbage Out

Le résultat du test dépend totalement

des scénarios définis et de leur implémentation

représentativité

19

vendredi 14 octobre 2011

29

Les biais

19

vendredi 14 octobre 2011

30

Les biais

19

Garbage OutGarbage In temps de réponse = 0,2s

vendredi 14 octobre 2011

31

Martineric

Les biais

Vrai vie Test en éprouvette

vendredi 14 octobre 2011

32

Martineric

Biais

Les biais

Nombre,Durée,

Comportement

vendredi 14 octobre 2011

33

Trouvez des biais qui rendront le résultat meilleur

Trouvez des biais qui rendront le résultat plus mauvais

Le Jeu

vendredi 14 octobre 2011

34

Volumétries

vendredi 14 octobre 2011

35

Structure des données

vendredi 14 octobre 2011

36

Gestion des erreurs

Bref ... pas facile

vendredi 14 octobre 2011

37

Cumulus

vendredi 14 octobre 2011

OPS

DEV

38

vendredi 14 octobre 2011

39

vendredi 14 octobre 2011

Si vous avez un

marteau

tout ressemble à un

clou

40

vendredi 14 octobre 2011

Donʼt shoot in the dark

41

vendredi 14 octobre 2011

travailler ensemble  ?

42

vendredi 14 octobre 2011

43

vendredi 14 octobre 2011

44

vendredi 14 octobre 2011

Et chez vous ?

45

vendredi 14 octobre 2011

46

Partager

vendredi 14 octobre 2011

47

Ne pas chercher au hasard

vendredi 14 octobre 2011

48

Ne pas chercher au hasard

La pêche aux infos ...

vendredi 14 octobre 2011

49

Explicitez vos hypothèses

et votre démarche

vendredi 14 octobre 2011

50

vendredi 14 octobre 2011

51

vendredi 14 octobre 2011

52

vendredi 14 octobre 2011

53

La Scène de Crime

vendredi 14 octobre 2011

54

vendredi 14 octobre 2011

55

vendredi 14 octobre 2011

56

vendredi 14 octobre 2011

57

vendredi 14 octobre 2011

58

vendredi 14 octobre 2011

59

Investigations

vendredi 14 octobre 2011

60

Que fait ce système ?

vendredi 14 octobre 2011

61

vendredi 14 octobre 2011

62

Comment ça marche ?

vendredi 14 octobre 2011

63

vendredi 14 octobre 2011

64

vendredi 14 octobre 2011

65

vendredi 14 octobre 2011

66

vendredi 14 octobre 2011

67

vendredi 14 octobre 2011

Jusque là

tout va bien

68

vendredi 14 octobre 2011

69

vendredi 14 octobre 2011

70

Mesurer

Ce que vous mesurez doit servir

- à bâtir des hypothèses

- à confirmer des hypothèses

Est ce que je passe du temps côté client ou serveur ?

Est ce que le réseau est surutilisé ?

vendredi 14 octobre 2011

Dresser le bilan

71

vendredi 14 octobre 2011

72

vendredi 14 octobre 2011

73

vendredi 14 octobre 2011

74

vendredi 14 octobre 2011

75

vendredi 14 octobre 2011

76

vendredi 14 octobre 2011

77

vendredi 14 octobre 2011

78

vendredi 14 octobre 2011

Gagnez du temps

79

vendredi 14 octobre 2011

Série Chronologique

Et sa distribution

80

vendredi 14 octobre 2011

Quelques mauvais temps isolés

Temps très variables

Bimodale !? ...

81

vendredi 14 octobre 2011

Douter

82

vendredi 14 octobre 2011

83

Latences

vendredi 14 octobre 2011

84

Toujours vérifier

MAN 150 Mb

vendredi 14 octobre 2011

85

Toujours vérifier

et prouver vos dires

?test JMeter sur place

débit < 2Mb

MAN 150 Mb

vendredi 14 octobre 2011

86

Toujours vérifier

2Mb

vendredi 14 octobre 2011

87

Patterns

vendredi 14 octobre 2011

88

vendredi 14 octobre 2011

La rançon du succès

89

vendredi 14 octobre 2011

90

vendredi 14 octobre 2011

- Se produit sous charge- Affecte tous les use cases

Accroissement de l’usage sur une longue période

Trouver les limites atteintes- time outs - ressources saturées

91

Confirmation

vendredi 14 octobre 2011

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

Les limites physiques

92

vendredi 14 octobre 2011

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

Les Quotas

93

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

vendredi 14 octobre 2011

Les Limites configurables

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

94

vendredi 14 octobre 2011

95

vendredi 14 octobre 2011

96

vendredi 14 octobre 2011

- Se produit sous charge- Affecte tous les use cases- Souvent écroulement après un pic de charge

Trouver la bonne configuration- utilisation optimale du CPU et pas plus- vmstat (runnable)

97

Résolution

vendredi 14 octobre 2011

98

Le régime restrictif

vendredi 14 octobre 2011

- Se produit sous charge- Affecte tous les use cases

Saturation de limites configurées mais pas des limites matérielles

99

Confirmation

Résolution Lever ces limites

vendredi 14 octobre 2011

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

100

dimensionnement

vendredi 14 octobre 2011

101

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

Comment dimensionner ?

vendredi 14 octobre 2011

102

vendredi 14 octobre 2011

103

vendredi 14 octobre 2011

104

vendredi 14 octobre 2011

105

vendredi 14 octobre 2011

106

vendredi 14 octobre 2011

107

vendredi 14 octobre 2011

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

dimensionnement

vendredi 14 octobre 2011

109

Cohérence plutôt que

Rock StarS

vendredi 14 octobre 2011

110

vendredi 14 octobre 2011

L'empruntà durée

indéterminée

111

vendredi 14 octobre 2011

112

vendredi 14 octobre 2011

- Se produit avec le temps même à faible charge- Affecte tous les use cases- Les indicateurs se dégradent progressivement

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

Résolution

vendredi 14 octobre 2011

MémoireConnexion non rendue au pool Thread bloqué

114

vendredi 14 octobre 2011

Les pseudo fuites ... aka les caches

Evaluer l'utilité : thrashing, jamais relus

Weak reference, soft reference

Utiliser un vrai cache : durée de rétention, recyclage

115

vendredi 14 octobre 2011

La voieunique

116

vendredi 14 octobre 2011

117

vendredi 14 octobre 2011

118

vendredi 14 octobre 2011

- Très faible consommation de ressources- Temps très longs (time-outs)- Affecte particulièrement certains use cases et à faible charge

Trouver le lockProvoquer le lock- test à 2 utilisateurs synchronisés → 1 des 2 est deux fois plus long

119

Confirmation

vendredi 14 octobre 2011

Java→ Thread Dump + outil d'analyse

(MAT, JCA, HealthCenter, Samourai)

Evaluer les portées des synchronizedAttention aux variables communes

(données et compteurs applicatifs)

BD→ voir les outils de DBA

120

vendredi 14 octobre 2011

La chaisemusicale

121

vendredi 14 octobre 2011

122

vendredi 14 octobre 2011

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

123

vendredi 14 octobre 2011

- Erreurs d'incohérence- Affecte plus certains use cases- A faible charge- Instabilité

Provoquer le problème - test synchronisés → 1 des 2 est en erreur ... si vous avez de la chance

124

Confirmation

vendredi 14 octobre 2011

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

Très difficile à identifier

125

vendredi 14 octobre 2011

126

vendredi 14 octobre 2011

127

vendredi 14 octobre 2011

- 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

Que dis cette bimodale ?

129

vendredi 14 octobre 2011

Comportement différent selon les instances

Plusieurs cas sous le même use case mesuré

Lock

Cache

Que dis cette bimodale ?

130

vendredi 14 octobre 2011

131

Patience et longueur de

temps ...

vendredi 14 octobre 2011

132

vendredi 14 octobre 2011

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èsesNe pas choisir une vérité trop rapidement

Boucler

Le processus

133

vendredi 14 octobre 2011

Conclusion .

134

vendredi 14 octobre 2011

135

Priorités

Fonctions Robustesse

StabilitéRapidité

vendredi 14 octobre 2011

136

Tester (s’entraîner)

vendredi 14 octobre 2011

137

Surveiller

Monitorerautodiagnosticjournaux,alertes

Anticiper≠ planifier

vendredi 14 octobre 2011

138

vendredi 14 octobre 2011

139

vendredi 14 octobre 2011