Articles avec le tag ‘tomcat’

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 »

Optimiser une application JEE : mesurer l’impact sur un cas pratique (2ème partie)

2ème volet de notre analyse de performance :

Après avoir revu les niveaux de logs de notre serveur d'application en 1ère partie d'analyse et en avoir mesuré l'impact du correctif sur le temps de réponse, il est maintenant temps de s'approcher de notre objectif initial : rendre stable l'application avec une moyenne de 1000 utilisateurs actifs simultanés.

On va donc augmenter notre charge et passer de 40vu à 300vu :

Reprenons notre scénario JMeter, augmentons le nombre de threads de 40 à 300 avec un ramp-up de 1 utilisateur supplémentaire toutes les 2 secondes (ce qui laisse suffisamment de temps au serveur pour gérer ses nouvelles allocations de Context Http) :

Lire la suite de cette entrée »

Optimiser une application JEE : mesurer l’impact sur un cas pratique (1ère partie)

Depuis un certain temps, on vous propose plusieurs articles allant d'une démo avancée d'un outil de performance, jusqu'à des mises en situation poussant l'analyse de fuites mémoires dans ses retranchements.

Nous allons vous proposer un cas pratique, décrivant une intervention d'audit de performance, l'histoire d'une application critique pour laquelle on déplore de gros problèmes de performances.

Partant de ce postula, nous allons tenter de vous proposer une approche méthodique par laquelle nous aborderons chaque étape comme des étapes significatives dans l'augmentation de gains en performance.

Lire la suite de cette entrée »

Révision pour l’atelier « Web Caching » chez Xebia

1 - Introduction


Pour ceux qui n'ont pas pu aller à la première séance de l'atelier « Web Caching, mod_cache, Varnish, Amazon CloudFront CDN et S3 » organisée par Xebia, voilà de quoi réviser avant d'aller aux prochaines séances.

Nous n'aborderons que la théorie, car la pratique sera faite lors de l'atelier.

Lire la suite de cette entrée »

Optimiser Tomcat : les bests practices – Part 2

 

Après avoir abordé les problématiques liées à la gestion de la Heap et des threads, voici une liste des paramètres principaux restants à aborder. (liste non-exhaustive évidemment !)

Le Tuning HTTP et TCP

Avant de s’attaquer à ces améliorations, il est important de comprendre et d'agir en fonction des connectors utilisés par votre serveur :

Blocking IO Connector

Lire la suite de cette entrée »

Optimiser Tomcat : les bests practices – Part 1

Cet article devrait vous donner un petit coup de pouce sur les principes d'optimisation d'un serveur d'application, ici Tomcat.

Avant d'aborder les quelques points techniques, il est indispensable d'avoir à l'esprit que quel que soit la qualité d'implémentation de votre application, il est indispensable de bien définir les attentes (NFR) de votre infrastructure.

En effet pour optimiser un serveur ou un cluster,  il faut avant tout connaitre le type d'utilisation que l'on va attendre de lui. Ainsi la configuration d'un serveur qui va traiter des gros volumes d'entrée avec des traitements simples, ne ressemblera en rien à celle d'un serveur encaissant des gros traitements pour une volumétrie d'utilisation limitée !

Quelques conseils majeurs avant même d'entrer dans le vif du sujet :

Lire la suite de cette entrée »

Mots-clés
RSS Feed