Tests de performances

5,168 views

Published on

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

Published in: Technology
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,168
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
170
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

Tests de performances

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 40. Performance ? Méthodologie Outils Optimisation Choisir les bons outils Tests de performances Damien Raude-Morvan 40/66
  41. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×