Tests de performances

66
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

description

Présentation des tests de performances pour le cursus BAC+3 de l'IUT de Nantes

Transcript of Tests de performances

Page 1: Tests de performances

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

Page 2: Tests de performances

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

Page 3: Tests de performances

Performance ? Méthodologie Outils Optimisation

Table des matières

1 Performance ?ProblématiqueTypes de tests

2 Méthodologie

3 Outils

4 Optimisation

Tests de performances Damien Raude-Morvan 3/66

Page 4: Tests de performances

Performance ? Méthodologie Outils Optimisation

Problématique

Table des matières

1 Performance ?ProblématiqueTypes de tests

2 Méthodologie

3 Outils

4 Optimisation

Tests de performances Damien Raude-Morvan 4/66

Page 5: Tests de performances

Performance ? Méthodologie Outils Optimisation

Problématique

Analyse de la performance

L’analyse de la performance d’un système à pour but de s’assurerque ce dernier :

réalise de façon effective et pertinente (les bonnes choses) ;réalise de façon efficiente (rapidement, au bon moment, aumoindre coût) ;produit les résultats fixés ou attendus ;répond aux besoins et aux attentes des clients del’organisation ;

Tests de performances Damien Raude-Morvan 5/66

Page 6: Tests de performances

Performance ? Méthodologie Outils Optimisation

Problématique

Pourquoi tester ?

Learn to live with unpredictable behaviorLes architectures d’aujourd’hui sont devenues trop complexes pourque nous puissions préjuger d’un résultat en termes de QoS sanstester 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

Page 7: Tests de performances

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 ?

ConceptionLes dernières évolutions livrées ont-elles impacté lesperformances ?

Production / IntégrationCombien de serveur faut-il commander pour la chargeattendue ?

Tests de performances Damien Raude-Morvan 7/66

Page 8: Tests de performances

Performance ? Méthodologie Outils Optimisation

Problématique

Ratio coûts / gains

Coûts

Développement desscénarios de testsMise en place d’uneplate-forme dédiéeRéalisation de la campagnede tests et analyse desrésultats

Gains

Eviter l’affectation deressources imprévues dansl’urgenceEviter des pertes de revenuou des dégradations d’image

Tests de performances Damien Raude-Morvan 8/66

Page 9: Tests de performances

Performance ? Méthodologie Outils Optimisation

Types de tests

Table des matières

1 Performance ?ProblématiqueTypes de tests

2 Méthodologie

3 Outils

4 Optimisation

Tests de performances Damien Raude-Morvan 9/66

Page 10: Tests de performances

Performance ? Méthodologie Outils Optimisation

Types de tests

Test de charge

Load testingSimuler un nombre d’utilisateursvirtuels prédéfinis, afin de validerl’application pour une chargeattendue d’utilisateurs.

Variation des paramètresNombre d’utilisateurs effectuantun certain nombre d’opérationsur une durée donnée.

Objectif / Résultat

Temps de réponse del’application sur les transactionscritiques. Avec les bonsindicateurs, permet de détecterdes goulots d’étranglement.

Tests de performances Damien Raude-Morvan 10/66

Page 11: Tests de performances

Performance ? Méthodologie Outils Optimisation

Types de tests

Test de dégradations des transactions

Isolation testingSimuler l’activité transactionnelled’un seul scénario fonctionnel dupérimètre

Variation des paramètresLancement d’un ensemble réduitd’actions utilisateurs.

Objectif / Résultat

Permet d’isoler éventuellementles transactions qui dégradent leplus fortement un système.

Tests de performances Damien Raude-Morvan 11/66

Page 12: Tests de performances

Performance ? Méthodologie Outils Optimisation

Types de tests

Test de stress

Stress testingSimuler une activité maximalesupérieure aux heures de pointede l’application.

Variation des paramètresAugmentation significative etrégulière du nombre d’utilisateurs

Objectif / Résultat

Permet d’évaluer lecomportement du système endehors modèle d’usage standard(robustesse) ou la charge limiteque le système est capable desupporter (capacité).

Tests de performances Damien Raude-Morvan 12/66

Page 13: Tests de performances

Performance ? Méthodologie Outils Optimisation

Types de tests

Test de d’endurance / de fiabilité

Endurance testing (soak testing)

Simuler une charge importanted’utilisateurs sur une duréerelativement longue.

Variation des paramètresAugmentation significative de ladurée du test (>= dizainesd’heures).

Objectif / Résultat

Permet de détecter des fuitesmémoires ou des consommationsexcessives de ressources.

Tests de performances Damien Raude-Morvan 13/66

Page 14: Tests de performances

Performance ? Méthodologie Outils Optimisation

Types de tests

Test aux limites

Spike testingSimuler l’augmentation rapide dunombre d’utilisateurs, pour voircomment le système réagit auxlimites du modèle d’usage del’application

Variation des paramètresAugmentation significative etsoudaine du nombre d’utilisateurs

Objectif / Résultat

Permet d’analyser lecomportement de l’applicationdurant et surtout après une fortecharge (retour à la normale)

Tests de performances Damien Raude-Morvan 14/66

Page 15: Tests de performances

Performance ? Méthodologie Outils Optimisation

Types de tests

Test de configuration

Configuration testingPlus que de mesurer laperformance brute, il s’agit decomparer la performance entredeux paramétrages différents del’application

Variation des paramètresReconfiguration de l’applicationentre chaque test (un seulparamètre)

Objectif / Résultat

Permet d’évaluer l’impact positif/ négatif de chaque paramètre

Tests de performances Damien Raude-Morvan 15/66

Page 16: Tests de performances

Performance ? Méthodologie Outils Optimisation

Table des matières

1 Performance ?

2 MéthodologieIdentifier l’environnement de testIdentifier les critères d’acceptationPréparer et concevoir les scénarios de testConfigurer l’environnement de testExécuter les tests et collecter les résultatsAnalyser, optimiser et rejouer les tests

3 Outils

4 OptimisationTests de performances Damien Raude-Morvan 16/66

Page 17: Tests de performances

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 test2 Identifier les critères d’acceptation3 Préparer et concevoir les scénarios de test4 Configurer l’environnement de test5 Implémenter les scénarios6 Exécuter les tests et collecter les résultats7 Analyser, optimiser et rejouer les tests

Tests de performances Damien Raude-Morvan 17/66

Page 18: Tests de performances

Performance ? Méthodologie Outils Optimisation

Identifier l’environnement de test

Table des matières

1 Performance ?

2 MéthodologieIdentifier l’environnement de testIdentifier les critères d’acceptationPréparer et concevoir les scénarios de testConfigurer l’environnement de testExécuter les tests et collecter les résultatsAnalyser, optimiser et rejouer les tests

3 Outils

4 OptimisationTests de performances Damien Raude-Morvan 18/66

Page 19: Tests de performances

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 ?)

EssentielSans connaitre l’application et les composants, il est impossible defaire une campagne de tests !

Tests de performances Damien Raude-Morvan 19/66

Page 20: Tests de performances

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 lecomportement de l’application à tester ?

Load-Balancer ?Cache distribué ?Equipement réseaux ?Espace de stockage ?

EssentielAvoir un environnement de test identique à la production etautonome (sans autres tests).

Tests de performances Damien Raude-Morvan 20/66

Page 21: Tests de performances

Performance ? Méthodologie Outils Optimisation

Identifier les critères d’acceptation

Table des matières

1 Performance ?

2 MéthodologieIdentifier l’environnement de testIdentifier les critères d’acceptationPréparer et concevoir les scénarios de testConfigurer l’environnement de testExécuter les tests et collecter les résultatsAnalyser, optimiser et rejouer les tests

3 Outils

4 OptimisationTests de performances Damien Raude-Morvan 21/66

Page 22: Tests de performances

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’uneapplication web, temps avant que l’utilisateur puisseeffectuer 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

Page 23: Tests de performances

Performance ? Méthodologie Outils Optimisation

Identifier les critères d’acceptation

Définir ses critères d’acceptation

En théorieLes critères choisis doivent être documentés avant la conception.

En pratiqueCes critères n’ont pas été définis à l’avance et sont évalués enurgence avant une livraison.

Temps de réponse problématique du point de vue utilisateurConcurrence d’accès / débit problématique du point de vue

fonctionnelUtilisation des resources problématique du point de vue système /

production

Tests de performances Damien Raude-Morvan 23/66

Page 24: Tests de performances

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 (parrapport 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 del’application.Spécifier la valeur nomimale et la valeur maximale

Tests de performances Damien Raude-Morvan 24/66

Page 25: Tests de performances

Performance ? Méthodologie Outils Optimisation

Préparer et concevoir les scénarios de test

Table des matières

1 Performance ?

2 MéthodologieIdentifier l’environnement de testIdentifier les critères d’acceptationPréparer et concevoir les scénarios de testConfigurer l’environnement de testExécuter les tests et collecter les résultatsAnalyser, optimiser et rejouer les tests

3 Outils

4 OptimisationTests de performances Damien Raude-Morvan 25/66

Page 26: Tests de performances

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 validerglobalement la cohérence de l’infrastructure (warm test)Vérifier que le scénario enregistré couvre bien les mêmesactions que sa documentation

EssentielChaque étape du scénario doit être précisemment décrite afin depermettre sa reproduction à l’identique.

Tests de performances Damien Raude-Morvan 26/66

Page 27: Tests de performances

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 comptesutilisateurs, profils, produits)Ajouter de l’aléa dans le déroulement (temps d’attente entrechaque page)Découper le scénation afin de pouvoir le réutiliser

EssentielL’objectif n’est pas (plus ?) d’effectuer la recette fonctionnelle del’application

Tests de performances Damien Raude-Morvan 27/66

Page 28: Tests de performances

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éesde tests. Il faut de la volumétrie :

Un test de charge sur une base de données presque vide n’aaucun sensDans la vraie vie, la base de données de votre application varapidement se remplir

Tests de performances Damien Raude-Morvan 28/66

Page 29: Tests de performances

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 lestests.Revenir à un état "propre" à la fin de tests Indempotent Tests.

Tests de performances Damien Raude-Morvan 29/66

Page 30: Tests de performances

Performance ? Méthodologie Outils Optimisation

Configurer l’environnement de test

Table des matières

1 Performance ?

2 MéthodologieIdentifier l’environnement de testIdentifier les critères d’acceptationPréparer et concevoir les scénarios de testConfigurer l’environnement de testExécuter les tests et collecter les résultatsAnalyser, optimiser et rejouer les tests

3 Outils

4 OptimisationTests de performances Damien Raude-Morvan 30/66

Page 31: Tests de performances

Performance ? Méthodologie Outils Optimisation

Configurer l’environnement de test

Mesurer, mesurer, mesurer 1/2

Mettre en place des agents de mesures sur chaquesous-systèmeVérifier que les métriques mesurées sont validesConnaitre l’impact des agents de mesures sur les performancesPrivilégiez la réalisation de calculs à posteriori plutôt quedurant le test

EssentielSans outils de monitoring de la plateforme cible, un test deperformance ne sert à rien !

Tests de performances Damien Raude-Morvan 31/66

Page 32: Tests de performances

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éseauL’activité et l’occupation des disquesL’occupation mémoireL’occupation du processeur (en %)

EssentielIl faut bien connaitre la signification de chaque métrique !

Tests de performances Damien Raude-Morvan 32/66

Page 33: Tests de performances

Performance ? Méthodologie Outils Optimisation

Exécuter les tests et collecter les résultats

Table des matières

1 Performance ?

2 MéthodologieIdentifier l’environnement de testIdentifier les critères d’acceptationPréparer et concevoir les scénarios de testConfigurer l’environnement de testExécuter les tests et collecter les résultatsAnalyser, optimiser et rejouer les tests

3 Outils

4 OptimisationTests de performances Damien Raude-Morvan 33/66

Page 34: Tests de performances

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 fautvérifier

Les métriques renvoyées par les agents de mesures par rapportaux limites du systèmeLe niveau d’erreur du point de vue applicatifLe 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 devérifier ses paramètres sur un périmètre réduit.

Tests de performances Damien Raude-Morvan 34/66

Page 35: Tests de performances

Performance ? Méthodologie Outils Optimisation

Analyser, optimiser et rejouer les tests

Table des matières

1 Performance ?

2 MéthodologieIdentifier l’environnement de testIdentifier les critères d’acceptationPréparer et concevoir les scénarios de testConfigurer l’environnement de testExécuter les tests et collecter les résultatsAnalyser, optimiser et rejouer les tests

3 Outils

4 OptimisationTests de performances Damien Raude-Morvan 35/66

Page 36: Tests de performances

Performance ? Méthodologie Outils Optimisation

Analyser, optimiser et rejouer les tests

Comprendre les résultats

Trouver les patterns d’utilisation qui entraine un dépassementde critères d’acceptationCorréler les mesures de temps de réponses et les métriquesenregistrées sur le serveurDécouper le scénario de test et le reproduire jusqu’àdéterminer précisemment le composant incriminé (idéalementsur la même plateforme)

Tests de performances Damien Raude-Morvan 36/66

Page 37: Tests de performances

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 diagnosticsune comparaison avec la campagne N-1

Tests de performances Damien Raude-Morvan 37/66

Page 38: Tests de performances

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 pluslongsPréférer l’utilisation d’un quantile (90%)Attention au temps de réponse des erreurs qui peuvent être àzéro

Biais de perceptionSur les graphiques, attention à l’échelle et l’origine de l’axe desabscisses.Attention également au lissage des courbesFaire le bon choix de couleurs

Tests de performances Damien Raude-Morvan 38/66

Page 39: Tests de performances

Performance ? Méthodologie Outils Optimisation

Table des matières

1 Performance ?

2 Méthodologie

3 OutilsPour mesurer la consommationPour jouer des scénariosPour comprendre

4 Optimisation

Tests de performances Damien Raude-Morvan 39/66

Page 40: Tests de performances

Performance ? Méthodologie Outils Optimisation

Choisir les bons outils

Tests de performances Damien Raude-Morvan 40/66

Page 41: Tests de performances

Performance ? Méthodologie Outils Optimisation

Pour mesurer la consommation

Table des matières

1 Performance ?

2 Méthodologie

3 OutilsPour mesurer la consommationPour jouer des scénariosPour comprendre

4 Optimisation

Tests de performances Damien Raude-Morvan 41/66

Page 42: Tests de performances

Performance ? Méthodologie Outils Optimisation

Pour mesurer la consommation

VisualVM

Cet outil peut être utilisé à la fois en phase de développement etde production.

Permet de proposer une vue graphique sur les outils mis àdisposition par la JVMPermet de prendre des captures mémoires (Heap Dump)Graphiques sur l’utilisation mémoire, CPU, les threadsMétriques sur le comportement du Garbage Collector de laJVMPropose des plugins pour "aller plus loin"

Tests de performances Damien Raude-Morvan 42/66

Page 43: Tests de performances

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éessur 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 pluginscomplémentaires (Oracle, NFS, MySQL...)Il permet de centraliser vers un seul et unique serveur les statsLes statistiques sont consultables via une simple page web

Exemple : http://munin.ping.uio.no/

Tests de performances Damien Raude-Morvan 43/66

Page 44: Tests de performances

Performance ? Méthodologie Outils Optimisation

Pour jouer des scénarios

Table des matières

1 Performance ?

2 Méthodologie

3 OutilsPour mesurer la consommationPour jouer des scénariosPour comprendre

4 Optimisation

Tests de performances Damien Raude-Morvan 44/66

Page 45: Tests de performances

Performance ? Méthodologie Outils Optimisation

Pour jouer des scénarios

JMeter : présentation

Un outil assez complet et libre :Outil sous licence Apache 2.0Permet d’utiliser différents protocoles (HTTP, SOAP, LDAP,FTP)Permet d’enregistrer des scénarios via un système de proxyHTTPPas d’outils de monitoring et assez peu de rapports

Paradigme1 thread = 1 utilisateur

Tests de performances Damien Raude-Morvan 45/66

Page 46: Tests de performances

Performance ? Méthodologie Outils Optimisation

Pour jouer des scénarios

JMeter : concepts

Test plan contient le scénario de test (enregistré sur disquedans un format XML)

Workbench est une zone de travail temporaire non persistéeThread Group représente un pool d’utilisateurs

Sampler représente la description d’une requête effectuée versle serveur

Logic Controller permet d’ajouter une surcouche de logique etainsi un ordre aux Samplers

Listener permet de visualiser, sauver ou lire les mesures dutest

Tests de performances Damien Raude-Morvan 46/66

Page 47: Tests de performances

Performance ? Méthodologie Outils Optimisation

Pour jouer des scénarios

JMeter : interface

Voici un exemple de scénario de test simpliste qui contient un seulThread Group.

IHM...Il est possible d’utiliser entièrement JMeter sans IHM (et ainsid’obtenir de meilleures performances)

Tests de performances Damien Raude-Morvan 47/66

Page 48: Tests de performances

Performance ? Méthodologie Outils Optimisation

Pour jouer des scénarios

Gatling : présentation

Outil sous licence Apache 2.0Plutôt que d’utiliser un format de stockage XML, avec Gatlingle test est également du code (Scala)Propose un DSL afin de décrire les actions à réaliser par lescénarioDispose également d’un "Recorder" qui permet d’utiliser unproxy HTTP depuis son navigateur

ParadigmeUtilisation du pattern Actor (via Akka) (donc 1 thread != 1utilisateur)

Tests de performances Damien Raude-Morvan 48/66

Page 49: Tests de performances

Performance ? Méthodologie Outils Optimisation

Pour jouer des scénarios

Gatling : concepts

Scenario un ensemble d’instruction à suivre (décrites via leDSL)

Simulation contient plusieurs scénarios, avec pour chacun lenombre d’utilisateur

Feeders classe qui permet d’injecter des données dans lescénario

Checks description des tests que doit effectuer Gatling afinde déterminer qu’une instruction est OK

Tests de performances Damien Raude-Morvan 49/66

Page 50: Tests de performances

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

Page 51: Tests de performances

Performance ? Méthodologie Outils Optimisation

Pour jouer des scénarios

Autres outils

Des outils propriétaires existent :HP Mercury LoadRunnerNeotys Neoload

Ils permettent de prendre en charge plus de protocoles, de simulerun véritable navigateur (Javascript) ou encore d’obtenir desrapports automatisés très simplement.

Tests de performances Damien Raude-Morvan 51/66

Page 52: Tests de performances

Performance ? Méthodologie Outils Optimisation

Pour comprendre

Table des matières

1 Performance ?

2 Méthodologie

3 OutilsPour mesurer la consommationPour jouer des scénariosPour comprendre

4 Optimisation

Tests de performances Damien Raude-Morvan 52/66

Page 53: Tests de performances

Performance ? Méthodologie Outils Optimisation

Pour comprendre

MAT

Le Garbage Collector Java = libère de la mémoire un objetJava sans référenceUn vidage du tas (Heap Dump) Java est une image du graphed’objets Java complet à un instant T.

MAT permet d’ouvrir un Heap Dump et :de visualiser les références aux objetsd’affectuer des requêtes (SQL-like : OQL)de naviguer dans le graph

MAT Eclipse permet ainsi d’identifier les éventuelles fuites mémoire.

Tests de performances Damien Raude-Morvan 53/66

Page 54: Tests de performances

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

Page 55: Tests de performances

Performance ? Méthodologie Outils Optimisation

Mauvaise utilisation de la base de données

Quelques exemples de mauvaises pratiques :Indexes manquants sur certains clefsRécupération de l’ensemble des colonnes pour effectuer uncalcul simpleMauvais 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éduresstockées et JOIN en SQL)

A retenirApprendre le fonctionne de sa base de données et observer lecomportement des requêtes (explain plan).

Tests de performances Damien Raude-Morvan 55/66

Page 56: Tests de performances

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’appelsunitairesNe pas faire de sur-conception : un service pour une seuleapplication ?

A retenirEviter autant que possible les Round Trip réseau : pratiquer laméthode YAGNI

Tests de performances Damien Raude-Morvan 56/66

Page 57: Tests de performances

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 prennentbeaucoup de tempsDes transactions en base de données très longuesUtilisation abusive de structures de données synchronized(Hashtable, Vector, StringBuffer)

A retenirLes blocks synchronized sont l’ennemi de la performance.Envisager des approche par le pattern Actor.

Tests de performances Damien Raude-Morvan 57/66

Page 58: Tests de performances

Performance ? Méthodologie Outils Optimisation

Mauvaises performances du coeur technologique

Il arrive parfois qu’un composant soit :utilisé sans tenir compte des recommandations de ladocumentationutilisé pour autre chose que ce à quoi il était prévuré-écrit en pensant faire mieux

A retenirNe pas réinventer la roue, il y a de forte chance de faire moins bienque le voisin !

Tests de performances Damien Raude-Morvan 58/66

Page 59: Tests de performances

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 (fortepression sur le GC)beaucoup d’objets persistants (OutOfMemoryError)des fuites mémoires (difficile à détecter)

A retenirUtiliser un profiler à différentes phases du cycle de vie del’application pour déteminer les points chauds.

Tests de performances Damien Raude-Morvan 59/66

Page 60: Tests de performances

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 aucunintérêtAvoir un ratio de succès trop bas sur le cache (données trèsdynamiques)Utiliser des locks pour implémenter son cache...

A retenirUtiliser un profiler à différentes phases du cycle de vie del’application pour déteminer les points chauds.

Tests de performances Damien Raude-Morvan 60/66

Page 61: Tests de performances

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 CPUCouteux 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 DOMLors de transformation XSLT, essayer de compiler les feuillesde stylesEviter de relire plusieurs fois les mêmes documents !

Tests de performances Damien Raude-Morvan 61/66

Page 62: Tests de performances

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 surmon frontalLe pool de connexions SQL : nombre de connexion vers leSGBDLes paramètres de la JVM : mémoire, GC, traitement deserreursLes éléments spécifiques à votre application

A retenirTravail permanent de monitoring pour adapter la configuration àl’utilisation de l’application.

Tests de performances Damien Raude-Morvan 62/66

Page 63: Tests de performances

Performance ? Méthodologie Outils Optimisation

Logging excessif

Comme pour le cache, les logs peuvent être à la fois l’ami etl’ennemi :

Il est important d’obtenir des logs lors d’un test deperformancesL’activation des logs entraine une perte de performance :manipulation de String + écriture sur disque (sync)

A retenirUtiliser un framework qui permet d’utiliser des varargs plutôt quede la concaténation.

Tests de performances Damien Raude-Morvan 63/66

Page 64: Tests de performances

Annexe

Pour aller plus loin

Pour aller plus loin I

Charlie Hunt, Binu JohnJava Performance.Prentice Hall, 2011. ISBN 978-0137142521Joshua BlochEffective Java (2nd Edition).Addison-Wesley, 2008. ISBN 978-0321356680

Ian MolyneauxThe Art of Application Performance Testing.O’Reilly Media, 2009. ISBN 978-0-596-52066-3

Tests de performances Damien Raude-Morvan 64/66

Page 65: Tests de performances

Annexe

Pour aller plus loin

Pour aller plus loin II

WikipediaSoftware performance testinghttp://en.wikipedia.org/wiki/Software_performance_testing

http://decrypt.ysance.com/2012/09/tests-de-performances-partie-1-preparation-et-analyse/

Claude FalguiereMesurer les performances avec JMeter.http://fr.slideshare.net/claude.falguiere/mesurer-les-performances-avec-j-meter-cours-du-soir-valtech-25-mars-2010

Tests de performances Damien Raude-Morvan 65/66

Page 66: Tests de performances

Annexe

Pour aller plus loin

Merci

Merci de votre attention.Ces transparents sont sous licence CC-BY-SA-3.0http://creativecommons.org/licenses/by/3.0/fr/.

Tests de performances Damien Raude-Morvan 66/66