SlideShare une entreprise Scribd logo
1  sur  66
Télécharger pour lire hors ligne
Performance ?

Méthodologie

Outils

Optimisation

Tests de performances
Damien Raude-Morvan
Université de Nantes, Département informatique

2012-2013

Tests de performances

Damien Raude-Morvan

1/66
Performance ?

Méthodologie

Outils

Optimisation

Table des matières

1 Performance ?
2 Méthodologie
3 Outils
4 Optimisation

Tests de performances

Damien Raude-Morvan

2/66
Performance ?

Méthodologie

Outils

Optimisation

Table des matières

1 Performance ?

Problématique
Types de tests
2 Méthodologie
3 Outils
4 Optimisation

Tests de performances

Damien Raude-Morvan

3/66
Performance ?

Méthodologie

Outils

Optimisation

Problématique

Table des matières

1 Performance ?

Problématique
Types de tests
2 Méthodologie
3 Outils
4 Optimisation

Tests de performances

Damien Raude-Morvan

4/66
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
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
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
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
Performance ?

Méthodologie

Outils

Optimisation

Types de tests

Table des matières

1 Performance ?

Problématique
Types de tests
2 Méthodologie
3 Outils
4 Optimisation

Tests de performances

Damien Raude-Morvan

9/66
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Performance ?

Méthodologie

Outils

Optimisation

Choisir les bons outils

Tests de performances

Damien Raude-Morvan

40/66
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
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
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
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
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
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
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
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
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
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
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
Performance ?

Méthodologie

Outils

Optimisation

Pour comprendre

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

52/66
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
Performance ?

Méthodologie

Outils

Optimisation

Table des matières

1 Performance ?
2 Méthodologie
3 Outils
4 Optimisation

Tests de performances

Damien Raude-Morvan

54/66
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
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
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
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
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
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
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
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
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
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
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
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

Contenu connexe

Tendances

Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
 
Programmation Shell Script
Programmation Shell ScriptProgrammation Shell Script
Programmation Shell ScriptBoubakr NOUR
 
Tutoriel Vmware
Tutoriel VmwareTutoriel Vmware
Tutoriel Vmwareelharrab
 
Uml: Diagrammes de classes -- Concepts avances --- 27
Uml: Diagrammes de classes -- Concepts avances --- 27Uml: Diagrammes de classes -- Concepts avances --- 27
Uml: Diagrammes de classes -- Concepts avances --- 27megaplanet20
 
Testes de Performance: Por Onde Começar?
Testes de Performance: Por Onde Começar?Testes de Performance: Por Onde Começar?
Testes de Performance: Por Onde Começar?Alan Cafruni Gularte
 
Apache JMeter - A brief introduction
Apache JMeter - A brief introductionApache JMeter - A brief introduction
Apache JMeter - A brief introductionsilenceIT Inc.
 
Les MéThodes Agiles
Les MéThodes AgilesLes MéThodes Agiles
Les MéThodes Agilesguesta206aa87
 
Automatisation des tests
Automatisation des testsAutomatisation des tests
Automatisation des testsZhu Wei QI
 
A la découverte de kubernetes
A la découverte de kubernetesA la découverte de kubernetes
A la découverte de kubernetesJulien Maitrehenry
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...ENSET, Université Hassan II Casablanca
 
LoadRunner Performance Testing
LoadRunner Performance TestingLoadRunner Performance Testing
LoadRunner Performance TestingAtul Pant
 
Test unitaire
Test unitaireTest unitaire
Test unitaireIsenDev
 
Test de logiciels
Test de logiciels Test de logiciels
Test de logiciels Bilel Abed
 
Introduction aux systèmes répartis
Introduction aux systèmes répartisIntroduction aux systèmes répartis
Introduction aux systèmes répartisHeithem Abbes
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 

Tendances (20)

Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
 
Génie Logiciel : les tests
Génie Logiciel : les testsGénie Logiciel : les tests
Génie Logiciel : les tests
 
Programmation Shell Script
Programmation Shell ScriptProgrammation Shell Script
Programmation Shell Script
 
Tutoriel Vmware
Tutoriel VmwareTutoriel Vmware
Tutoriel Vmware
 
Uml: Diagrammes de classes -- Concepts avances --- 27
Uml: Diagrammes de classes -- Concepts avances --- 27Uml: Diagrammes de classes -- Concepts avances --- 27
Uml: Diagrammes de classes -- Concepts avances --- 27
 
Testes de Performance: Por Onde Começar?
Testes de Performance: Por Onde Começar?Testes de Performance: Por Onde Começar?
Testes de Performance: Por Onde Começar?
 
Apache JMeter - A brief introduction
Apache JMeter - A brief introductionApache JMeter - A brief introduction
Apache JMeter - A brief introduction
 
Les MéThodes Agiles
Les MéThodes AgilesLes MéThodes Agiles
Les MéThodes Agiles
 
Automatisation des tests
Automatisation des testsAutomatisation des tests
Automatisation des tests
 
A la découverte de kubernetes
A la découverte de kubernetesA la découverte de kubernetes
A la découverte de kubernetes
 
Formation jmeter
Formation jmeterFormation jmeter
Formation jmeter
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
 
LoadRunner Performance Testing
LoadRunner Performance TestingLoadRunner Performance Testing
LoadRunner Performance Testing
 
Modele mvc
Modele mvcModele mvc
Modele mvc
 
Test unitaire
Test unitaireTest unitaire
Test unitaire
 
Test de logiciels
Test de logiciels Test de logiciels
Test de logiciels
 
kubernetes, pourquoi et comment
kubernetes, pourquoi et commentkubernetes, pourquoi et comment
kubernetes, pourquoi et comment
 
Introduction aux systèmes répartis
Introduction aux systèmes répartisIntroduction aux systèmes répartis
Introduction aux systèmes répartis
 
Ingénierie du test 0.9
Ingénierie du test 0.9Ingénierie du test 0.9
Ingénierie du test 0.9
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 

Similaire à Tests de performances

Offre Audit et Test De Performance
Offre Audit et Test De PerformanceOffre Audit et Test De Performance
Offre Audit et Test De PerformanceCabinet Openi
 
Guide tests fonctionnels
Guide tests fonctionnelsGuide tests fonctionnels
Guide tests fonctionnelscvcby
 
formation istqb.pdf
formation istqb.pdfformation istqb.pdf
formation istqb.pdfmido04
 
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
 
Exposé qualité et test
Exposé qualité et test Exposé qualité et test
Exposé qualité et test Imen Turki
 
Neolians testing offer
Neolians testing offerNeolians testing offer
Neolians testing offerryad_o
 
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
 
Présentation outil t.e.s.t.
Présentation outil t.e.s.t.Présentation outil t.e.s.t.
Présentation outil t.e.s.t.Michel Simian
 
XStudio - Présentation Télécom Valley
XStudio - Présentation Télécom ValleyXStudio - Présentation Télécom Valley
XStudio - Présentation Télécom ValleyMarc Hage Chahine
 
13-Cours de Géniel Logiciel
13-Cours de Géniel Logiciel13-Cours de Géniel Logiciel
13-Cours de Géniel Logiciellauraty3204
 
20120124 05 - Le Model-based Testing aujourd'hui (Inria)
20120124 05 - Le Model-based Testing aujourd'hui (Inria)20120124 05 - Le Model-based Testing aujourd'hui (Inria)
20120124 05 - Le Model-based Testing aujourd'hui (Inria)LeClubQualiteLogicielle
 
Strategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxStrategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxNicolas Fédou
 
Présentation Agile Testing
Présentation Agile TestingPrésentation Agile Testing
Présentation Agile Testingjubehr
 

Similaire à Tests de performances (20)

Offre Audit et Test De Performance
Offre Audit et Test De PerformanceOffre Audit et Test De Performance
Offre Audit et Test De Performance
 
Guide tests fonctionnels
Guide tests fonctionnelsGuide tests fonctionnels
Guide tests fonctionnels
 
formation istqb.pdf
formation istqb.pdfformation istqb.pdf
formation istqb.pdf
 
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
 
Exposé amdec
Exposé amdecExposé amdec
Exposé amdec
 
exposamdec-151213175143 (1).pptx
exposamdec-151213175143 (1).pptxexposamdec-151213175143 (1).pptx
exposamdec-151213175143 (1).pptx
 
Amdec 6 annexes
Amdec 6 annexesAmdec 6 annexes
Amdec 6 annexes
 
Amdec
AmdecAmdec
Amdec
 
Exposé qualité et test
Exposé qualité et test Exposé qualité et test
Exposé qualité et test
 
Neolians testing offer
Neolians testing offerNeolians testing offer
Neolians testing offer
 
Amdec
AmdecAmdec
Amdec
 
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
 
Présentation outil t.e.s.t.
Présentation outil t.e.s.t.Présentation outil t.e.s.t.
Présentation outil t.e.s.t.
 
XStudio - Présentation Télécom Valley
XStudio - Présentation Télécom ValleyXStudio - Présentation Télécom Valley
XStudio - Présentation Télécom Valley
 
AMDEC
AMDECAMDEC
AMDEC
 
13-Cours de Géniel Logiciel
13-Cours de Géniel Logiciel13-Cours de Géniel Logiciel
13-Cours de Géniel Logiciel
 
20120124 05 - Le Model-based Testing aujourd'hui (Inria)
20120124 05 - Le Model-based Testing aujourd'hui (Inria)20120124 05 - Le Model-based Testing aujourd'hui (Inria)
20120124 05 - Le Model-based Testing aujourd'hui (Inria)
 
qualité.pdf
qualité.pdfqualité.pdf
qualité.pdf
 
Strategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxStrategie de test à agile tour bordeaux
Strategie de test à agile tour bordeaux
 
Présentation Agile Testing
Présentation Agile TestingPrésentation Agile Testing
Présentation Agile Testing
 

Tests de performances

  • 1. Performance ? Méthodologie Outils Optimisation Tests de performances Damien Raude-Morvan Université de Nantes, Département informatique 2012-2013 Tests de performances Damien Raude-Morvan 1/66
  • 2. Performance ? Méthodologie Outils Optimisation Table des matières 1 Performance ? 2 Méthodologie 3 Outils 4 Optimisation Tests de performances Damien Raude-Morvan 2/66
  • 3. Performance ? Méthodologie Outils Optimisation Table des matières 1 Performance ? Problématique Types de tests 2 Méthodologie 3 Outils 4 Optimisation Tests de performances Damien Raude-Morvan 3/66
  • 4. Performance ? Méthodologie Outils Optimisation Problématique Table des matières 1 Performance ? Problématique Types de tests 2 Méthodologie 3 Outils 4 Optimisation Tests de performances Damien Raude-Morvan 4/66
  • 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
  • 9. Performance ? Méthodologie Outils Optimisation Types de tests Table des matières 1 Performance ? Problématique Types de tests 2 Méthodologie 3 Outils 4 Optimisation Tests de performances Damien Raude-Morvan 9/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
  • 40. Performance ? Méthodologie Outils Optimisation Choisir les bons outils Tests de performances Damien Raude-Morvan 40/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
  • 52. Performance ? Méthodologie Outils Optimisation Pour comprendre 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 52/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
  • 54. Performance ? Méthodologie Outils Optimisation Table des matières 1 Performance ? 2 Méthodologie 3 Outils 4 Optimisation Tests de performances Damien Raude-Morvan 54/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