SlideShare una empresa de Scribd logo
1 de 126
Descargar para leer sin conexión
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
Claude Falguière

Architecte Technique


                                Co-fondatrice




         @cfalguiere
                                Crew member


                       3
4
Faux ami 1
   La dream Team
     X est performant
     Y est performant
     Z est performant
             =>
Mon système est performant


             5
Sprint ou
    marathon ?




6
Vitesse ou               Bus RATP




charge ?




  Modèle Simlocker
                            Modèle Fiat 500




                     7
Faux ami 2

C’est du bon sens !



         8
User expe!ence




        9
Subjectif
            Complexité supposée
            Ordre d'affichage
            Stabilité

            10
Logique

mais souvent           Nombreux composants
                       Interactions complexes

Contre-intuitif        Caches

                       Mécanismes correctifs




                  11
Faux ami 3

Avec le cloud fini
  les problèmes


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

                            13
Jusque là

tout
va bien
     14
Une application
   ne rend le
 service prévu
aux utilisateurs
 que si elle est


 déployée

                   15
DEV


       OPS
  16
17
Si vous avez un
marteau
tout ressemble à un


clou
             18
Donʼt shoot in the dark




           19
travailler ensemble    ?


          20
21
22
http://parisdevops.fr/
http://devops.fr



Des User Groups
          Lille
          Paris
          Lyon
          Qui sera le prochain ?




          23
Partager

   24
?
             n !
       Klo


Zzzz
    zzzzz
         z
             25
A la pêche aux infos
Dis, je comprend
pas pourquoi ça
  marche pas
   Tu peux revéri er
  toute la procédure
    d’installation ?




                            Non
                       26
Explicitez vos
    hypothèses
et votre démarche

        27
La
Scène
      de
     Crime
      28
29
30
31
32
Investigations

       33
Vital
              Risqué
Que fait ce système ?
       Fréquent
          34
Comment ça marche ?




          35
36
37
38
39
40
Ce que vous mesurez soit servir à
       - bâtir des hypothèses
   - (in)valider des hypothèses

                41
Patterns

   42
Comportement sous stress


  Isolé   Groupe     Foule




          Conflits    Saturation



                43
Capacité   Ressources limitées + Charge

                    Saturation


             Attente         Rejet

              44
Concurrence

Accès partagé à la même ressource

    Problème de cohabitation


      Attente    Mélange

            45
Répétition              Efficacité
    Volume

Attente d’éléments externes




                   46
47
Utilisateurs actifs          CPU



Bande passante réseau        Mémoire

                        48
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
Dimensionner
  les pools
      52
Les tailles de pool




                  Taille du
                    pool



             53
Les tailles de pool
    Mémoire        Taille du
                     pool


  CPU


Réseau




              54
Les tailles de pool
               File
            d’attente




            Taille du
              pool
              55
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
réseau de files d’attentes




             57
Approche pragmatique

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

 Calibrage par des tests en charge




                          58
59
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
Cohérence
 plutôt que

Rock StarS


      63
L’entonnoir




              64
Dimensionner
 la mémoire
      65
GC, GC

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

                Memory profiler
                ou
                -verbose:gc + GCViewer




                  66
Les tailles Mémoire

           4Go




            -Xmx800m




             67
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
71
72
1 CPU
        73
La limite logicielle est
         préférable à l’écroulement


(   )(    )(   )
(   )(    )(   )
(   )(    )(   )
(   )(    )(   )
(   )(    )(   )

      Taille du            Tout le
      pool trop          monde attend
     ambitieuse
         74
75
Taille du
        pool
     inefficace




76
77
Ressources limitées
          +
Ressources non rendues
          +
       Charge


       Saturation



 78
Mémoire
Connexion non rendue au pool
Thread bloqué

                    79
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
Récap
Capacité
    81
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
84
Ressource à partager

           Verrou


    Lock
                    synchronized
Transactionnel
                        (Java)
    (DB)



          85
Très long si
     attente mutuelle
     (Deadlock / Livelock)
     ou
     famine sur le premier




86
Situations propices

variables de classes
variables d’application (compteurs applicatifs)
collections auto-synchronized (Vector, Hashtable)




                             87
Java
→ Thread Dump + outil d'analyse
   (MAT, JCA, HealthCenter,
   Samourai)

Evaluer les portées des synchronized




BD
→ voir les outils de DBA
                 88
89
90
91
Ressource à partager

        Verrou

Corruption de
  données
  partagées       Comportement
                    instable

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




93
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
Récap
Concurrence
     96
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
99
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
Dresser
le bilan



    101
Temps de    Temps de
rendering   réponse serveur



                       102
103
104
105
106
107
Plusieurs sources
                    Latences




            108
Parler
Faire
Les

Chiffres
        109
Série Chronologique




Et sa distribution




                      110
Quelques
                   mauvais
                   temps isolés



Temps très
 variables




             Bimodale !? ...

             111
Que dis cette bimodale ?




             112
Que dis cette bimodale ?

 Comportement
 différent selon les    Plusieurs cas sous
 instances              le même use case
                        mesuré


                                       Lock


                                     Cache


                       113
114
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
Complexité algorithmique
  http://fr.wikipedia.org/wiki/Th%C3%A9orie_de_la_complexit%C3%A9_des_algorithmes




                                   117
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
Conclusion .

     120
Priorités



     Fonctions
      Robustesse
            Stabilité
             Rapidité

                121
122
Anticiper
 ≠ planifier

              123
Quelques ressources


    http://javaperformancetuning.com/


        http://highscalability.com/

   http://velocityconf.com/velocity20xx



                     124
Merci pour votre attention



           Questions ?
 @cfalguiere


               125
126

Más contenido relacionado

Destacado

La Gestion de Projet Mobile
La Gestion de Projet MobileLa Gestion de Projet Mobile
La Gestion de Projet MobileSebastien Brison
 
Le digital au service de l'innovation sociale
Le digital au service de l'innovation socialeLe digital au service de l'innovation sociale
Le digital au service de l'innovation socialeBlaaast
 
Cours Chromato2
Cours Chromato2Cours Chromato2
Cours Chromato2bio svi
 
Nouveau microsoft word document
Nouveau microsoft word documentNouveau microsoft word document
Nouveau microsoft word documentkarimfpk
 
01 fonction stockage_la_batterie
01 fonction stockage_la_batterie01 fonction stockage_la_batterie
01 fonction stockage_la_batterieAbdellah HILALI
 
Séminaire de formation - Introduction
Séminaire de formation - IntroductionSéminaire de formation - Introduction
Séminaire de formation - IntroductionGroupe Managem
 
Brochure Meca-19102016-bd
Brochure Meca-19102016-bdBrochure Meca-19102016-bd
Brochure Meca-19102016-bdCamille Volant
 
Protection des métaux contre la corrosion
Protection des métaux contre la corrosionProtection des métaux contre la corrosion
Protection des métaux contre la corrosionCHTAOU Karim
 
TRANSITION METALS
TRANSITION METALSTRANSITION METALS
TRANSITION METALSDrix78
 
Panorama Des Outils 2.0 En BibliothèQue
Panorama Des Outils 2.0 En BibliothèQuePanorama Des Outils 2.0 En BibliothèQue
Panorama Des Outils 2.0 En BibliothèQueDujol Lionel
 
Atag 2012 bel fr
Atag 2012 bel frAtag 2012 bel fr
Atag 2012 bel frDEKEYSER sa
 
Atelier MEITO Efficacité Energetique
Atelier MEITO Efficacité EnergetiqueAtelier MEITO Efficacité Energetique
Atelier MEITO Efficacité EnergetiqueYann Dieulangard
 
Fibrovia® - La fibre de la longévité
Fibrovia® - La fibre de la longévitéFibrovia® - La fibre de la longévité
Fibrovia® - La fibre de la longévitéEurovia_Group
 
Microvia® - Une référence pour l'adhérence
Microvia® - Une référence pour l'adhérenceMicrovia® - Une référence pour l'adhérence
Microvia® - Une référence pour l'adhérenceEurovia_Group
 
Présentation de la plate-forme d'éco-conception CORINE
Présentation de la plate-forme d'éco-conception CORINEPrésentation de la plate-forme d'éco-conception CORINE
Présentation de la plate-forme d'éco-conception CORINEBrice Kosinski
 
Animation obtention, conversion et séparation des aromatiques
Animation obtention, conversion et séparation des aromatiquesAnimation obtention, conversion et séparation des aromatiques
Animation obtention, conversion et séparation des aromatiquesTarik Taleb Bendiab
 
Baroffio y karsa
Baroffio y karsaBaroffio y karsa
Baroffio y karsajeanpyXD
 

Destacado (20)

La Gestion de Projet Mobile
La Gestion de Projet MobileLa Gestion de Projet Mobile
La Gestion de Projet Mobile
 
Le digital au service de l'innovation sociale
Le digital au service de l'innovation socialeLe digital au service de l'innovation sociale
Le digital au service de l'innovation sociale
 
L'AGRICULTURE DU FUTUR
L'AGRICULTURE DU FUTURL'AGRICULTURE DU FUTUR
L'AGRICULTURE DU FUTUR
 
Génie chimique - Nanomatériaux, Catalyse, Electrochimie - ULg
Génie chimique - Nanomatériaux, Catalyse, Electrochimie - ULgGénie chimique - Nanomatériaux, Catalyse, Electrochimie - ULg
Génie chimique - Nanomatériaux, Catalyse, Electrochimie - ULg
 
Cours Chromato2
Cours Chromato2Cours Chromato2
Cours Chromato2
 
Nouveau microsoft word document
Nouveau microsoft word documentNouveau microsoft word document
Nouveau microsoft word document
 
01 fonction stockage_la_batterie
01 fonction stockage_la_batterie01 fonction stockage_la_batterie
01 fonction stockage_la_batterie
 
Séminaire de formation - Introduction
Séminaire de formation - IntroductionSéminaire de formation - Introduction
Séminaire de formation - Introduction
 
Brochure Meca-19102016-bd
Brochure Meca-19102016-bdBrochure Meca-19102016-bd
Brochure Meca-19102016-bd
 
Protection des métaux contre la corrosion
Protection des métaux contre la corrosionProtection des métaux contre la corrosion
Protection des métaux contre la corrosion
 
TRANSITION METALS
TRANSITION METALSTRANSITION METALS
TRANSITION METALS
 
Panorama Des Outils 2.0 En BibliothèQue
Panorama Des Outils 2.0 En BibliothèQuePanorama Des Outils 2.0 En BibliothèQue
Panorama Des Outils 2.0 En BibliothèQue
 
Atag 2012 bel fr
Atag 2012 bel frAtag 2012 bel fr
Atag 2012 bel fr
 
Atelier MEITO Efficacité Energetique
Atelier MEITO Efficacité EnergetiqueAtelier MEITO Efficacité Energetique
Atelier MEITO Efficacité Energetique
 
Fibrovia® - La fibre de la longévité
Fibrovia® - La fibre de la longévitéFibrovia® - La fibre de la longévité
Fibrovia® - La fibre de la longévité
 
Microvia® - Une référence pour l'adhérence
Microvia® - Une référence pour l'adhérenceMicrovia® - Une référence pour l'adhérence
Microvia® - Une référence pour l'adhérence
 
Présentation de la plate-forme d'éco-conception CORINE
Présentation de la plate-forme d'éco-conception CORINEPrésentation de la plate-forme d'éco-conception CORINE
Présentation de la plate-forme d'éco-conception CORINE
 
L’oxydation
L’oxydationL’oxydation
L’oxydation
 
Animation obtention, conversion et séparation des aromatiques
Animation obtention, conversion et séparation des aromatiquesAnimation obtention, conversion et séparation des aromatiques
Animation obtention, conversion et séparation des aromatiques
 
Baroffio y karsa
Baroffio y karsaBaroffio y karsa
Baroffio y karsa
 

Similar a Diagnostic performances

Présentation de Apache Zookeeper
Présentation de Apache ZookeeperPrésentation de Apache Zookeeper
Présentation de Apache ZookeeperMichaël Morello
 
.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotique.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotiqueMicrosoft
 
PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?Marc Bojoly
 
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxMarc Bojoly
 
Perf ug comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Perf ug   comment ne plus rajouter de ram a vos jvm sans savoir pourquoiPerf ug   comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Perf ug comment ne plus rajouter de ram a vos jvm sans savoir pourquoipkernevez
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Normandy JUG
 
Cassandra pour les développeurs java
Cassandra pour les développeurs javaCassandra pour les développeurs java
Cassandra pour les développeurs javaJérémy Sevellec
 
Presentation du gestionnaire de configuration Puppet
Presentation du gestionnaire de configuration PuppetPresentation du gestionnaire de configuration Puppet
Presentation du gestionnaire de configuration PuppetAurélie Henriot
 
Softshake 2015 comment tester et optimiser la performance d'un si
Softshake 2015   comment tester et optimiser la performance d'un siSoftshake 2015   comment tester et optimiser la performance d'un si
Softshake 2015 comment tester et optimiser la performance d'un siMarc Bojoly
 
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOlivier DASINI
 
Softshake 2015 - Comment tester et optimiser la performance d'un SI ?
Softshake 2015 - Comment tester et optimiser la performance d'un SI ?Softshake 2015 - Comment tester et optimiser la performance d'un SI ?
Softshake 2015 - Comment tester et optimiser la performance d'un SI ?cyrilpicat
 
Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Jérôme Tamborini
 
Softshake 2013 - Vivre en parallèle
Softshake 2013 - Vivre en parallèleSoftshake 2013 - Vivre en parallèle
Softshake 2013 - Vivre en parallèleOCTO Technology
 
Vivre en parallèle - Softshake 2013
Vivre en parallèle - Softshake 2013Vivre en parallèle - Softshake 2013
Vivre en parallèle - Softshake 2013Henri Tremblay
 
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchéesDrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchéesAurelien Navarre
 
Les secrets de la JVM pour les algos à haute fréquence
Les secrets de la JVM pour les algos à haute fréquenceLes secrets de la JVM pour les algos à haute fréquence
Les secrets de la JVM pour les algos à haute fréquenceOCTO Technology
 
Big Data ou comment retrouver une aiguille dans une botte de foin
Big Data ou comment retrouver une aiguille dans une botte de foinBig Data ou comment retrouver une aiguille dans une botte de foin
Big Data ou comment retrouver une aiguille dans une botte de foinPALO IT
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computingIppon
 
Sonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy MalletSonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy MalletGenevaJUG
 

Similar a Diagnostic performances (20)

Présentation de Apache Zookeeper
Présentation de Apache ZookeeperPrésentation de Apache Zookeeper
Présentation de Apache Zookeeper
 
.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotique.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotique
 
PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?PerfUG Comment tester et optimiser la performance d'un SI ?
PerfUG Comment tester et optimiser la performance d'un SI ?
 
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptx
 
Perf ug comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Perf ug   comment ne plus rajouter de ram a vos jvm sans savoir pourquoiPerf ug   comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Perf ug comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
 
Cassandra pour les développeurs java
Cassandra pour les développeurs javaCassandra pour les développeurs java
Cassandra pour les développeurs java
 
Presentation du gestionnaire de configuration Puppet
Presentation du gestionnaire de configuration PuppetPresentation du gestionnaire de configuration Puppet
Presentation du gestionnaire de configuration Puppet
 
Présentation Puppet
Présentation PuppetPrésentation Puppet
Présentation Puppet
 
Softshake 2015 comment tester et optimiser la performance d'un si
Softshake 2015   comment tester et optimiser la performance d'un siSoftshake 2015   comment tester et optimiser la performance d'un si
Softshake 2015 comment tester et optimiser la performance d'un si
 
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
 
Softshake 2015 - Comment tester et optimiser la performance d'un SI ?
Softshake 2015 - Comment tester et optimiser la performance d'un SI ?Softshake 2015 - Comment tester et optimiser la performance d'un SI ?
Softshake 2015 - Comment tester et optimiser la performance d'un SI ?
 
Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)
 
Softshake 2013 - Vivre en parallèle
Softshake 2013 - Vivre en parallèleSoftshake 2013 - Vivre en parallèle
Softshake 2013 - Vivre en parallèle
 
Vivre en parallèle - Softshake 2013
Vivre en parallèle - Softshake 2013Vivre en parallèle - Softshake 2013
Vivre en parallèle - Softshake 2013
 
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchéesDrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
 
Les secrets de la JVM pour les algos à haute fréquence
Les secrets de la JVM pour les algos à haute fréquenceLes secrets de la JVM pour les algos à haute fréquence
Les secrets de la JVM pour les algos à haute fréquence
 
Big Data ou comment retrouver une aiguille dans une botte de foin
Big Data ou comment retrouver une aiguille dans une botte de foinBig Data ou comment retrouver une aiguille dans une botte de foin
Big Data ou comment retrouver une aiguille dans une botte de foin
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computing
 
Sonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy MalletSonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy Mallet
 

Más de Claude Falguiere

H2O , Le machine learning sans coder ou presque - Devoxx france 2016
H2O , Le machine learning sans coder ou presque - Devoxx france 2016H2O , Le machine learning sans coder ou presque - Devoxx france 2016
H2O , Le machine learning sans coder ou presque - Devoxx france 2016Claude Falguiere
 
Pres perf human talks mars 2015
Pres perf human talks mars 2015Pres perf human talks mars 2015
Pres perf human talks mars 2015Claude Falguiere
 
Presentation devoxx4kids à iut-agile
Presentation devoxx4kids à iut-agilePresentation devoxx4kids à iut-agile
Presentation devoxx4kids à iut-agileClaude Falguiere
 
Le monitoring à l'heure de DevOps et Big Data
Le monitoring à l'heure de DevOps et Big DataLe monitoring à l'heure de DevOps et Big Data
Le monitoring à l'heure de DevOps et Big DataClaude Falguiere
 
Présentation du user group Duchess France au GDG de Nantes
Présentation du user group Duchess France au GDG de NantesPrésentation du user group Duchess France au GDG de Nantes
Présentation du user group Duchess France au GDG de NantesClaude Falguiere
 
Présentation de Page Speed au GDG de Nantes
Présentation de Page Speed au GDG de NantesPrésentation de Page Speed au GDG de Nantes
Présentation de Page Speed au GDG de NantesClaude Falguiere
 
Présentation Performances Montpellier
Présentation Performances Montpellier Présentation Performances Montpellier
Présentation Performances Montpellier Claude Falguiere
 
Pres android nuit de l'info v3
Pres android nuit de l'info v3Pres android nuit de l'info v3
Pres android nuit de l'info v3Claude Falguiere
 
Performance test - YaJUG Octobre 2012
Performance test - YaJUG Octobre 2012Performance test - YaJUG Octobre 2012
Performance test - YaJUG Octobre 2012Claude Falguiere
 
La marmite Intro session NoSQL
La marmite Intro session NoSQLLa marmite Intro session NoSQL
La marmite Intro session NoSQLClaude Falguiere
 
Analyse de données avec Incanter
Analyse de données avec IncanterAnalyse de données avec Incanter
Analyse de données avec IncanterClaude Falguiere
 
Analyse de données avec Incanter
Analyse de données avec IncanterAnalyse de données avec Incanter
Analyse de données avec IncanterClaude Falguiere
 
Quickie Incanter/Clojure à Devoxx France 2012
Quickie Incanter/Clojure à Devoxx France 2012Quickie Incanter/Clojure à Devoxx France 2012
Quickie Incanter/Clojure à Devoxx France 2012Claude Falguiere
 
Deploiement continu breizh camp
Deploiement continu breizh campDeploiement continu breizh camp
Deploiement continu breizh campClaude Falguiere
 
Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011Claude Falguiere
 

Más de Claude Falguiere (20)

H2O , Le machine learning sans coder ou presque - Devoxx france 2016
H2O , Le machine learning sans coder ou presque - Devoxx france 2016H2O , Le machine learning sans coder ou presque - Devoxx france 2016
H2O , Le machine learning sans coder ou presque - Devoxx france 2016
 
Pres perf human talks mars 2015
Pres perf human talks mars 2015Pres perf human talks mars 2015
Pres perf human talks mars 2015
 
Devoxx 2014 monitoring
Devoxx 2014 monitoringDevoxx 2014 monitoring
Devoxx 2014 monitoring
 
Devoxx 2014 Monitoring
Devoxx 2014 Monitoring Devoxx 2014 Monitoring
Devoxx 2014 Monitoring
 
Presentation devoxx4kids à iut-agile
Presentation devoxx4kids à iut-agilePresentation devoxx4kids à iut-agile
Presentation devoxx4kids à iut-agile
 
Le monitoring à l'heure de DevOps et Big Data
Le monitoring à l'heure de DevOps et Big DataLe monitoring à l'heure de DevOps et Big Data
Le monitoring à l'heure de DevOps et Big Data
 
Présentation du user group Duchess France au GDG de Nantes
Présentation du user group Duchess France au GDG de NantesPrésentation du user group Duchess France au GDG de Nantes
Présentation du user group Duchess France au GDG de Nantes
 
Présentation de Page Speed au GDG de Nantes
Présentation de Page Speed au GDG de NantesPrésentation de Page Speed au GDG de Nantes
Présentation de Page Speed au GDG de Nantes
 
Présentation Performances Montpellier
Présentation Performances Montpellier Présentation Performances Montpellier
Présentation Performances Montpellier
 
Pres android nuit de l'info v3
Pres android nuit de l'info v3Pres android nuit de l'info v3
Pres android nuit de l'info v3
 
Performance test - YaJUG Octobre 2012
Performance test - YaJUG Octobre 2012Performance test - YaJUG Octobre 2012
Performance test - YaJUG Octobre 2012
 
La marmite Intro session NoSQL
La marmite Intro session NoSQLLa marmite Intro session NoSQL
La marmite Intro session NoSQL
 
Analyse de données avec Incanter
Analyse de données avec IncanterAnalyse de données avec Incanter
Analyse de données avec Incanter
 
Analyse de données avec Incanter
Analyse de données avec IncanterAnalyse de données avec Incanter
Analyse de données avec Incanter
 
Incanter bigdata jsc2012
Incanter bigdata jsc2012Incanter bigdata jsc2012
Incanter bigdata jsc2012
 
Quickie Incanter/Clojure à Devoxx France 2012
Quickie Incanter/Clojure à Devoxx France 2012Quickie Incanter/Clojure à Devoxx France 2012
Quickie Incanter/Clojure à Devoxx France 2012
 
Diagnostic performances
Diagnostic performancesDiagnostic performances
Diagnostic performances
 
Usine logicielle ios
Usine logicielle iosUsine logicielle ios
Usine logicielle ios
 
Deploiement continu breizh camp
Deploiement continu breizh campDeploiement continu breizh camp
Deploiement continu breizh camp
 
Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011
 

Diagnostic performances

  • 1. Diagnostic performance Claude Falguière JUG Toulouse le 7 décembre 2011 JUG Bordeaux le 8 décembre 2011 1
  • 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
  • 3. Claude Falguière Architecte Technique Co-fondatrice @cfalguiere Crew member 3
  • 4. 4
  • 5. Faux ami 1 La dream Team X est performant Y est performant Z est performant => Mon système est performant 5
  • 6. Sprint ou marathon ? 6
  • 7. Vitesse ou Bus RATP charge ? Modèle Simlocker Modèle Fiat 500 7
  • 8. Faux ami 2 C’est du bon sens ! 8
  • 10. Subjectif Complexité supposée Ordre d'affichage Stabilité 10
  • 11. Logique mais souvent Nombreux composants Interactions complexes Contre-intuitif Caches Mécanismes correctifs 11
  • 12. Faux ami 3 Avec le cloud fini les problèmes 12
  • 13. Essentiellement du scale out Dʼautres problèmes liés à la mutualisation (latence I/O) Coût de la montée en charge 13
  • 15. Une application ne rend le service prévu aux utilisateurs que si elle est déployée 15
  • 16. DEV OPS 16
  • 17. 17
  • 18. Si vous avez un marteau tout ressemble à un clou 18
  • 19. Donʼt shoot in the dark 19
  • 21. 21
  • 22. 22
  • 23. http://parisdevops.fr/ http://devops.fr Des User Groups Lille Paris Lyon Qui sera le prochain ? 23
  • 24. Partager 24
  • 25. ? n ! Klo Zzzz zzzzz z 25
  • 26. A la pêche aux infos Dis, je comprend pas pourquoi ça marche pas Tu peux revéri er toute la procédure d’installation ? Non 26
  • 27. Explicitez vos hypothèses et votre démarche 27
  • 28. La Scène de Crime 28
  • 29. 29
  • 30. 30
  • 31. 31
  • 32. 32
  • 34. Vital Risqué Que fait ce système ? Fréquent 34
  • 36. 36
  • 37. 37
  • 38. 38
  • 39. 39
  • 40. 40
  • 41. Ce que vous mesurez soit servir à - bâtir des hypothèses - (in)valider des hypothèses 41
  • 42. Patterns 42
  • 43. Comportement sous stress Isolé Groupe Foule Conflits Saturation 43
  • 44. Capacité Ressources limitées + Charge Saturation Attente Rejet 44
  • 45. Concurrence Accès partagé à la même ressource Problème de cohabitation Attente Mélange 45
  • 46. Répétition Efficacité Volume Attente d’éléments externes 46
  • 47. 47
  • 48. Utilisateurs actifs CPU Bande passante réseau Mémoire 48
  • 49. 11 mois plus tard ... Utilisateurs actifs CPU Bande passante réseau Mémoire 49
  • 50. 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
  • 51. Les Limites configurables Configuration mémoire de la JVM (-Xmx) Tailles limites de pool Tailles limites de caches Nombre dʼinstances, de connexions ... 51
  • 52. Dimensionner les pools 52
  • 53. Les tailles de pool Taille du pool 53
  • 54. Les tailles de pool Mémoire Taille du pool CPU Réseau 54
  • 55. Les tailles de pool File d’attente Taille du pool 55
  • 56. 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
  • 57. réseau de files d’attentes 57
  • 58. Approche pragmatique Estimation globale à partir de tests standardisés (SPEC http://www.spec.org/) Calibrage par des tests en charge 58
  • 59. 59
  • 60. 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
  • 61. Influence Influence de ( ) des jeux la vitesse des ( ) attend de utilisateurs ( ) données Influence des scénarios joués 61
  • 62. Tout ce qui rentre doit ressortir ... en moyenne File d’attente = temporisation des pics 90 62
  • 66. GC, GC Règle usuelle : temps de GC < 5% uptime process Memory profiler ou -verbose:gc + GCViewer 66
  • 67. Les tailles Mémoire 4Go -Xmx800m 67
  • 68. Les tailles Mémoire OutOfMemory : Not enough swap space left 4Go quota 1Go -Xmx800m 1,2 Go 68
  • 69. douter ne pas prendre tous les messages au pied de la lettre 69
  • 70. Les Quotas Mutualisation de ressources, Réserver des ressources au système, Priorisation de service, Facturation ulimit, hyperviseurs, shaping réseau, les licences ... 70
  • 71. 71
  • 72. 72
  • 73. 1 CPU 73
  • 74. La limite logicielle est préférable à l’écroulement ( )( )( ) ( )( )( ) ( )( )( ) ( )( )( ) ( )( )( ) Taille du Tout le pool trop monde attend ambitieuse 74
  • 75. 75
  • 76. Taille du pool inefficace 76
  • 77. 77
  • 78. Ressources limitées + Ressources non rendues + Charge Saturation 78
  • 79. Mémoire Connexion non rendue au pool Thread bloqué 79
  • 80. 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
  • 82. 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
  • 83. Prévention Capacity Planning Tests en charge Tests de vieillissement 83
  • 84. 84
  • 85. Ressource à partager Verrou Lock synchronized Transactionnel (Java) (DB) 85
  • 86. Très long si attente mutuelle (Deadlock / Livelock) ou famine sur le premier 86
  • 87. Situations propices variables de classes variables d’application (compteurs applicatifs) collections auto-synchronized (Vector, Hashtable) 87
  • 88. Java → Thread Dump + outil d'analyse (MAT, JCA, HealthCenter, Samourai) Evaluer les portées des synchronized BD → voir les outils de DBA 88
  • 89. 89
  • 90. 90
  • 91. 91
  • 92. Ressource à partager Verrou Corruption de données partagées Comportement instable 92
  • 93. Utilisation par plusieurs threads de variables de classe non multi-thread safe (formatters) 93
  • 94. Situations propices - Optimisations sauvage des synchronized pour régler des problèmes de performance - Caches et compteurs applicatifs mal gérés - Formatters 94
  • 95. Proposer des alternatives propres Concurrent Collections librairie «parallèles» type Gpars Immutabilité Thread Local, Volatile Synchronized à portée réduite 95
  • 97. 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
  • 98. 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
  • 99. 99
  • 100. 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
  • 102. Temps de Temps de rendering réponse serveur 102
  • 103. 103
  • 104. 104
  • 105. 105
  • 106. 106
  • 107. 107
  • 108. Plusieurs sources Latences 108
  • 110. Série Chronologique Et sa distribution 110
  • 111. Quelques mauvais temps isolés Temps très variables Bimodale !? ... 111
  • 112. Que dis cette bimodale ? 112
  • 113. Que dis cette bimodale ? Comportement différent selon les Plusieurs cas sous instances le même use case mesuré Lock Cache 113
  • 114. 114
  • 115. 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
  • 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 116
  • 117. Complexité algorithmique http://fr.wikipedia.org/wiki/Th%C3%A9orie_de_la_complexit%C3%A9_des_algorithmes 117
  • 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) 118
  • 119. Volume Fractionnement Facteurs de blocage - Ecritures fichiers bufferisées - JDBC Fetch size Redimensionnement de structures de données non mutables 119
  • 120. Conclusion . 120
  • 121. Priorités Fonctions Robustesse Stabilité Rapidité 121
  • 122. 122
  • 124. Quelques ressources http://javaperformancetuning.com/ http://highscalability.com/ http://velocityconf.com/velocity20xx 124
  • 125. Merci pour votre attention Questions ? @cfalguiere 125
  • 126. 126