Archives d’un auteur

Présentation d’AppDynamics

logoappdynamics
Dans le milieu de la performance,  les principes « Ne devinez pas, mesurez », « Diagnose before Cure ! », « Measure, Don't Guess ! » sont de rigueur.

Il existe même un anti pattern nommé « Shot in the dark ».

Tous ces principes nous disent qu’il est important de superviser notre environnement de test lors de la réalisation d’un test de performance. Et pas seulement lors d’un test de performance, car comme tout test, ce n’est qu’une simulation avec ses imperfections (couverture de test incomplète, plate-forme de test non iso prod, etc.) et donc il est important de superviser son environnement de production sous peine de mauvaises surprises.

Pour réaliser cette tâche, de nombreux outils existent comme Nagios, Zabbix, Quest FogLight, Centreon, etc.

Plus particulièrement les APM (Application Performance Monitoring).

Dans le monde Java, les plus connus de nos jours sont Compuware Dynatrace, NewRelic et AppDynamics.

Dans cet article nous allons voir une partie des possibilités offertes par AppDynamics pour la partie Java.

Lire la suite de cette entrée »

Les tests de charge à caractère technique (robustesse) sont ils importants ?

Introduction

Mettons-nous d’abord d’accord sur la définition de « tests de charge à caractère technique (ou test de robustesse) ».
Il s’agit de tester un système en mode dégradé : ralentissement de l'application, un des serveurs est non disponible, réseau saturé, panne mémoire, disque plein, réseau défaillant, etc. sous forte charge.
Maintenant que nous sommes d’accord, commençons.

Votre application a réussi tous les tests, qu’ils soient unitaires, d’intégration, fonctionnels ou de charge et nous voilà enfin prêts à la mettre en production.
Mais vous vous posez toujours des questions sur comment va réagir votre application en cas de fonctionnement dégradé.

Les délais font que l’application est mise en production sans la réalisation de ces tests.
Deux jours plus tard, après une campagne de publicité qui vous a apporté beaucoup de nouveaux utilisateurs, on vous réveille à deux heures du matin pour que vous veniez d’urgence au bureau, car l’application est dans un état instable.
Dommage, car des tests de robustesse auraient sûrement pu vous éviter ce désagrément.

Vous ne me croyez pas, vous avez raison.

Et si je vous dit que lors de mes missions j'ai rencontré :

  • des crashs de l'application à cause d'un consommateur JMS non démarré ;
  • des crashs de l'application à cause d'un load balancer mal configuré ;
  • des problèmes de répartition de charge dans un cluster d'Apache ActiveMQ après l'arrêt/relance d'un noeud.

Toujours pas. Et si je vous dit que ces problèmes sont arrivés dans des grosses structures sur des projets plus ou moins gros et avec des gens compétents ?

Bon vous ne me laisser plus le choix, nous allons voir un exemple qui vous prouvera (enfin je l'espère) l'importance de ces types de tests.

Mais avant cela comment allez vous reproduire ce bug qui est arrivé en environnement de production sur votre environnement de test ?

Avec un test de robustesse bien sûr 😉

Lire la suite de cette entrée »

Voici la présentation « Apache JMeter, Java et Groovy sont sur un bateau » présentée au Paris JUG

logoparisjugnvlleversion
Pour ceux qui n'ont pas pu venir au Paris JUG, voilà ma présentation « Apache JMeter, Java et Groovy sont sur un bateau ».

Que ce soit d’évaluer le niveau de sécurité d’un captcha, chiffrer le coût en performance d’activation des logs GC d’une JVM ou d’activer/désactiver des fonctionnalités de notre application par JMX lors d’un test, l’outil de test de charge Apache JMeter offre un spectre de fonctionnalités avancées digne des meilleures solutions éditeurs. Venez découvrir les possibilités infinies qu’offre Apache JMeter associé à du Java et du Groovy.

Lire la suite de cette entrée »

Oups j’ai oublié d’activer les logs GC

1 - Introduction

Votre application vient enfin d’être mise en production après la phase de test (fonctionnel, etc.). Les tests ont été concluant, vous êtes donc serein.

Trois jours après, une alerte remonte sur la consommation mémoire élevée. Pour résoudre ce problème, vous faites appel à un spécialiste qui vous demande les logs GC.

Malheureusement ils n’ont pas été activés et il n’est pas possible d’arrêter le serveur pour ajouter les paramètres à la JVM (en particulier pour -XX:+PrintGCDetails) qui nous permettraient d’avoir ces fameux logs.
Lire la suite de cette entrée »

La supervision facile avec JMXTrans, collectd et Graphite

1 - Introduction

jmxUne des étapes d’une campagne de test de charge est de récupérer un certain nombre de métriques.
Plusieurs solutions sont possibles. L’une d’elles dans le monde Java, est d’utiliser JMX pour récupérer un certain nombre de métriques applicatives de la JVM, du serveur d’application, etc.
De nombreux outils permettent de faire cela, et nous allons nous focaliser sur  JMXTrans qui est puissant et simple à installer.
Afin de récupérer les statistiques systèmes (consommation processeur/mémoire, etc.) nous utiliserons collectd.
Enfin, pour afficher l'ensemble de ces métriques, nous utiliserons Graphite.

Lire la suite de cette entrée »

Voici la présentation « Gestion des index SQL : Soyez AWARE ! » présentée au Poitou Charentes JUG


Pour ceux qui n'ont pas pu venir au Poitou Charentes JUG , voilà ma présentation « Gestion des indexs SQL : Soyez AWARE ! ».

Vous y apprendrez les bonnes pratiques sur les index SQL.
Pour cela, nous aborderons un minimum de théorie nécessaire, suivie d’un quiz afin de découvrir les bonnes pratiques d’utilisation des index.

Nous finirons par voir comment mettre en place tout cela dans un contexte applicatif.

Lire la suite de cette entrée »

Voici la présentation « Test de charge avec Apache JMeter » présentée au YAJUG

Pour ceux qui n'ont pas pu venir au YAJUG et qui ne veulent pas attendre la vidéo, voilà ma présentation « Test de charge avec Apache JMeter » en français.

Vous y apprendrez comment mettre en place une campagne de test de charge à l'aide de JMeter.
Pour cela, nous verrons comment générer une charge réaliste et controllée.
Puis la mise en place d'une supervision efficace à l'aide de JMXTrans.
Et nous finirons sur l'analyse des résultats à l'aide de QlikView.
En bonus on verra quelques cas d'utilisations avancées de JMeter.

OutOfMemoryError Java, que faire ?

Introduction

Un des atouts (ou inconvénient pour certains) de Java est qu'il n'y a pas à s'occuper de la libération de la mémoire grâce au Ramasse Miettes (Garbage Collector).

Malgré cela, nous ne sommes pas à l’abri de fuites mémoires (la fameuse exception OutOfMemoryError).

Pour pallier à ce problème, le moyen le plus simple est de faire un arrêt/relance de l'application. Solution que je déconseille d'utiliser, car en plus du problème de performance, s'ajoute le problème de disponibilité de l'application pour les clients.

Plus globalement, sans vouloir être puriste, nous n'avons pas d'autres choix que de corriger l’OutOfMemoryError, que cela soit un mauvais paramétrage de la JVM et/ou une fuite mémoire.

L'objectif de cet article est de comprendre comment apparaissent les OutOfMemoryError.
Lire la suite de cette entrée »

Interview de Stéphane Hoblingre – développeur du projet JMeter Plugins

Après l'interview des deux développeurs , Milamber et Philippe Mouawad appartenant au projet Apache JMeter, voici maintenant celui de Stéphane Hoblingre, actuellement développeur et committer du projet JMeter Plugins.

Lire la suite de cette entrée »

Pourquoi faut-il faire attention au nombre d’index SQL

1 - Introduction

Une solution simple pour augmenter les performances au niveau base de données est de maîtriser la gestion des index. Vous avez sûrement lu ou déjà expérimenté l'impact de l'ajout d'un index sur les performances d'une requête.

Malheureusement, il faut bien être sensibilisé sur le nombre d'index sur une table car ils ont un coût, et en particulier pour les opérations UPDATE, DELETE et INSERT INTO.

Afin de démontrer ce coût, nous allons utiliser le « couteau suisse » de JMeter associé à Benerator.
Lire la suite de cette entrée »

Mots-clés
RSS Feed