RSS
 

Optimiser une application JAVA – Partie 1

06 juin

Avec l’arrivée d’une montée en charge, ou face à une volumétrie croissante, les applications Java peuvent rencontrer des problèmes de performance. A ce moment se pose la question de l’optimisation. Comment optimiser efficacement ?

Pourquoi et quand optimiser ?

  • Les temps d’exécution / de réponses sont devenus trop longs
  • Les ressources de la machine sont trop sollicités : CPU, mémoire ou I/O
  • La charge de l’application augmente significativement

Les étapes de l’optimisation

Une optimisation se réalise de manière cyclique selon les étapes suivantes :

  1. Identifier les processus les plus pénalisants
  2. Cibler et réaliser une optimisation
  3. Vérifier le gain obtenu
  4. Si le gain obtenu est satisfaisant, l’optimisation est terminée. Sinon retour à l’étape 1, en cherchant le nouvel élément le plus pénalisant.

Prérequis

Avant de commencer tout chantier, il est important de préparer un cas de tests rejouable afin de mesurer et comparer les résultats de l’optimisation. Ce test permettra initialement de mesurer les performances avant optimisation, puis il servira à mesurer et valider l’optimisation.

Des tests de non régression seront également un outil précieux pour vérifier que les optimisations n’ont pas engendrées d’effet de bord indésirable.

Estimer les gains d’une optimisation

La difficulté dans un chantier d’optimisation est de ne pas connaître d’avance précisément le gain obtenu. Par conséquent, il est difficile de déterminer si le gain d’une optimisation mérite le coût de sa réalisation. La première étape avant tout chantier est donc d’analyser l’état de l’application :

  • Quels sont les processus critiques – en terme de performance – de l’application ?

    Il s’agit ici de trouver les méthodes dont les temps d’exécution sont les plus longs, ou les plus bloquants.

  • Quels en sont les causes ?

    Les causes de lenteurs peuvent être nombreuses : trop de requêtes SQL, contention de threads, etc.

Cette première phase doit permettre de lister les points les plus pénalisant, et d’estimer les gains et le coût de l’optimisation. Bien qu’on ne puisse pas déterminer par avance le gain précis qu’une optimisation pourra apporter, cette étape doit nous permettre au moins d’en avoir une idée sur les axes d’amélioration. Par exemple, si on constate qu’une méthode monopolise à elle seule plus de 50% du temps, alors on sait d’avance que son optimisation sera le gain le plus important.

 

Nous détaillerons les étapes d’optimisation dans un prochain article…

 

Tags: , , ,