5. Performance ?
Méthodologie
Outils
Optimisation
Problématique
Analyse de la performance
L’analyse de la performance d’un système à pour but de s’assurer
que ce dernier :
réalise de façon effective et pertinente (les bonnes choses) ;
réalise de façon efficiente (rapidement, au bon moment, au
moindre coût) ;
produit les résultats fixés ou attendus ;
répond aux besoins et aux attentes des clients de
l’organisation ;
Tests de performances
Damien Raude-Morvan
5/66
6. Performance ?
Méthodologie
Outils
Optimisation
Problématique
Pourquoi tester ?
Learn to live with unpredictable behavior
Les architectures d’aujourd’hui sont devenues trop complexes pour
que nous puissions préjuger d’un résultat en termes de QoS sans
tester concrètement
Voir la présentation de Joshua Bloch (« Performance Anxiety ») :
http://www.parleys.com/#st=5&id=2103&sl=2
Tests de performances
Damien Raude-Morvan
6/66
7. Performance ?
Méthodologie
Outils
Optimisation
Problématique
Connaitre sa problématique
Les tests de performances peuvent servir des buts très différents :
Contrôle qualité, Marketing
Quels sont nos temps de réponses ?
Sommes-nous conformes au SLA « Service Level Agreement » ?
Sommes-nous comparables ou mieux que nos concurrents ?
Conception
Les dernières évolutions livrées ont-elles impacté les
performances ?
Production / Intégration
Combien de serveur faut-il commander pour la charge
attendue ?
Tests de performances
Damien Raude-Morvan
7/66
8. Performance ?
Méthodologie
Outils
Optimisation
Problématique
Ratio coûts / gains
Coûts
Développement des
scénarios de tests
Mise en place d’une
plate-forme dédiée
Réalisation de la campagne
de tests et analyse des
résultats
Tests de performances
Gains
Eviter l’affectation de
ressources imprévues dans
l’urgence
Eviter des pertes de revenu
ou des dégradations d’image
Damien Raude-Morvan
8/66
10. Performance ?
Méthodologie
Outils
Optimisation
Types de tests
Test de charge
Variation des paramètres
Nombre d’utilisateurs effectuant
un certain nombre d’opération
sur une durée donnée.
Load testing
Simuler un nombre d’utilisateurs
virtuels prédéfinis, afin de valider
l’application pour une charge
attendue d’utilisateurs.
Tests de performances
Objectif / Résultat
Temps de réponse de
l’application sur les transactions
critiques. Avec les bons
indicateurs, permet de détecter
des goulots d’étranglement.
Damien Raude-Morvan
10/66
11. Performance ?
Méthodologie
Outils
Optimisation
Types de tests
Test de dégradations des transactions
Variation des paramètres
Isolation testing
Lancement d’un ensemble réduit
d’actions utilisateurs.
Simuler l’activité transactionnelle
d’un seul scénario fonctionnel du
périmètre
Objectif / Résultat
Tests de performances
Permet d’isoler éventuellement
les transactions qui dégradent le
plus fortement un système.
Damien Raude-Morvan
11/66
12. Performance ?
Méthodologie
Outils
Optimisation
Types de tests
Test de stress
Stress testing
Variation des paramètres
Simuler une activité maximale
supérieure aux heures de pointe
de l’application.
Augmentation significative et
régulière du nombre d’utilisateurs
Objectif / Résultat
Permet d’évaluer le
comportement du système en
dehors modèle d’usage standard
(robustesse) ou la charge limite
que le système est capable de
supporter (capacité).
Tests de performances
Damien Raude-Morvan
12/66
13. Performance ?
Méthodologie
Outils
Optimisation
Types de tests
Test de d’endurance / de fiabilité
Endurance testing (soak testing)
Simuler une charge importante
d’utilisateurs sur une durée
relativement longue.
Variation des paramètres
Augmentation significative de la
durée du test (>= dizaines
d’heures).
Objectif / Résultat
Permet de détecter des fuites
mémoires ou des consommations
excessives de ressources.
Tests de performances
Damien Raude-Morvan
13/66
14. Performance ?
Méthodologie
Outils
Optimisation
Types de tests
Test aux limites
Spike testing
Simuler l’augmentation rapide du
nombre d’utilisateurs, pour voir
comment le système réagit aux
limites du modèle d’usage de
l’application
Variation des paramètres
Augmentation significative et
soudaine du nombre d’utilisateurs
Objectif / Résultat
Permet d’analyser le
comportement de l’application
durant et surtout après une forte
charge (retour à la normale)
Tests de performances
Damien Raude-Morvan
14/66
15. Performance ?
Méthodologie
Outils
Optimisation
Types de tests
Test de configuration
Variation des paramètres
Configuration testing
Plus que de mesurer la
performance brute, il s’agit de
comparer la performance entre
deux paramétrages différents de
l’application
Tests de performances
Reconfiguration de l’application
entre chaque test (un seul
paramètre)
Objectif / Résultat
Permet d’évaluer l’impact positif
/ négatif de chaque paramètre
Damien Raude-Morvan
15/66
16. Performance ?
Méthodologie
Outils
Optimisation
Table des matières
1 Performance ?
2 Méthodologie
Identifier l’environnement de test
Identifier les critères d’acceptation
Préparer et concevoir les scénarios de test
Configurer l’environnement de test
Exécuter les tests et collecter les résultats
Analyser, optimiser et rejouer les tests
3 Outils
4 Optimisation
Tests de performances
Damien Raude-Morvan
16/66
17. Performance ?
Méthodologie
Outils
Optimisation
Méthodologie
Liste des étapes de préparation et de réalisation d’un test :
1
Identifier l’environnement de test
2
Identifier les critères d’acceptation
3
Préparer et concevoir les scénarios de test
4
Configurer l’environnement de test
5
Implémenter les scénarios
6
Exécuter les tests et collecter les résultats
7
Analyser, optimiser et rejouer les tests
Tests de performances
Damien Raude-Morvan
17/66
18. Performance ?
Méthodologie
Outils
Optimisation
Identifier l’environnement de test
Table des matières
1 Performance ?
2 Méthodologie
Identifier l’environnement de test
Identifier les critères d’acceptation
Préparer et concevoir les scénarios de test
Configurer l’environnement de test
Exécuter les tests et collecter les résultats
Analyser, optimiser et rejouer les tests
3 Outils
4 Optimisation
Tests de performances
Damien Raude-Morvan
18/66
19. Performance ?
Méthodologie
Outils
Optimisation
Identifier l’environnement de test
Décrire le système à tester
Connaitre précisemment le périmètre des tests :
Les composants testés en charge (front, back, stockage)
Les parties de l’application testées (pages)
Les dépendances entre les différents sous-systèmes
(architecture SOA ?)
Essentiel
Sans connaitre l’application et les composants, il est impossible de
faire une campagne de tests !
Tests de performances
Damien Raude-Morvan
19/66
20. Performance ?
Méthodologie
Outils
Optimisation
Identifier l’environnement de test
Connaitre son architecture cible
Y a-t-il des contraintes d’architecture qui influent sur le
comportement de l’application à tester ?
Load-Balancer ?
Cache distribué ?
Equipement réseaux ?
Espace de stockage ?
Essentiel
Avoir un environnement de test identique à la production et
autonome (sans autres tests).
Tests de performances
Damien Raude-Morvan
20/66
21. Performance ?
Méthodologie
Outils
Optimisation
Identifier les critères d’acceptation
Table des matières
1 Performance ?
2 Méthodologie
Identifier l’environnement de test
Identifier les critères d’acceptation
Préparer et concevoir les scénarios de test
Configurer l’environnement de test
Exécuter les tests et collecter les résultats
Analyser, optimiser et rejouer les tests
3 Outils
4 Optimisation
Tests de performances
Damien Raude-Morvan
21/66
22. Performance ?
Méthodologie
Outils
Optimisation
Identifier les critères d’acceptation
Choisir ses objectifs
On peut définir quatre types d’objectifs :
Concurrence d’accès / débit Nombre maximal d’utilisateurs qui
peuvent être connectés au système à un instant t.
Temps de réponse Mesure le temps de réception d’une réponse
entre deux points de l’application (client vers front,
front vers middleware, middleware vers SGBD...)
Temps d’affichage Difficile à mesurer. Dans le cas d’une
application web, temps avant que l’utilisateur puisse
effectuer une action sur la page HTML.
Resources utilisées Pour un nombre d’utilisateur donné,
consommation CPU/disque/réseau.
Tests de performances
Damien Raude-Morvan
22/66
23. Performance ?
Méthodologie
Outils
Optimisation
Identifier les critères d’acceptation
Définir ses critères d’acceptation
En théorie
Les critères choisis doivent être documentés avant la conception.
En pratique
Ces critères n’ont pas été définis à l’avance et sont évalués en
urgence avant une livraison.
Temps de réponse problématique du point de vue utilisateur
Concurrence d’accès / débit problématique du point de vue
fonctionnel
Utilisation des resources problématique du point de vue système /
production
Tests de performances
Damien Raude-Morvan
23/66
24. Performance ?
Méthodologie
Outils
Optimisation
Identifier les critères d’acceptation
Trouver le bon mix
Quelles sont les pages les plus consultées ?
Définir des typologies d’utilisation de l’application (par
rapport au profil utilisateur : 20% login, 40% recherche, 30%
détails, 10% commande)
Choisir la répartion de chaque typologie dans le test global
(30% Managers, 20% Editeurs, 50% Consulation)
Essentiel
Optimiser ses scénarios pour obtenir une utilisation réaliste de
l’application.
Spécifier la valeur nomimale et la valeur maximale
Tests de performances
Damien Raude-Morvan
24/66
25. Performance ?
Méthodologie
Outils
Optimisation
Préparer et concevoir les scénarios de test
Table des matières
1 Performance ?
2 Méthodologie
Identifier l’environnement de test
Identifier les critères d’acceptation
Préparer et concevoir les scénarios de test
Configurer l’environnement de test
Exécuter les tests et collecter les résultats
Analyser, optimiser et rejouer les tests
3 Outils
4 Optimisation
Tests de performances
Damien Raude-Morvan
25/66
26. Performance ?
Méthodologie
Outils
Optimisation
Préparer et concevoir les scénarios de test
Définir des scénarios 1/2
Documenter pas à pas chaque click, saisie, etc...
Toujours commencer par un scénario simplifié afin de valider
globalement la cohérence de l’infrastructure (warm test)
Vérifier que le scénario enregistré couvre bien les mêmes
actions que sa documentation
Essentiel
Chaque étape du scénario doit être précisemment décrite afin de
permettre sa reproduction à l’identique.
Tests de performances
Damien Raude-Morvan
26/66
27. Performance ?
Méthodologie
Outils
Optimisation
Préparer et concevoir les scénarios de test
Définir des scénarios 2/2
Penser à rendre le scénario variabilisable (différents comptes
utilisateurs, profils, produits)
Ajouter de l’aléa dans le déroulement (temps d’attente entre
chaque page)
Découper le scénation afin de pouvoir le réutiliser
Essentiel
L’objectif n’est pas (plus ?) d’effectuer la recette fonctionnelle de
l’application
Tests de performances
Damien Raude-Morvan
27/66
28. Performance ?
Méthodologie
Outils
Optimisation
Préparer et concevoir les scénarios de test
Préparer des données de tests 1/2
Plus que les scénarios, le véritable challenge concerne les données
de tests. Il faut de la volumétrie :
Un test de charge sur une base de données presque vide n’a
aucun sens
Dans la vraie vie, la base de données de votre application va
rapidement se remplir
Tests de performances
Damien Raude-Morvan
28/66
29. Performance ?
Méthodologie
Outils
Optimisation
Préparer et concevoir les scénarios de test
Préparer des données de tests 2/2
Dans le même temps, il faut des données cohérentes :
Avoir assez de diversité dans ses données pour permettre les
tests.
Revenir à un état "propre" à la fin de tests Indempotent Tests.
Tests de performances
Damien Raude-Morvan
29/66
30. Performance ?
Méthodologie
Outils
Optimisation
Configurer l’environnement de test
Table des matières
1 Performance ?
2 Méthodologie
Identifier l’environnement de test
Identifier les critères d’acceptation
Préparer et concevoir les scénarios de test
Configurer l’environnement de test
Exécuter les tests et collecter les résultats
Analyser, optimiser et rejouer les tests
3 Outils
4 Optimisation
Tests de performances
Damien Raude-Morvan
30/66
31. Performance ?
Méthodologie
Outils
Optimisation
Configurer l’environnement de test
Mesurer, mesurer, mesurer 1/2
Mettre en place des agents de mesures sur chaque
sous-système
Vérifier que les métriques mesurées sont valides
Connaitre l’impact des agents de mesures sur les performances
Privilégiez la réalisation de calculs à posteriori plutôt que
durant le test
Essentiel
Sans outils de monitoring de la plateforme cible, un test de
performance ne sert à rien !
Tests de performances
Damien Raude-Morvan
31/66
32. Performance ?
Méthodologie
Outils
Optimisation
Configurer l’environnement de test
Mesurer, mesurer, mesurer 2/2
Quelques métriques essentielles à surveiller :
Métriques
L’activité du système (load average)
L’activité du réseau
L’activité et l’occupation des disques
L’occupation mémoire
L’occupation du processeur (en %)
Essentiel
Il faut bien connaitre la signification de chaque métrique !
Tests de performances
Damien Raude-Morvan
32/66
33. Performance ?
Méthodologie
Outils
Optimisation
Exécuter les tests et collecter les résultats
Table des matières
1 Performance ?
2 Méthodologie
Identifier l’environnement de test
Identifier les critères d’acceptation
Préparer et concevoir les scénarios de test
Configurer l’environnement de test
Exécuter les tests et collecter les résultats
Analyser, optimiser et rejouer les tests
3 Outils
4 Optimisation
Tests de performances
Damien Raude-Morvan
33/66
34. Performance ?
Méthodologie
Outils
Optimisation
Exécuter les tests et collecter les résultats
Vérification de cohérence du tir
Une fois la campagne de tests terminée, avant de poursuivre il faut
vérifier
Les métriques renvoyées par les agents de mesures par rapport
aux limites du système
Le niveau d’erreur du point de vue applicatif
Le niveau d’erreur du point de vue de l’outil de tests
Préparer...
Il est souvent nécessaire de lancer plusieurs tests unitaires afin de
vérifier ses paramètres sur un périmètre réduit.
Tests de performances
Damien Raude-Morvan
34/66
35. Performance ?
Méthodologie
Outils
Optimisation
Analyser, optimiser et rejouer les tests
Table des matières
1 Performance ?
2 Méthodologie
Identifier l’environnement de test
Identifier les critères d’acceptation
Préparer et concevoir les scénarios de test
Configurer l’environnement de test
Exécuter les tests et collecter les résultats
Analyser, optimiser et rejouer les tests
3 Outils
4 Optimisation
Tests de performances
Damien Raude-Morvan
35/66
36. Performance ?
Méthodologie
Outils
Optimisation
Analyser, optimiser et rejouer les tests
Comprendre les résultats
Trouver les patterns d’utilisation qui entraine un dépassement
de critères d’acceptation
Corréler les mesures de temps de réponses et les métriques
enregistrées sur le serveur
Découper le scénario de test et le reproduire jusqu’à
déterminer précisemment le composant incriminé (idéalement
sur la même plateforme)
Tests de performances
Damien Raude-Morvan
36/66
37. Performance ?
Méthodologie
Outils
Optimisation
Analyser, optimiser et rejouer les tests
Restituer les résultats 1/2
Rédaction d’un rapport de résultats qui contient :
une consolidation des métriques (courbes et tableaux)
des alertes et des diagnostics
une comparaison avec la campagne N-1
Tests de performances
Damien Raude-Morvan
37/66
38. Performance ?
Méthodologie
Outils
Optimisation
Analyser, optimiser et rejouer les tests
Restituer les résultats 2/2
Attention à deux biais importants :
Biais d’interprétation
L’utilisation de la moyenne masque des temps de réponses plus
longs
Préférer l’utilisation d’un quantile (90%)
Attention au temps de réponse des erreurs qui peuvent être à
zéro
Biais de perception
Sur les graphiques, attention à l’échelle et l’origine de l’axe des
abscisses.
Attention également au lissage des courbes
Faire le bon choix de couleurs
Tests de performances
Damien Raude-Morvan
38/66
39. Performance ?
Méthodologie
Outils
Optimisation
Table des matières
1 Performance ?
2 Méthodologie
3 Outils
Pour mesurer la consommation
Pour jouer des scénarios
Pour comprendre
4 Optimisation
Tests de performances
Damien Raude-Morvan
39/66
41. Performance ?
Méthodologie
Outils
Optimisation
Pour mesurer la consommation
Table des matières
1 Performance ?
2 Méthodologie
3 Outils
Pour mesurer la consommation
Pour jouer des scénarios
Pour comprendre
4 Optimisation
Tests de performances
Damien Raude-Morvan
41/66
42. Performance ?
Méthodologie
Outils
Optimisation
Pour mesurer la consommation
VisualVM
Cet outil peut être utilisé à la fois en phase de développement et
de production.
Permet de proposer une vue graphique sur les outils mis à
disposition par la JVM
Permet de prendre des captures mémoires (Heap Dump)
Graphiques sur l’utilisation mémoire, CPU, les threads
Métriques sur le comportement du Garbage Collector de la
JVM
Propose des plugins pour "aller plus loin"
Tests de performances
Damien Raude-Morvan
42/66
43. Performance ?
Méthodologie
Outils
Optimisation
Pour mesurer la consommation
Munin et autres outils système
Munin est un logiciel écrit en Perl capable de collecter des données
sur différentes machines.
Il permet de mesurer beaucoup d’indicateurs (charges cpu,
ram, réseau, espace disques ...)
Il dispose d’une large communauté qui développe des plugins
complémentaires (Oracle, NFS, MySQL...)
Il permet de centraliser vers un seul et unique serveur les stats
Les statistiques sont consultables via une simple page web
Exemple : http://munin.ping.uio.no/
Tests de performances
Damien Raude-Morvan
43/66
44. Performance ?
Méthodologie
Outils
Optimisation
Pour jouer des scénarios
Table des matières
1 Performance ?
2 Méthodologie
3 Outils
Pour mesurer la consommation
Pour jouer des scénarios
Pour comprendre
4 Optimisation
Tests de performances
Damien Raude-Morvan
44/66
45. Performance ?
Méthodologie
Outils
Optimisation
Pour jouer des scénarios
JMeter : présentation
Un outil assez complet et libre :
Outil sous licence Apache 2.0
Permet d’utiliser différents protocoles (HTTP, SOAP, LDAP,
FTP)
Permet d’enregistrer des scénarios via un système de proxy
HTTP
Pas d’outils de monitoring et assez peu de rapports
Paradigme
1 thread = 1 utilisateur
Tests de performances
Damien Raude-Morvan
45/66
46. Performance ?
Méthodologie
Outils
Optimisation
Pour jouer des scénarios
JMeter : concepts
Test plan contient le scénario de test (enregistré sur disque
dans un format XML)
Workbench est une zone de travail temporaire non persistée
Thread Group représente un pool d’utilisateurs
Sampler représente la description d’une requête effectuée vers
le serveur
Logic Controller permet d’ajouter une surcouche de logique et
ainsi un ordre aux Samplers
Listener permet de visualiser, sauver ou lire les mesures du
test
Tests de performances
Damien Raude-Morvan
46/66
47. Performance ?
Méthodologie
Outils
Optimisation
Pour jouer des scénarios
JMeter : interface
Voici un exemple de scénario de test simpliste qui contient un seul
Thread Group.
IHM...
Il est possible d’utiliser entièrement JMeter sans IHM (et ainsi
d’obtenir de meilleures performances)
Tests de performances
Damien Raude-Morvan
47/66
48. Performance ?
Méthodologie
Outils
Optimisation
Pour jouer des scénarios
Gatling : présentation
Outil sous licence Apache 2.0
Plutôt que d’utiliser un format de stockage XML, avec Gatling
le test est également du code (Scala)
Propose un DSL afin de décrire les actions à réaliser par le
scénario
Dispose également d’un "Recorder" qui permet d’utiliser un
proxy HTTP depuis son navigateur
Paradigme
Utilisation du pattern Actor (via Akka) (donc 1 thread != 1
utilisateur)
Tests de performances
Damien Raude-Morvan
48/66
49. Performance ?
Méthodologie
Outils
Optimisation
Pour jouer des scénarios
Gatling : concepts
Scenario un ensemble d’instruction à suivre (décrites via le
DSL)
Simulation contient plusieurs scénarios, avec pour chacun le
nombre d’utilisateur
Feeders classe qui permet d’injecter des données dans le
scénario
Checks description des tests que doit effectuer Gatling afin
de déterminer qu’une instruction est OK
Tests de performances
Damien Raude-Morvan
49/66
50. Performance ?
Méthodologie
Outils
Optimisation
Pour jouer des scénarios
Gatling : exemple
Voici un exemple de scénario avec Gatling
class SimulationWithFollowRedirect extends Simulation { (1)
def apply = { (2)
val scn = scenario("My scenario")
.exec(http("My Page")
.get("http://mywebsite.com/page.html")) (3)
List(scn.configure.users(10).ramp(10)) (4)
}
}
Tests de performances
Damien Raude-Morvan
50/66
51. Performance ?
Méthodologie
Outils
Optimisation
Pour jouer des scénarios
Autres outils
Des outils propriétaires existent :
HP Mercury LoadRunner
Neotys Neoload
Ils permettent de prendre en charge plus de protocoles, de simuler
un véritable navigateur (Javascript) ou encore d’obtenir des
rapports automatisés très simplement.
Tests de performances
Damien Raude-Morvan
51/66
53. Performance ?
Méthodologie
Outils
Optimisation
Pour comprendre
MAT
Le Garbage Collector Java = libère de la mémoire un objet
Java sans référence
Un vidage du tas (Heap Dump) Java est une image du graphe
d’objets Java complet à un instant T.
MAT permet d’ouvrir un Heap Dump et :
de visualiser les références aux objets
d’affectuer des requêtes (SQL-like : OQL)
de naviguer dans le graph
M
AT Eclipse permet ainsi d’identifier les éventuelles fuites mémoire.
Tests de performances
Damien Raude-Morvan
53/66
55. Performance ?
Méthodologie
Outils
Optimisation
Mauvaise utilisation de la base de données
Quelques exemples de mauvaises pratiques :
Indexes manquants sur certains clefs
Récupération de l’ensemble des colonnes pour effectuer un
calcul simple
Mauvais choix d’isolation des transactions (locks)
Pas de paramétrage de la base de données (pools)
Rapprocher les traitements et les données (procédures
stockées et JOIN en SQL)
A retenir
Apprendre le fonctionne de sa base de données et observer le
comportement des requêtes (explain plan).
Tests de performances
Damien Raude-Morvan
55/66
56. Performance ?
Méthodologie
Outils
Optimisation
Utilisation abusive du réseau
Ne pas oublier que :
Un accès réseau est plus de lent qu’un accès local
(notamment en mémoire)
Choisir correctement le protocole utilisé
Préférer des appels "batchs" plutôt qu’un multitude d’appels
unitaires
Ne pas faire de sur-conception : un service pour une seule
application ?
A retenir
Eviter autant que possible les Round Trip réseau : pratiquer la
méthode YAGNI
Tests de performances
Damien Raude-Morvan
56/66
57. Performance ?
Méthodologie
Outils
Optimisation
Mauvaise gestion de la concurrence d’accès
Quelques exemples de mauvaises pratiques :
Des méthodes ou des blocks synchronized qui prennent
beaucoup de temps
Des transactions en base de données très longues
Utilisation abusive de structures de données synchronized
(Hashtable, Vector, StringBuffer)
A retenir
Les blocks synchronized sont l’ennemi de la performance.
Envisager des approche par le pattern Actor.
Tests de performances
Damien Raude-Morvan
57/66
58. Performance ?
Méthodologie
Outils
Optimisation
Mauvaises performances du coeur technologique
Il arrive parfois qu’un composant soit :
utilisé sans tenir compte des recommandations de la
documentation
utilisé pour autre chose que ce à quoi il était prévu
ré-écrit en pensant faire mieux
A retenir
Ne pas réinventer la roue, il y a de forte chance de faire moins bien
que le voisin !
Tests de performances
Damien Raude-Morvan
58/66
59. Performance ?
Méthodologie
Outils
Optimisation
Consommation mémoire
Il y a trois types de problèmes avec la mémoire :
beaucoup d’allocation d’objets à courte durée de vie (forte
pression sur le GC)
beaucoup d’objets persistants (OutOfMemoryError)
des fuites mémoires (difficile à détecter)
A retenir
Utiliser un profiler à différentes phases du cycle de vie de
l’application pour déteminer les points chauds.
Tests de performances
Damien Raude-Morvan
59/66
60. Performance ?
Méthodologie
Outils
Optimisation
Mauvaise utilisation des fonctions de cache
Un cache peut à la fois améliorer les performances et les dégrader.
Mettre en cache des données changeantes ne présente aucun
intérêt
Avoir un ratio de succès trop bas sur le cache (données très
dynamiques)
Utiliser des locks pour implémenter son cache...
A retenir
Utiliser un profiler à différentes phases du cycle de vie de
l’application pour déteminer les points chauds.
Tests de performances
Damien Raude-Morvan
60/66
61. Performance ?
Méthodologie
Outils
Optimisation
L’abus de XML
Le format XML n’est pas la panacée :
Couteux en temps de parsing pour le CPU
Couteux en stockage en mémoire
Il faut mettre en place certaines bonnes pratiques :
Utiliser au maximum des API de streaming, StAX ou SAX,
plutôt que DOM
Lors de transformation XSLT, essayer de compiler les feuilles
de styles
Eviter de relire plusieurs fois les mêmes documents !
Tests de performances
Damien Raude-Morvan
61/66
62. Performance ?
Méthodologie
Outils
Optimisation
Configuration du serveur d’application et JVM
Mettre en adéquation la configuration et la réalitée :
Le pool de thread HTTP : nombre de threads autorisés sur
mon frontal
Le pool de connexions SQL : nombre de connexion vers le
SGBD
Les paramètres de la JVM : mémoire, GC, traitement des
erreurs
Les éléments spécifiques à votre application
A retenir
Travail permanent de monitoring pour adapter la configuration à
l’utilisation de l’application.
Tests de performances
Damien Raude-Morvan
62/66
63. Performance ?
Méthodologie
Outils
Optimisation
Logging excessif
Comme pour le cache, les logs peuvent être à la fois l’ami et
l’ennemi :
Il est important d’obtenir des logs lors d’un test de
performances
L’activation des logs entraine une perte de performance :
manipulation de String + écriture sur disque (sync)
A retenir
Utiliser un framework qui permet d’utiliser des varargs plutôt que
de la concaténation.
Tests de performances
Damien Raude-Morvan
63/66
64. Annexe
Pour aller plus loin
Pour aller plus loin I
Charlie Hunt, Binu John
Java Performance.
Prentice Hall, 2011. ISBN 978-0137142521
Joshua Bloch
Effective Java (2nd Edition).
Addison-Wesley, 2008. ISBN 978-0321356680
Ian Molyneaux
The Art of Application Performance Testing.
O’Reilly Media, 2009. ISBN 978-0-596-52066-3
Tests de performances
Damien Raude-Morvan
64/66
65. Annexe
Pour aller plus loin
Pour aller plus loin II
Wikipedia
Software performance testing
http://en.wikipedia.org/wiki/Software_performance_
testing
http://decrypt.ysance.com/2012/09/
tests-de-performances-partie-1-preparation-et-analyse/
Claude Falguiere
Mesurer les performances avec JMeter.
http://fr.slideshare.net/claude.falguiere/
mesurer-les-performances-avec-j-meter-cours-du-soir-val
Tests de performances
Damien Raude-Morvan
65/66
66. Annexe
Pour aller plus loin
Merci
Merci de votre attention.
Ces transparents sont sous licence CC-BY-SA-3.0
http://creativecommons.org/licenses/by/3.0/fr/.
Tests de performances
Damien Raude-Morvan
66/66