Archives d’un auteur

Performance des caches avec Ehcache & Terracotta

Introduction aux caches distribués ... avec Terracotta

 

Ehcache_terracottaLe principe d'un cache logiciel est de permettre à une application d'éviter de répéter des appels de méthodes coûteuses (temps d’exécution ou nombre d'appels).

Le cache se déclenche  en stockant les résultats dès les 1er appels, directement en cache mémoire pour une meilleure accession à ces valeurs lors des appels suivants (exemple : un appel en base de données)

Terracotta est un middleware Java de type NAM (Network Attached Memory) répondant entièrement à cette problématique.

Un NAM permet à plusieurs instances de serveurs mis en cluster, d'accéder aux mêmes graphes d'objets au sein d'une mémoire virtuelle partagée.

Terracotta reste ni plus ni moins qu'un système de cache (EhCache) déployé dans un environnement distribué.

Lire la suite de cette entrée »

Middleware scalable : clusteriser Glassfish 3.1 avec failover et load balancing

glassfish_clusteredLes applications d'aujourd'hui obligent les architectes à relever plusieurs défis lors de la conception d'architectures évolutives.

Particulièrement lorsque ces applications doivent être capables d'assurer une haute disponibilité 24/24 tout en absorbant un nombre croissant d'utilisateurs.

C'est pourquoi les études d'architectures évolutives doivent se faire en amont de tout projet.

L'objectif de cette réflexion va être d'anticiper la scalabilité du système (ajout de matériels et de briques logicielles) de façon à gérer la charge croissante d'activité de l'ensemble de nos applicatifs.

Lire la suite de cette entrée »

JMS Weblogic : concept et performance

OracleWebLogicLe constat est évident : comprendre les principes de l'architecture JMS offerte par Oracle ne se fait pas sans mal.  Choix d'architectures JMS multiples, orientées robustesse et scalabilité.
Un design complet, complexe également ... et qui peut s'avérer problématique si vous ne mettez pas en avant dès le départ vos contraintes de performance : haute disponibilité, QoS, volumétrie, durée de traitement, contexte transactionnel, SLA, TTL ...

J'espère pouvoir vous éclairer avec ce post, en vous proposant une synthèse balayant les principes les plus importants à retenir, avec comme toujours un vernis performance qui agrémente le tout !

Weblogic JMS design :

Présentation1

Lire la suite de cette entrée »

Optimiser une application JEE : mesurer l’impact sur un cas pratique (4ème et dernière partie)

Dernière partie : l'analyse mémoire.

Nous sommes désormais proches de notre objectif d'optimiser notre application pour la rendre robuste à 1000 utilisateurs connectés simultanément.

Notre précédent article faisait état d'une montée linéaire de l'allocation de la Heap malgré un nombre important de Minor GC ne libérant pas suffisamment de mémoire.

A ce stade de l'analyse, ce type de symptômes nous fait penser à une fuite mémoire. Nous allons nous assurer dans cet article du bon fonctionnement de notre mémoire Glassfish.

Lire la suite de cette entrée »

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

3ème partie de notre saga performance.

Lors de notre dernier article, nous avons pu "faire sauter les verrous" en augmentant le pool de threads qui nous limitait le nombre de traitements simultanés dans la montée en charge. Attardons nous maintenant sur la JVM.

Nous n'allons pas perdre de temps dans le fonctionnement d'une JVM plusieurs articles sauront vous le rappeler très simplement comme le chapitre 3 de cet article qui traite de l'overhead, ou bien celui plus spécifique du fonctionnement de la JVM d'IBM J9.

Partant de cela, allons voir un peu comment la notre préfigure ...

Commençons par activer le port JMX sur notre serveur Glassfish pour introspecter avec un outil de monitoring (plusieurs existent comme JConsole inclue dans le J2SE, VisualVM ...).

Lire la suite de cette entrée »

Aliecom sera aware … au Poitou Charentes JUG !

 

Le 21 Novembre, Aliecom au Poitou Charentes JUG

Une fois de plus, ce sera Antonio qui cette fois démontrera que Jean-Claude ne dit pas que des bêtises...  Et à défaut d'y aller, soyez patient, la vidéo arrivera dans la foulée.

 

Ici le lien de présentation sur le site du Poitou Charentes JUG

 

Avec un petit avis personnel sur cette présentation : une fois n'est pas coutume, on ne parlera pas de sujet en vogue comme le Big Data, le Map Reduce et autres frameworks à la mode ... mais simplement d'un sujet qui touche directement ou indirectement un bon nombre d'ingénieurs au quotidien,  et qui mérite donc de s'y (re)sensibiliser. Très didactique avec son approche des bonnes pratiques sous forme de Quiz !

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 »

Aliecom sera au YaJug 2012 !

Le 31 Octobre prochain, ne  ratez pas l'évènement Java à Luxembourg !!

Aliecom sera représentée par Antonio Gomes Rodrigues, qui interviendra avec la Java Duchess Claude Falguière  ainsi que Stéphane Landelle pour vous proposer une excellente présentation " Performance testing ".

Le sujet est passionnant, et le bouquet final concocté par Antonio devrait en surprendre plus d'un (essentiellement des démos sur des mises en pratique déjà vécues en conditions réelles) . L'originalité des exemples m'a personnellement bluffée (notamment la puissance du parseur QlikView et des options avancées de JMeter).

Un petit avant-goût du programme : YaJug

 

Performance testing with JMeter (French, slides in english) by Antonio Gomes Rodrigues : Comment mettre en place une campagne de test de charge à l'aide de JMeter ?

  • Nous verrons tout d'abord comment générer une charge réaliste et contrôlée sous JMeter
  • 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 vous seront présentés quelques cas d'utilisations avancées de JMeter.

Au programme : des démonstrations, retour d'expérience et un point sur les bonnes pratiques.

Venez nombreux pour nous permettre de partager nos expériences et de les améliorer !

Découvrir et isoler une fuite mémoire java – part 2

2. Le contexte

Comme décrit de manière rapide sur la 1ère partie du post,   je me retrouve donc confronté à un problème clairement identifié comme fuite mémoire chez l'un de nos clients.

Les outils de supervision des JVM des équipes d'exploitation remontant une consommation anormale de la Heap avec surtout des impacts très limitées du GC en terme de libération de mémoire (malgré un nombre important de FullGC).


Lire la suite de cette entrée »

Mots-clés
RSS Feed