Articles avec le tag ‘fuite mémoire’

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 »

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 »

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

Difficile lorsqu'on se retrouve dos au mur face à des problématiques de performance qui poussent la réflexion plus loin que des simples allocations de ressources.

J'insiste comme à chacun de mes discours liés de près à la performance, pour bien rappeler que chaque problème a une ou des origines, et ne représente pas un caractère aléatoire voire para-normal comme certains pourraient s'en convaincre !

Enfin,  une solution devra et sera trouvée pour chaque problème.

Dans le cas ci-dessous, je vais vous détailler un retour d'expérience chez l'un de nos gros clients dont l'architecture JEE nécessitaient systématiquement des redémarrages de serveurs pour palier à des fuites mémoires, et donc au final faisant face avec une certaine impuissance disons le :-).

Fuites mémoires identifiées sur des JVM Oracle JRockit de serveurs Weblogic 10.

Ce post se découpera en 2 parties :

  • 1ère partie : rappel sur le comportement des JVM et sur les différents types de fuites mémoires
  • 2ème partie : ma mise en situation détaillant outil et méthodologie pour atteindre l'objectif d'identifier la fuite, la comprendre et la corriger !

Lire la suite de cette entrée »

Mots-clés
RSS Feed