IBM Monitoring and Diagnostic Tools – Health Center est un produit de diagnostic et de monitoring d’une application java ou node.js côté serveur (comme WebSphere par exemple).

IBM Monitoring and Diagnostic Tools - Health Center

Il permet de détecter les fuites mémoires et les profondeurs d’appels de méthode dans le but d’optimiser les temps d’exécution ou d’optimiser le garbage collecteur.

Cet exemple s’applique aux produits suivants :

  • WebSphere 8.5 Windows
  • Eclipse
    • Version : 2020-12 (4.18.0)
    • Build id : 20201210-1552
  • Plugin Eclipse IBM Health Center 3.0.12.201611250914
Installation et configuration de l’outil

1. Installez le plugin IBM Health Center via le market place d’Eclipse

2. Lancez Eclipse MarketPlace, menu Help

3. Recherchez le produit IBM Health Center (pour Eclipse 2020 utilisez la version 3.0.12)

4. Cliquez sur « Install »

5. Confirmez toutes les étapes d’installation puis choisissez de redémarrer Eclipse pour terminer l’installation.

6. Ouvrez la perspective « Health Center Status »

7. Votre écran est ainsi le suivant :

8. En bas choisissez l’onglet « Connection »

9. Cliquez sur menu => File =>

10. Cliquez sur Next

11. Cliquez sur les services d’administration :

12. Cliquez sur connecteur JMX :

13. Activez le connecteur JMX

14. Dans les propriétés de la JVM ajoutez la ligne :

-agentlib:healthcenter -Xtrace:output=perfmon.%p.out -Xhealthcenter:port:1999,level:full,transport=jrmp

15. Ajoutez la variable suivante :

Dcom.ibm.java.diagnostics.healthcenter.agent.port=1999

16. Renseignez le port 1999

17. Renseignez les informations de connexion puis cliquez sur Next

  • Ajoutez une règle de pare feu Windows si le port ne répond pas
  • Choisissez le JVM trouvé

18. Lancez des appels à l’application Web. Les données se collectent et les rapports consultables dans les différents écrans de la perspective.

Analyse des résultats
Après analyse des traces obtenues :

Des appels à la couche persistance sur une méthode de listing indique des objets chargés par défaut avec un fort niveau de dépendance parent => enfant n => enfant n+1….

Le remplacement de la requête JPA par une requête native avec des jointures explicites et faites par le moteur de données au lieu de la couche JPA ont permis de diviser par 5 le temps d’exécution de la méthode.

Autres articles qui peuvent vous intéresser

Charger plus de messages