jprofiler

39
halid ALLILI xpert technique java/jee http://www.allili.ne

Upload: khalid-allili

Post on 16-Apr-2017

356 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Jprofiler

Khalid ALLILIExpert technique java/jee http://www.allili.net

Page 2: Jprofiler

Objectifs

Page 3: Jprofiler

Pourquoi surveiller la JVMJProfiler : Outil de profilageModes de profilageConfiguration de sessionAnalyse des résultats

CPUMémoireThreadsBase de donnéesJEE

Sommaire

Page 4: Jprofiler

Pourquoi Surveiller la JVM

Page 5: Jprofiler

Pourquoi Surveiller la JVM : Temps de réponse

Exemple de méthodes de concaténation private static void concatString() { String s = ""; for (int i = 0; i < 100000; ++i) { s = s + "a"; } }

private static void concatStringBuilder() { final StringBuilder sb = new StringBuilder(); for (int i = 0; i < 100000; ++i) { sb.append("a"); } }

private static void concatStringBuffer() { final StringBuffer sb = new StringBuffer(); sb.setLength(0); for (int i = 0; i < 100000; ++i) { sb.append("a"); } }

Page 6: Jprofiler

Pourquoi Surveiller la JVM : Temps de réponse

Exécution des méthodes de concaténation

Temps de réponse

public static void main(final String[] args) { concatString(); concatStringBuffer(); concatStringBuilder(); }

Page 7: Jprofiler

Structure de la mémoire JVM

Fuite de la mémoireL’augmentation de la taille du Heap pouvant

aller jusqu'à un arrêt de la JVM

Pourquoi Surveiller la JVM : Mémoire

Page 8: Jprofiler

Exemple de threads10 threads exécutés en parallèle

Pourquoi Surveiller la JVM : CPU

public static void main(final String[] args) {for (int i = 0; i < 10; i++) {new Thread(new Runnable() {@Overridepublic void run() {System.out.println("Thread " + Thread.currentThread().getName() + " started");double val = 10;

for (int t = 0; t < 100000; t++) {System.out.println(Math.atan(Math.sqrt(Math.pow(val, 10))));

}}}).start();}}

Page 9: Jprofiler

Charges CPU

Pourquoi Surveiller la JVM : CPU

Page 10: Jprofiler

Charges CPU

Pourquoi Surveiller la JVM : CPU

Page 11: Jprofiler

JProfiler : Outil de profilage

Produit ej-technologieshttp://www.ej-technologies.com/products/jprofiler/

overview.html

ALL-IN-ONE java profilerConnexion à la JVM

Profilage offline supporté

Aperçu sur le contenu de la JVM Heap dump

Dégradation moins gouteuse

Page 12: Jprofiler

JProfiler : Outil de profilage

Support JEE complet

Plugin pour IDE

Page 13: Jprofiler

JProfiler : Outil de profilage

GUI Intuitif

Page 14: Jprofiler

JProfiler : Modes de profilage

Mode   attaché Certaines fonctionnalités ne sont plus disponiblesPlus couteux : temps et ressources

Mode profilage au démarrage Utilisation d’un agent de profilage jprofilertiLa JVM attend une connexion de JProfilerConfiguration rarement manuelle

Page 15: Jprofiler

JProfiler : Modes de profilage

Mode profilage préparéJProfiler se connecte à la JVM après son

démarrage : nowaitToutes les fonctionnalités sont disponiblesMoins couteux

Mode offline Profilage automatiséActivation des triggersCréation des snapshots de la JVM

Page 16: Jprofiler

Configuration de session

Wizard de création de connexion

Page 17: Jprofiler

Wizard de création de connexion

Configuration de session

Page 18: Jprofiler

Instrumentation dynamiqueInjection des bytes codes dans les méthodes

des classes profiléesClasses non profilées ne sont pas surchargéesPlus souvent le meilleur choix :

L’ensemble des classes de la JRE ne sont pas profilées

Mesures très détaillées avec faible overhead

Configuration de session

Page 19: Jprofiler

Échantillonnage Snapshots périodiques de la JVMMoins couteux par rapports à l’instrumentationMieux adaptés pour un profilage sans filtresPerte de certains indicateurs :

Nombre d’invocation Pas d’information sur les in/out des méthodes

Configuration de session

Page 20: Jprofiler

Configuration de session

Serveur Distant

jprofilerti Config.xml

-agentpath:C:\jprofiler8\agent\bin\windows\jprofilerti.dll=port=8849,nowait,id=104,config=C:\jprofiler8\configFile\config.xml

Paramètre JVM :

Lancement des tests de performances

Profilage de la JVM

Page 21: Jprofiler

FiltrageDétermine le niveau de détail du profilage

Distinction entre le code applicatif et le code des bibliothéque

Réduit l’overhead de JProfiler

Configuration de session

Page 22: Jprofiler

FiltrageLa configuration de la session permet de filtrer

les classes à profiler

Configuration de session

Page 23: Jprofiler

TriggersDéfinie toutes les actions de profilageStocké dans le fichier de configuration

transmis à l’agentUtiles pour le mode offline

Configuration de session

Page 24: Jprofiler

: Qui alloue quel objet

: Snapshot instantané de la

mémoire heap

: Appels de méthode et des mesures

de temps

: Détail des statuts et cycles de vie

des threads

Analyse des résultats

Page 25: Jprofiler

: Détail des moniteurs et verrous

: Télémétrie cumulée de la JVM

: Détail des requêtes vers la base de

données

: Détail des composants JEE

(Servlet, JMS, …)

Analyse des résultats

Page 26: Jprofiler

Tous les objetsVue sur toutes les classes chargées ainsi que le

nombres des objets crées

Arbre d’allocation : Arbre cumulé des communication entres threads

basé sur les allocations des objets

Snapshot de la mémoire heap

Analyse des résultats : Mémoire

Page 27: Jprofiler

Objets enregistrés : Zoom sur les objets enregistrés dans la mémoire

Heap

Trace des classesGraphe indiquant un nombre arbitraire des

instance d’une classe données par rapport au temps

Hot spot d’allocationAperçu sur la liste des méthodes où l’objet

a été alloué

Analyse des résultats : Mémoire

Page 28: Jprofiler

Arbre des appelsArbre des appels entre méthodes selon les

threads

Hot spotAperçu sur la liste des appels d’un type donné

Graphe d’appelZoom graphique sur les appels d’un objets

données

Analyse des résultats : CPU

Page 29: Jprofiler

Statistique de méthodes :Informations statistiques sur les appels à une

méthode

Traces des appels :Trace des appels asynchrones entre composants

Analyse des résultats : CPU

Page 30: Jprofiler

Historique des threads :Aperçu sur l’historique de l’ensemble des threads

par ordre de création

Moniteur des threads :Liste filtrée de tous les threads avec les

informations sur le temps d’exécution et leurs statuts

Snapshot des threads

Analyse des résultats : Threads

Page 31: Jprofiler

Graphe des verrous en cours :

Séquence historique des verrous enregistrés

dans la JVM

Analyse des résultats : Verrous

Page 32: Jprofiler

Moniteurs actuels:Liste des moniteurs actuels qui sont impliqués

dans un événement en attente ou verrouillé

Séquence historique des moniteurs

Enregistrement des statistiques

Analyse des résultats : Moniteurs

Page 33: Jprofiler

Graphe d’utilisation de la mémoire Heap

Graphe des objets enregistrés dans la mémoire Heap

Graphe des objets créés et supprimer par GC

Analyse des résultats : Télémétrie

Page 34: Jprofiler

Graphe d’évolution de l’activité de la GCExécution de la GC

Graphe des classes chargées dans la JVM

Graphe des threads vivants dans la JVM

Graphe de la charge CPU consommé par le processus profilé

Analyse des résultats : Télémétrie

Page 35: Jprofiler

Indicateurs des instructions JDBCStatement, Preapred statement, batch executionTélémétrie, Hot spot, connexion, évènement et

trace

Indicateurs sur la couche JPA:Profilage des objets annotésHot spot, télémétrie, évènement et trace

Support des base de données NoSQL

Analyse des résultats : JDBC

Page 36: Jprofiler

Servlet Détecte et trace l’activité des servlets appelées

JNDITrace les requêtes JNDI dans l’arbre des appels

et les hot spots

JMS Description des messages JMS dans l’arbre des

appels

Analyse des résultats : JEE

Page 37: Jprofiler

RMIVisualise les appels du serveur RMI dans l’arbre

des appels

Service webArbre des appels aux services webService web basé sur:

JAX-WS-RI AXIS2 Apache CXF

Analyse des résultats : JEE

Page 38: Jprofiler

Questions

Page 39: Jprofiler

MERCI