SlideShare une entreprise Scribd logo
1  sur  42
Performance User Group #1
Marc BOJOLY, OCTO Technology
Henri TREMBLAY, OCTO Technology
• Wifi
• Récupérer le lab
git clone https://github.com/perfug/sampleapp1.git
• Compiler et tester l’exécution
– Voir README.MD
• L’importer dans votre IDE préféré
• Récupérer GCViewer (optionnel)
2
Avant de commencer
• Introduction (5 min.)
– Le Performance User Group Paris
• Présentation (30 min.)
– Performance for the dummies : introduction aux tests de charge
• Hands-on-lab (55 min.)
– Une application modélisant un front-office
– Un injecteur : gatling
– De quoi s’amuser !
• Questions / réponses (15 min.)
3
CONTENU DE LA SOIREE
Wikipedia
« [Les tests de performance] vont avoir pour objectif
de mesurer les temps de réponse d'un
système applicatif en fonction de sa
sollicitation. Cette définition est donc très
proche de celle de test de charge où l'on
mesure le comportement d'un système en
fonction de la charge d'utilisateurs simultanés.
Seuls les tests de charge permettent de valider
correctement une application ou un système
avant déploiement, tant en Qualité de Service
qu'en consommation de ressources. »
4
BIENVENUE AU PERFORMANCE USER GROUP
Larousse
Résultat chiffré (en temps
ou en distance) d'un
athlète ou d'un cheval à
l'issue d'une épreuve.
La performance d’un
système informatique
est caractérisée par les
temps de traitement
dans un contexte et
sous une sollicitation
donnés.
5
NOTRE VISION ?
Source : www.arthursclipart.org
Les performances
d’un système sont une
spécification
fonctionnelle implicite
du système
6
NOTRE VISION ?
Source : Les géants du Web
La mesure de
performance doit être
au cœur du processus
de développement
informatique
7
Notre vision ?
Source : Les géants du Web
Nous voulons des
systèmes performants
8
NOTRE DEVISE ?
LES TEMPS DE RÉPONSE NOUS DIMINUERONS
LES DÉBITS NOUS AUGMENTERONS
LES RESSOURCES NOUS ÉPARGNERONS
LA HAUTE DISPONIBILITÉ NOUS
PRÉCONISERONS
9
NOTRE MISSION?
Source : Paris JUG
Offrir un lieu
d’échanges informels
où toutes les
personnes intéressées
par l’optimisation et la
performance sont les
bienvenues quel que
soit leur niveau
10
NOTRE MISSION ?
Faciliter la diffusion
des derniers outils et
des meilleures
techniques pour
maîtriser au plus tôt la
performance d’un
système informatique
PerfUG - Performance for the
dummies
Introduction aux tests de charge
11
Un exemple de démarche
12
Et ensuite?
Les tests de performance
Les tests de charge
SOMMAIRE
13
Et ensuite?
Les tests de performance
Les tests de charge
Un exemple de démarche
SOMMAIRE
14
LES DIFFÉRENTS TYPES DE TEST
• Objectif : mesurer la performance unitaire
• Ex : le use case de souscription est testé pour 1 utilisateur
et, pour chaque étape du use case, on mesure le temps
passé dans les différents composants de l’application
Test de
performance
• Objectif : mesurer la tenue en charge de l’application sur la
population cible
• Ex : on simule l’utilisation de l’application par 200 utilisateurs
en parallèle pendant 2h
Test de
charge
• Objectif : déterminer les limites de l’application
• Ex : on augmente le nombre d’utilisateurs en parallèle sur
l’application jusqu’à ce que le taux d’erreurs / les temps de
réponse ne soient plus acceptables
Test de
rupture
• Objectif : déterminer la capacité de l’application à fonctionner
sur une période étendue
• Ex : on simule l’utilisation de l’application pendant 48h, avec
une charge constante et égale à la charge moyenne
Test de
vieillissement
Démarche de test que nous utilisons
Mise en place
des mesures
et scénarios
Exécution des
scénarios
Optimisation
Estimation des
gains potentiels
• Vérifier les
environnements
• Définition des scénarios
représentatifs pour
l’étape de tests de
charge
• Génération des jeux de
données
• Définition d’une cible à
atteindre
• Tests de charge avec
une volumétrie
représentative de la
production
• Exécution de tests de
performance locaux sur
les « hot spot » et
tuning en fonction du
résultat
• Validation des
hypothèses
Tests de charge Tests de performance
15
16
Et ensuite?
Les tests de performance
Les tests de charge
Un exemple de démarche
SOMMAIRE
Méthodologie d’un test de charge
Définition du plan et des
cas de test
Plan de test Cas de test
2 Création des scénarii et
des scripts de tests
3 Enregistrement des
métriques
4
Consolidation des
métriques et édition
d’un rapport de test
5
Analyse du rapport de
test et émission des
préconisations Rapport d’analyse
Métriques
Rapport de test
Contrôleur
Scripts de test Scénarii de test
Capture des
métriques
Application cible
Injecteurs
Données de test
1 Création des paliers de
données
Exécution : simulation
d’utilisateurs
1
3
3
17
GÉNÉRER LES DONNÉES
Identifier les ressources en quantité limitante
Identifier les impacts sur les différentes
machines lorsque l’application est distribuée
Corréler l’évolution des temps de réponse et les
consommations de ressources sur les
différentes machines
MONITORER LA CONSOMMATION DE
RESSOURCES
Enregistrer et rejouer de manière fidèle un
ensemble d’actions utilisateurs.
Variabiliser ces actions utilisateurs pour être
représentatif de l’usage réel
Simuler un grand nombre d’utilisateurs
TESTER EN CHARGE
Migrer les données depuis la production mais il faut
souvent l’anonymiser.
Générer un jeux de données mais il doit être
représentatif
Rétablir le jeux de données dans son état initial une
fois le tir effectué
18
Windows
LES OUTILS À UTILISER
NMon
Un outil fantastique
dont vous souhaiteriez
partager?
LES GRANDS TYPES DE GOULETS D’ÉTRANGLEMENT
INSTABILITÉ DU SYSTÈME = ECHEC DU TEST !
Toute exception doit être analysée
Les causes peuvent être multiples et liées à la charge (fuite
mémoire, fuite de connection, fuite de threads…)
Ou pas 
INFO: Server startup in 7722 ms
Apr 7, 2013 7:57:38 PM org.apache.tomcat.util.net.NioEndpoint processSocket SEVERE: Error
allocating socket processor
java.util.concurrent.RejectedExecut
ionException
at
java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.jav
a:1956)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:816)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1337)
at org.apache.tomcat.util.net.NioEndpoint.processSocket(NioEndpoint.java:1272)
at org.apache.tomcat.util.net.NioEndpoint.processSocket(NioEndpoint.java:1259)
at org.apache.tomcat.util.net.NioEndpoint.processSocket(NioEndpoint.java:1251)
at org.apache.tomcat.util.net.NioEndpoint$Poller.processKey(NioEndpoint.java:1689)
at org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1627)
at java.lang.Thread.run(Thread.java:679)
SATURATION DES RESSOURCES
La saturation d’une ressource est un début ou un aboutissement
Goulet d’étrangement à adresser pour passer à l’échelle
Ou point de départ de l’optimisation
CPU
19
I/O
LOCKS ET DEAD LOCKS
L’absence de toute autre cause est souvent ce qui met sur la voie
d’un problème de lock.
L’analyse des deadlocks peut en soit nous occuper toute une
séance….
CPU
I/O
20
Les nouveautés
Les tests de performance
Les tests de charge
Un exemple de démarche
SOMMAIRE
LES TESTS DE PERFORMANCE
21
OBJECTIFS
Affiner l’analyse et la compréhension des problèmes de performance.
Tester différentes alternatives d’optimisation possible et mesurer les améliorations qu’elles
apportent.
Itérer facilement entre différentes optimisations possibles.
MÉTHODOLOGIE
L’objectif ici n’étant pas d’obtenir des mesures exactes, des instrumentations plus intrusives sont
envisageables
Les investigations sont réalisées
• Avec les sources du code
• Sur un poste de développement ou avec une manière de déployer très fréquemment
• Avec les droits d’administration pour réaliser tout cela….
L’optimisation de performances se fait en intervenant sur plusieurs niveaux
Principes d’optimisation
22
• Ex : optimisation algorithmique, gestion du
multi-threading
Code et
architecture
applicative
• Ex : tuning des paramètresFramework
• Ex : taille des pools de
threads, taille de la mémoire
allouée à la base…
Couches basses : base
de données, serveur
d’application
• Ex : nb
machines, configurat
ion réseau…
Infrastructure
L’OPTIMISATION
La mesure est un point essentiel dans l’optimisation des performances.
POINTS DE VIGILANCE
L’infrastructure doit être proche de l’infrastructure cible pour que les
tests soient pertinents.
23
Les temps de réponse des systèmes externes sollicités doivent aussi
être consciencieusement mesurés.
Les jeux de données utilisés doivent être représentatifs des données
de production pour que les résultats soient pertinents
Hands-on Lab
24
• Une application « POC »
– 5 actions possibles / 9 tables
– API exposée sous forme d’URL GET
pour faciliter la testabilité
– Prépackagé avec H2
• Une application Front Office
– Encaissement d’article
– Calcul d’un total avec TVA variable par
pays et par catégorie d’article
– Gestion d’un stock par magasin
• Une architecture classique
– Hibernate / Spring / Spring MVC
– Stateless
Newsql App
25
• README
cd front
run.bat
<MyBrowser> http://localhost:8080/
cd injector
run.bat
• 1er tir avec Gatling
– Environ 60 s. de tir
– 31 req/s. sur mon portable
• Objectifs
– Quel débit maximum vous
pouvez atteindre avec votre
machine ?
– Quel est le goulet
d’étranglement?
HANDS-ON LAB HOW-TO ?
1 POM avec services, models et
data repositories
1 POM Spring
MVC
Injecteur Gatling
Ouvrir
Injector/target/gatling/
newsqlsimulation-YYYYMMDDHHmmss/index.html
26
Le scénario se trouve dans
injector/src/test/scala/NewSqlSimulation.scala
CONFIGURATION DE GATLING
27
• 1 utilisateur effectuant 1 scénario en boucle
• 1 tir de chauffe
– Permet de charger les caches
– Permet de stabiliser la JVM
• 1 tir réel
– Permet de mesurer les temps de réponse
unitaire
– Nécessite d’avoir une cible de temps de
réponse
Étape 1: Test de performance
• users = 1/0/0
• rampUp = 0
• duration = 30
• 1 scénario à la fois (séquentiellement?)
• checkStatus + regexp
Étape 1: Configuration Gatling
• Suivi GC
-XX:+PrintGCDetails -XX:+PrintTenuringDistribution -Xloggc:gc.log
• Suivi compilation
-XX:-PrintCompilation
Étape 1: Configuration JVM
• Nombre d’utilisateurs cible effectuant les
scénarii en boucle
• 1 tir de chauffe
– Permet de charger les caches
– Permet de stabiliser la JVM
• 1 tir réel
– Permet de mesurer les temps de réponse en
charge normale
– Permet de les comparer aux temps de réponse
unitaire pour établir la dégradation
Étape 2: Test de charge
• users = 80/10/10
• rampUp = 10
• duration = 40
• Tous les scénarii simultanément
Étape 2: Configuration Gatling
• Moyenne
– Donne une idée des performances
– Haute: Pas bon
– Basse: Peut-être bon
Étape 2: Les métriques
0
1000
2000
3000
4000
5000
6000
7000
0,5s 1s 1,5s 2s
Nombre de requêtes
Nombre de
requêtes
• Écart-type
– Donne une idée de la stabilité du système
– Haut: Pas bon
– Basse: Peut-être bon
– Mais en pratique, doit être utilisé avec le
centile
Étape 2: Les métriques
• Centile 95 et 99 (ou autres)
– Très utile pour connaître les ralentissements
qu’auront un certain pourcentage de vos
utilisateurs
– Avoir une cible pour savoir ce que l’on est prêt
à accepter ou non
Étape 2: Les métriques
• Ajout constant d’utilisateurs effectuant les
scénarii en boucle
• On arrête dès que l’on reçoit des erreurs
ou que les temps de réponse deviennent
particulièrement long
Étape 3: Test de rupture
• users = 640/80/80
• rampUp = 160
• duration = 860
• Tous les scénarii simultanément
• Ctrl+C et générer le rapport
– ro.bat
Étape 3: Configuration Gatling
• Nombre d’utilisateurs cible effectuant les
scénarii en boucle
• Think times minimaux
• On surveille
– Une potentielle dégradation des
performances
– Une augmentation de la mémoire (« memory
leak »)
Étape 4: Test d’endurance
• users = 160/20/20
• rampUp = 10
• duration = 2000
• think ratio = 0
• Tous les scénarii simultanément
Étape 4: Configuration Gatling
Sommaire
Les tests de performance
Les tests de charge
Un exemple de démarche
Et ensuite?
QUELQUES PISTES POUR LES PROCHAINES SÉANCES
41
L’ÉVOLUTION DES ARCHITECTURES PHYSIQUES
Optimisation de la parallélisation pour bénéficier des architectures multi-core
Monitoring des environnements virtuels et assurer des quotas de ressources
Optimisation du scheduling de tâches dans un environnement multi-tenant (processeur Unix
ou Jobs Hadoop)
…
L’ÉVOLUTION DES OS ET DES MIDDLEWARES
Non-blocking I/O, Node.JS : concurrence au niveau des I/O
GC et ses limites
…
L’ÉVOLUTION DES DES MÉTHODOLOGIES
Les meilleures solutions de monitoring (AppDynamics, Dynatrace…)
Les fonctionnalités des différents profiler (JVisualVM, Yourkit, DotTrace…)
Les possibilités de tuning des bases de données (Insider de FourthElephant)
L’inclusion au sein de l’usine de build (gatling-maven-plugin, …)
…
Qu’est-ce qui vous donnerait envie de participer à ce
User Group ?
ET VOUS ?
42

Contenu connexe

Tendances

Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Ippon
 
Agilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeursAgilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeursIppon
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2Christophe Rochefolle
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetOlivier BAZOUD
 
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
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes AgilesIppon
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014Benoît de CHATEAUVIEUX
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Sylvain Leroy
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes PratiquesEmmanuel Hugonnet
 
Intégration continue
Intégration continueIntégration continue
Intégration continueKlee Group
 
20100608 2 - TNR automatisés (Generali)
20100608 2 - TNR automatisés (Generali)20100608 2 - TNR automatisés (Generali)
20100608 2 - TNR automatisés (Generali)LeClubQualiteLogicielle
 
Introduction to NI, LabVIEW, ELVIS and Planet NI
Introduction to NI, LabVIEW, ELVIS and Planet NIIntroduction to NI, LabVIEW, ELVIS and Planet NI
Introduction to NI, LabVIEW, ELVIS and Planet NIslemoslideshare
 
Au secours, mon chef m'a demandé de passer au DevOps
Au secours, mon chef m'a demandé de passer au DevOpsAu secours, mon chef m'a demandé de passer au DevOps
Au secours, mon chef m'a demandé de passer au DevOpsantony_guilloteau
 
Performance serveur et apache
Performance serveur et apachePerformance serveur et apache
Performance serveur et apacheafup Paris
 
Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebChristophe Rochefolle
 
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxMarc Bojoly
 
Cas Client Bouygues Telecom - CloudNetCare
Cas Client Bouygues Telecom - CloudNetCareCas Client Bouygues Telecom - CloudNetCare
Cas Client Bouygues Telecom - CloudNetCareCloudNetCare
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 

Tendances (19)

Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon
 
Agilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeursAgilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeurs
 
Architecture Plug-in en LabVIEW : de la conception à la réalisation
Architecture Plug-in en LabVIEW : de la conception à la réalisationArchitecture Plug-in en LabVIEW : de la conception à la réalisation
Architecture Plug-in en LabVIEW : de la conception à la réalisation
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - Puppet
 
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...
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes Agiles
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
20100608 2 - TNR automatisés (Generali)
20100608 2 - TNR automatisés (Generali)20100608 2 - TNR automatisés (Generali)
20100608 2 - TNR automatisés (Generali)
 
Introduction to NI, LabVIEW, ELVIS and Planet NI
Introduction to NI, LabVIEW, ELVIS and Planet NIIntroduction to NI, LabVIEW, ELVIS and Planet NI
Introduction to NI, LabVIEW, ELVIS and Planet NI
 
Au secours, mon chef m'a demandé de passer au DevOps
Au secours, mon chef m'a demandé de passer au DevOpsAu secours, mon chef m'a demandé de passer au DevOps
Au secours, mon chef m'a demandé de passer au DevOps
 
Performance serveur et apache
Performance serveur et apachePerformance serveur et apache
Performance serveur et apache
 
Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et Web
 
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptx
 
Cas Client Bouygues Telecom - CloudNetCare
Cas Client Bouygues Telecom - CloudNetCareCas Client Bouygues Telecom - CloudNetCare
Cas Client Bouygues Telecom - CloudNetCare
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 

En vedette

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
 
Out ofmemoryerror what is the cost of java objects
Out ofmemoryerror  what is the cost of java objectsOut ofmemoryerror  what is the cost of java objects
Out ofmemoryerror what is the cost of java objectsJean-Philippe BEMPEL
 
Perfug Guide de survie du développeur dans une application Java qui rame
Perfug Guide de survie du développeur dans une application Java qui ramePerfug Guide de survie du développeur dans une application Java qui rame
Perfug Guide de survie du développeur dans une application Java qui ramebleporini
 
Microbenchmarking with JMH
Microbenchmarking with JMHMicrobenchmarking with JMH
Microbenchmarking with JMHHenri Tremblay
 
Kubernetes and lastminute.com: our course towards better scalability and proc...
Kubernetes and lastminute.com: our course towards better scalability and proc...Kubernetes and lastminute.com: our course towards better scalability and proc...
Kubernetes and lastminute.com: our course towards better scalability and proc...Michele Orsi
 
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
 
Atelier pour le CJD Paris : Baby boomers, génération X, génération Y
Atelier pour le CJD Paris : Baby boomers, génération X, génération YAtelier pour le CJD Paris : Baby boomers, génération X, génération Y
Atelier pour le CJD Paris : Baby boomers, génération X, génération YRaphaëlle Camous
 
C est fait comment ?
C est fait comment ?C est fait comment ?
C est fait comment ?Saqqarah 31
 
¿Cómo va mi proyecto?
¿Cómo va mi proyecto?¿Cómo va mi proyecto?
¿Cómo va mi proyecto?Luis Palomino
 
Medusa. La Odisea. Miriam García
Medusa. La Odisea. Miriam GarcíaMedusa. La Odisea. Miriam García
Medusa. La Odisea. Miriam Garcíarufasanchez
 
Si Tienes Problemas De Impagados
Si Tienes Problemas De ImpagadosSi Tienes Problemas De Impagados
Si Tienes Problemas De ImpagadosJulio Loupias Lara
 
I Conferencia UX - Experiencia de Usuario
I Conferencia UX - Experiencia de UsuarioI Conferencia UX - Experiencia de Usuario
I Conferencia UX - Experiencia de UsuarioNeo Consulting
 
l'interview de Mr. le Ministre avec la revue "l'étudiant".
l'interview de Mr. le Ministre avec la revue "l'étudiant".l'interview de Mr. le Ministre avec la revue "l'étudiant".
l'interview de Mr. le Ministre avec la revue "l'étudiant".Japprend.Com
 
EL NUEVO ENCAJE DE LOS GRUPOS TURÍSTICOS. ¿Cómo se han transformado los grand...
EL NUEVO ENCAJE DE LOS GRUPOS TURÍSTICOS. ¿Cómo se han transformado los grand...EL NUEVO ENCAJE DE LOS GRUPOS TURÍSTICOS. ¿Cómo se han transformado los grand...
EL NUEVO ENCAJE DE LOS GRUPOS TURÍSTICOS. ¿Cómo se han transformado los grand...Hosteltur
 
Etude Fraude Entreprises Pw C2009conferencedepresse
Etude Fraude Entreprises Pw C2009conferencedepresseEtude Fraude Entreprises Pw C2009conferencedepresse
Etude Fraude Entreprises Pw C2009conferencedepressePwCPresseFrance
 

En vedette (20)

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 ?
 
Out ofmemoryerror what is the cost of java objects
Out ofmemoryerror  what is the cost of java objectsOut ofmemoryerror  what is the cost of java objects
Out ofmemoryerror what is the cost of java objects
 
Perfug Guide de survie du développeur dans une application Java qui rame
Perfug Guide de survie du développeur dans une application Java qui ramePerfug Guide de survie du développeur dans une application Java qui rame
Perfug Guide de survie du développeur dans une application Java qui rame
 
Microbenchmarking with JMH
Microbenchmarking with JMHMicrobenchmarking with JMH
Microbenchmarking with JMH
 
Kubernetes and lastminute.com: our course towards better scalability and proc...
Kubernetes and lastminute.com: our course towards better scalability and proc...Kubernetes and lastminute.com: our course towards better scalability and proc...
Kubernetes and lastminute.com: our course towards better scalability and proc...
 
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
 
Atelier pour le CJD Paris : Baby boomers, génération X, génération Y
Atelier pour le CJD Paris : Baby boomers, génération X, génération YAtelier pour le CJD Paris : Baby boomers, génération X, génération Y
Atelier pour le CJD Paris : Baby boomers, génération X, génération Y
 
C est fait comment ?
C est fait comment ?C est fait comment ?
C est fait comment ?
 
¿Cómo va mi proyecto?
¿Cómo va mi proyecto?¿Cómo va mi proyecto?
¿Cómo va mi proyecto?
 
Medusa. La Odisea. Miriam García
Medusa. La Odisea. Miriam GarcíaMedusa. La Odisea. Miriam García
Medusa. La Odisea. Miriam García
 
Pirelli 2009
Pirelli 2009Pirelli 2009
Pirelli 2009
 
Si Tienes Problemas De Impagados
Si Tienes Problemas De ImpagadosSi Tienes Problemas De Impagados
Si Tienes Problemas De Impagados
 
I Conferencia UX - Experiencia de Usuario
I Conferencia UX - Experiencia de UsuarioI Conferencia UX - Experiencia de Usuario
I Conferencia UX - Experiencia de Usuario
 
MESAS DE LUZ
MESAS DE LUZMESAS DE LUZ
MESAS DE LUZ
 
ALSBLNB Conférence 2014 Saint John Atelier E - Forum du support aux locataires
ALSBLNB Conférence 2014 Saint John Atelier E - Forum du support aux locatairesALSBLNB Conférence 2014 Saint John Atelier E - Forum du support aux locataires
ALSBLNB Conférence 2014 Saint John Atelier E - Forum du support aux locataires
 
l'interview de Mr. le Ministre avec la revue "l'étudiant".
l'interview de Mr. le Ministre avec la revue "l'étudiant".l'interview de Mr. le Ministre avec la revue "l'étudiant".
l'interview de Mr. le Ministre avec la revue "l'étudiant".
 
Complejo Educativo Virtual
Complejo Educativo VirtualComplejo Educativo Virtual
Complejo Educativo Virtual
 
EL NUEVO ENCAJE DE LOS GRUPOS TURÍSTICOS. ¿Cómo se han transformado los grand...
EL NUEVO ENCAJE DE LOS GRUPOS TURÍSTICOS. ¿Cómo se han transformado los grand...EL NUEVO ENCAJE DE LOS GRUPOS TURÍSTICOS. ¿Cómo se han transformado los grand...
EL NUEVO ENCAJE DE LOS GRUPOS TURÍSTICOS. ¿Cómo se han transformado los grand...
 
Videopowerpoint
VideopowerpointVideopowerpoint
Videopowerpoint
 
Etude Fraude Entreprises Pw C2009conferencedepresse
Etude Fraude Entreprises Pw C2009conferencedepresseEtude Fraude Entreprises Pw C2009conferencedepresse
Etude Fraude Entreprises Pw C2009conferencedepresse
 

Similaire à Performance ug#1

Session #2 du workshop sur la performance en environnement de production
Session #2 du workshop sur la performance en environnement de productionSession #2 du workshop sur la performance en environnement de production
Session #2 du workshop sur la performance en environnement de productionDEFO KUATE Landry
 
Load test & performance profiling
Load test & performance profilingLoad test & performance profiling
Load test & performance profilingMSDEVMTL
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesOxalide
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceLudovic Piot
 
Tests de performances d'une application Java EE
Tests de performances d'une application Java EETests de performances d'une application Java EE
Tests de performances d'une application Java EEAntonio Gomes Rodrigues
 
Comment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile CenterComment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile CenterGuillaume Deshayes
 
Cocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaHeads France
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+ekino
 
Automatisation des tests - objectifs et concepts - partie 1
Automatisation des tests  - objectifs et concepts - partie 1Automatisation des tests  - objectifs et concepts - partie 1
Automatisation des tests - objectifs et concepts - partie 1Christophe Rochefolle
 
Offre Audit et Test De Performance
Offre Audit et Test De PerformanceOffre Audit et Test De Performance
Offre Audit et Test De PerformanceCabinet Openi
 
AFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIAFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIRomain Cambien
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...Publicis Sapient Engineering
 
[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logiciel[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logicielUSTHB & DELTALOG
 
La performance de vos applications Drupal
La performance de vos applications DrupalLa performance de vos applications Drupal
La performance de vos applications DrupalOxalide
 

Similaire à Performance ug#1 (20)

Session #2 du workshop sur la performance en environnement de production
Session #2 du workshop sur la performance en environnement de productionSession #2 du workshop sur la performance en environnement de production
Session #2 du workshop sur la performance en environnement de production
 
Load test & performance profiling
Load test & performance profilingLoad test & performance profiling
Load test & performance profiling
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
Tests de performances d'une application Java EE
Tests de performances d'une application Java EETests de performances d'une application Java EE
Tests de performances d'une application Java EE
 
Cerberus Testing
Cerberus TestingCerberus Testing
Cerberus Testing
 
Comment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile CenterComment construire son laboratoire de tests mobiles avec HP Mobile Center
Comment construire son laboratoire de tests mobiles avec HP Mobile Center
 
Test unitaires
Test unitairesTest unitaires
Test unitaires
 
Cocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitaires
 
Conformiq
ConformiqConformiq
Conformiq
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 
Automatisation des tests - objectifs et concepts - partie 1
Automatisation des tests  - objectifs et concepts - partie 1Automatisation des tests  - objectifs et concepts - partie 1
Automatisation des tests - objectifs et concepts - partie 1
 
Offre Audit et Test De Performance
Offre Audit et Test De PerformanceOffre Audit et Test De Performance
Offre Audit et Test De Performance
 
AFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open APIAFUP Aix/Marseille - 16 mai 2017 - Open API
AFUP Aix/Marseille - 16 mai 2017 - Open API
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
XebiCon'17 : Migration d’une application web vers un Paas Openshift - Akram B...
 
Dev opsday case study
Dev opsday   case studyDev opsday   case study
Dev opsday case study
 
[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logiciel[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logiciel
 
La performance de vos applications Drupal
La performance de vos applications DrupalLa performance de vos applications Drupal
La performance de vos applications Drupal
 
Anatomie du test
Anatomie du testAnatomie du test
Anatomie du test
 

Plus de Marc Bojoly

Restructurer un legacy comment et pourquoi
Restructurer un legacy comment et pourquoiRestructurer un legacy comment et pourquoi
Restructurer un legacy comment et pourquoiMarc Bojoly
 
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
 
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigData
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigDataPetit-déjeuner MapReduce-La révolution dans l’analyse des BigData
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigDataMarc Bojoly
 
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou RubyL'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou RubyMarc Bojoly
 
Quelles évolutions fonderont l’avenir des serveurs d’application ?
Quelles évolutions fonderont l’avenir des serveurs d’application ?Quelles évolutions fonderont l’avenir des serveurs d’application ?
Quelles évolutions fonderont l’avenir des serveurs d’application ?Marc Bojoly
 
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...Marc Bojoly
 
Performance ug#2 hands-on lab
Performance ug#2 hands-on labPerformance ug#2 hands-on lab
Performance ug#2 hands-on labMarc Bojoly
 

Plus de Marc Bojoly (7)

Restructurer un legacy comment et pourquoi
Restructurer un legacy comment et pourquoiRestructurer un legacy comment et pourquoi
Restructurer un legacy comment et pourquoi
 
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
 
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigData
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigDataPetit-déjeuner MapReduce-La révolution dans l’analyse des BigData
Petit-déjeuner MapReduce-La révolution dans l’analyse des BigData
 
L'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou RubyL'avenir de Java : Erlang, Haskell ou Ruby
L'avenir de Java : Erlang, Haskell ou Ruby
 
Quelles évolutions fonderont l’avenir des serveurs d’application ?
Quelles évolutions fonderont l’avenir des serveurs d’application ?Quelles évolutions fonderont l’avenir des serveurs d’application ?
Quelles évolutions fonderont l’avenir des serveurs d’application ?
 
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...
Les grilles transactionnelles, enfin des solutions pour l’informatique de ges...
 
Performance ug#2 hands-on lab
Performance ug#2 hands-on labPerformance ug#2 hands-on lab
Performance ug#2 hands-on lab
 

Performance ug#1

  • 1. Performance User Group #1 Marc BOJOLY, OCTO Technology Henri TREMBLAY, OCTO Technology
  • 2. • Wifi • Récupérer le lab git clone https://github.com/perfug/sampleapp1.git • Compiler et tester l’exécution – Voir README.MD • L’importer dans votre IDE préféré • Récupérer GCViewer (optionnel) 2 Avant de commencer
  • 3. • Introduction (5 min.) – Le Performance User Group Paris • Présentation (30 min.) – Performance for the dummies : introduction aux tests de charge • Hands-on-lab (55 min.) – Une application modélisant un front-office – Un injecteur : gatling – De quoi s’amuser ! • Questions / réponses (15 min.) 3 CONTENU DE LA SOIREE
  • 4. Wikipedia « [Les tests de performance] vont avoir pour objectif de mesurer les temps de réponse d'un système applicatif en fonction de sa sollicitation. Cette définition est donc très proche de celle de test de charge où l'on mesure le comportement d'un système en fonction de la charge d'utilisateurs simultanés. Seuls les tests de charge permettent de valider correctement une application ou un système avant déploiement, tant en Qualité de Service qu'en consommation de ressources. » 4 BIENVENUE AU PERFORMANCE USER GROUP Larousse Résultat chiffré (en temps ou en distance) d'un athlète ou d'un cheval à l'issue d'une épreuve. La performance d’un système informatique est caractérisée par les temps de traitement dans un contexte et sous une sollicitation donnés.
  • 5. 5 NOTRE VISION ? Source : www.arthursclipart.org Les performances d’un système sont une spécification fonctionnelle implicite du système
  • 6. 6 NOTRE VISION ? Source : Les géants du Web La mesure de performance doit être au cœur du processus de développement informatique
  • 7. 7 Notre vision ? Source : Les géants du Web Nous voulons des systèmes performants
  • 8. 8 NOTRE DEVISE ? LES TEMPS DE RÉPONSE NOUS DIMINUERONS LES DÉBITS NOUS AUGMENTERONS LES RESSOURCES NOUS ÉPARGNERONS LA HAUTE DISPONIBILITÉ NOUS PRÉCONISERONS
  • 9. 9 NOTRE MISSION? Source : Paris JUG Offrir un lieu d’échanges informels où toutes les personnes intéressées par l’optimisation et la performance sont les bienvenues quel que soit leur niveau
  • 10. 10 NOTRE MISSION ? Faciliter la diffusion des derniers outils et des meilleures techniques pour maîtriser au plus tôt la performance d’un système informatique
  • 11. PerfUG - Performance for the dummies Introduction aux tests de charge 11
  • 12. Un exemple de démarche 12 Et ensuite? Les tests de performance Les tests de charge SOMMAIRE
  • 13. 13 Et ensuite? Les tests de performance Les tests de charge Un exemple de démarche SOMMAIRE
  • 14. 14 LES DIFFÉRENTS TYPES DE TEST • Objectif : mesurer la performance unitaire • Ex : le use case de souscription est testé pour 1 utilisateur et, pour chaque étape du use case, on mesure le temps passé dans les différents composants de l’application Test de performance • Objectif : mesurer la tenue en charge de l’application sur la population cible • Ex : on simule l’utilisation de l’application par 200 utilisateurs en parallèle pendant 2h Test de charge • Objectif : déterminer les limites de l’application • Ex : on augmente le nombre d’utilisateurs en parallèle sur l’application jusqu’à ce que le taux d’erreurs / les temps de réponse ne soient plus acceptables Test de rupture • Objectif : déterminer la capacité de l’application à fonctionner sur une période étendue • Ex : on simule l’utilisation de l’application pendant 48h, avec une charge constante et égale à la charge moyenne Test de vieillissement
  • 15. Démarche de test que nous utilisons Mise en place des mesures et scénarios Exécution des scénarios Optimisation Estimation des gains potentiels • Vérifier les environnements • Définition des scénarios représentatifs pour l’étape de tests de charge • Génération des jeux de données • Définition d’une cible à atteindre • Tests de charge avec une volumétrie représentative de la production • Exécution de tests de performance locaux sur les « hot spot » et tuning en fonction du résultat • Validation des hypothèses Tests de charge Tests de performance 15
  • 16. 16 Et ensuite? Les tests de performance Les tests de charge Un exemple de démarche SOMMAIRE
  • 17. Méthodologie d’un test de charge Définition du plan et des cas de test Plan de test Cas de test 2 Création des scénarii et des scripts de tests 3 Enregistrement des métriques 4 Consolidation des métriques et édition d’un rapport de test 5 Analyse du rapport de test et émission des préconisations Rapport d’analyse Métriques Rapport de test Contrôleur Scripts de test Scénarii de test Capture des métriques Application cible Injecteurs Données de test 1 Création des paliers de données Exécution : simulation d’utilisateurs 1 3 3 17
  • 18. GÉNÉRER LES DONNÉES Identifier les ressources en quantité limitante Identifier les impacts sur les différentes machines lorsque l’application est distribuée Corréler l’évolution des temps de réponse et les consommations de ressources sur les différentes machines MONITORER LA CONSOMMATION DE RESSOURCES Enregistrer et rejouer de manière fidèle un ensemble d’actions utilisateurs. Variabiliser ces actions utilisateurs pour être représentatif de l’usage réel Simuler un grand nombre d’utilisateurs TESTER EN CHARGE Migrer les données depuis la production mais il faut souvent l’anonymiser. Générer un jeux de données mais il doit être représentatif Rétablir le jeux de données dans son état initial une fois le tir effectué 18 Windows LES OUTILS À UTILISER NMon Un outil fantastique dont vous souhaiteriez partager?
  • 19. LES GRANDS TYPES DE GOULETS D’ÉTRANGLEMENT INSTABILITÉ DU SYSTÈME = ECHEC DU TEST ! Toute exception doit être analysée Les causes peuvent être multiples et liées à la charge (fuite mémoire, fuite de connection, fuite de threads…) Ou pas  INFO: Server startup in 7722 ms Apr 7, 2013 7:57:38 PM org.apache.tomcat.util.net.NioEndpoint processSocket SEVERE: Error allocating socket processor java.util.concurrent.RejectedExecut ionException at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.jav a:1956) at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:816) at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1337) at org.apache.tomcat.util.net.NioEndpoint.processSocket(NioEndpoint.java:1272) at org.apache.tomcat.util.net.NioEndpoint.processSocket(NioEndpoint.java:1259) at org.apache.tomcat.util.net.NioEndpoint.processSocket(NioEndpoint.java:1251) at org.apache.tomcat.util.net.NioEndpoint$Poller.processKey(NioEndpoint.java:1689) at org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1627) at java.lang.Thread.run(Thread.java:679) SATURATION DES RESSOURCES La saturation d’une ressource est un début ou un aboutissement Goulet d’étrangement à adresser pour passer à l’échelle Ou point de départ de l’optimisation CPU 19 I/O LOCKS ET DEAD LOCKS L’absence de toute autre cause est souvent ce qui met sur la voie d’un problème de lock. L’analyse des deadlocks peut en soit nous occuper toute une séance…. CPU I/O
  • 20. 20 Les nouveautés Les tests de performance Les tests de charge Un exemple de démarche SOMMAIRE
  • 21. LES TESTS DE PERFORMANCE 21 OBJECTIFS Affiner l’analyse et la compréhension des problèmes de performance. Tester différentes alternatives d’optimisation possible et mesurer les améliorations qu’elles apportent. Itérer facilement entre différentes optimisations possibles. MÉTHODOLOGIE L’objectif ici n’étant pas d’obtenir des mesures exactes, des instrumentations plus intrusives sont envisageables Les investigations sont réalisées • Avec les sources du code • Sur un poste de développement ou avec une manière de déployer très fréquemment • Avec les droits d’administration pour réaliser tout cela….
  • 22. L’optimisation de performances se fait en intervenant sur plusieurs niveaux Principes d’optimisation 22 • Ex : optimisation algorithmique, gestion du multi-threading Code et architecture applicative • Ex : tuning des paramètresFramework • Ex : taille des pools de threads, taille de la mémoire allouée à la base… Couches basses : base de données, serveur d’application • Ex : nb machines, configurat ion réseau… Infrastructure L’OPTIMISATION
  • 23. La mesure est un point essentiel dans l’optimisation des performances. POINTS DE VIGILANCE L’infrastructure doit être proche de l’infrastructure cible pour que les tests soient pertinents. 23 Les temps de réponse des systèmes externes sollicités doivent aussi être consciencieusement mesurés. Les jeux de données utilisés doivent être représentatifs des données de production pour que les résultats soient pertinents
  • 25. • Une application « POC » – 5 actions possibles / 9 tables – API exposée sous forme d’URL GET pour faciliter la testabilité – Prépackagé avec H2 • Une application Front Office – Encaissement d’article – Calcul d’un total avec TVA variable par pays et par catégorie d’article – Gestion d’un stock par magasin • Une architecture classique – Hibernate / Spring / Spring MVC – Stateless Newsql App 25
  • 26. • README cd front run.bat <MyBrowser> http://localhost:8080/ cd injector run.bat • 1er tir avec Gatling – Environ 60 s. de tir – 31 req/s. sur mon portable • Objectifs – Quel débit maximum vous pouvez atteindre avec votre machine ? – Quel est le goulet d’étranglement? HANDS-ON LAB HOW-TO ? 1 POM avec services, models et data repositories 1 POM Spring MVC Injecteur Gatling Ouvrir Injector/target/gatling/ newsqlsimulation-YYYYMMDDHHmmss/index.html 26
  • 27. Le scénario se trouve dans injector/src/test/scala/NewSqlSimulation.scala CONFIGURATION DE GATLING 27
  • 28. • 1 utilisateur effectuant 1 scénario en boucle • 1 tir de chauffe – Permet de charger les caches – Permet de stabiliser la JVM • 1 tir réel – Permet de mesurer les temps de réponse unitaire – Nécessite d’avoir une cible de temps de réponse Étape 1: Test de performance
  • 29. • users = 1/0/0 • rampUp = 0 • duration = 30 • 1 scénario à la fois (séquentiellement?) • checkStatus + regexp Étape 1: Configuration Gatling
  • 30. • Suivi GC -XX:+PrintGCDetails -XX:+PrintTenuringDistribution -Xloggc:gc.log • Suivi compilation -XX:-PrintCompilation Étape 1: Configuration JVM
  • 31. • Nombre d’utilisateurs cible effectuant les scénarii en boucle • 1 tir de chauffe – Permet de charger les caches – Permet de stabiliser la JVM • 1 tir réel – Permet de mesurer les temps de réponse en charge normale – Permet de les comparer aux temps de réponse unitaire pour établir la dégradation Étape 2: Test de charge
  • 32. • users = 80/10/10 • rampUp = 10 • duration = 40 • Tous les scénarii simultanément Étape 2: Configuration Gatling
  • 33. • Moyenne – Donne une idée des performances – Haute: Pas bon – Basse: Peut-être bon Étape 2: Les métriques 0 1000 2000 3000 4000 5000 6000 7000 0,5s 1s 1,5s 2s Nombre de requêtes Nombre de requêtes
  • 34. • Écart-type – Donne une idée de la stabilité du système – Haut: Pas bon – Basse: Peut-être bon – Mais en pratique, doit être utilisé avec le centile Étape 2: Les métriques
  • 35. • Centile 95 et 99 (ou autres) – Très utile pour connaître les ralentissements qu’auront un certain pourcentage de vos utilisateurs – Avoir une cible pour savoir ce que l’on est prêt à accepter ou non Étape 2: Les métriques
  • 36. • Ajout constant d’utilisateurs effectuant les scénarii en boucle • On arrête dès que l’on reçoit des erreurs ou que les temps de réponse deviennent particulièrement long Étape 3: Test de rupture
  • 37. • users = 640/80/80 • rampUp = 160 • duration = 860 • Tous les scénarii simultanément • Ctrl+C et générer le rapport – ro.bat Étape 3: Configuration Gatling
  • 38. • Nombre d’utilisateurs cible effectuant les scénarii en boucle • Think times minimaux • On surveille – Une potentielle dégradation des performances – Une augmentation de la mémoire (« memory leak ») Étape 4: Test d’endurance
  • 39. • users = 160/20/20 • rampUp = 10 • duration = 2000 • think ratio = 0 • Tous les scénarii simultanément Étape 4: Configuration Gatling
  • 40. Sommaire Les tests de performance Les tests de charge Un exemple de démarche Et ensuite?
  • 41. QUELQUES PISTES POUR LES PROCHAINES SÉANCES 41 L’ÉVOLUTION DES ARCHITECTURES PHYSIQUES Optimisation de la parallélisation pour bénéficier des architectures multi-core Monitoring des environnements virtuels et assurer des quotas de ressources Optimisation du scheduling de tâches dans un environnement multi-tenant (processeur Unix ou Jobs Hadoop) … L’ÉVOLUTION DES OS ET DES MIDDLEWARES Non-blocking I/O, Node.JS : concurrence au niveau des I/O GC et ses limites … L’ÉVOLUTION DES DES MÉTHODOLOGIES Les meilleures solutions de monitoring (AppDynamics, Dynatrace…) Les fonctionnalités des différents profiler (JVisualVM, Yourkit, DotTrace…) Les possibilités de tuning des bases de données (Insider de FourthElephant) L’inclusion au sein de l’usine de build (gatling-maven-plugin, …) …
  • 42. Qu’est-ce qui vous donnerait envie de participer à ce User Group ? ET VOUS ? 42