Für dieses Lernprogramm sollten Sie die folgenden Profiler-Optionen eingeben:
Wählen Sie in der Registerkarte „Mode“ die Option „Java and IDM Objects“, um das Profiling für Formulare, Regeln, Arbeitsabläufe, Java- und XPRESS-Objekte durchzuführen.
Klicken Sie auf die Registerkarte „Java Filters“.
Gehen Sie wie folgt vor, um alle Java-Klassen von Identity Manager außer Ihre benutzerspezifischen Java-Klassen (in diesem Fall org.example.ProfilerTutorialExample) zu deaktivieren:
Klicken Sie auf „New“. Ein neues leeres Feld erscheint am Ende der Filterspalte.
Geben Sie in das neue Feld com.waveset.* ein und markieren Sie dann das Kontrollkästchen „Exclude“.
Klicken Sie erneut auf „New“.
Geben Sie in das neue Feld com.sun.idm.* ein und markieren Sie dann das Kontrollkästchen „Exclude“.
Klicken Sie auf „OK“, um den Profiler auszuführen.
Der Profiler benötigt einige Minuten zur Abarbeitung, wenn er zum ersten Mal nach einer Clean Project-Aktion an einem Projekt ausgeführt wird.
Nach Abschluss des Profiling werden Sie aufgefordert, sich anzumelden.
Geben Sie das Passwort configurator ein, aktivieren Sie das Kontrollkästchen „Remember Password“ und klicken Sie anschließend auf „OK“, um fortzufahren.
Melden Sie sich an, wenn das Identity Manager-Fenster angezeigt wird.
Normalerweise sollten Sie sich bei Identity Manager als ein anderer Benutzer statt nochmals als configurator anmelden. Sie sind im Profiler bereits als „configurator“ angemeldet, und der Sitzungspool von Identity Manager erlaubt nur einen Eintrag pro Benutzer. Mehrere Benutzereinträge können die Funktion des Sitzungspools beeinträchtigen und die feiner abgestimmte Suche nach Leistungsproblemen erschweren.
In diesem einfachen Beispiel hat dies jedoch keine Auswirkungen, sodass Sie sich als configurator/configurator anmelden können.
Wählen Sie in Identity Manager „Serveraufgaben > Aufgaben ausführen“, und klicken Sie dann auf „ProfilerTutorialWorkflow1“.
Es kann sein, dass es einige Augenblicke dauert, bis das Lernprogramm reagiert.
Obwohl Sie jetzt schon einen Snapshot erstellen können, sollten Sie zunächst die Profiling-Ergebnisse löschen, den Profiler starten, ihn nochmals ausführen und dann erst einen Snapshot erstellen.
Am Besten ist es, den Profiler vor dem Erstellen eines Snapshots einige Male auszuführen, damit Sie sicherstellen können, dass alle Cache-Speicher vorbereitet und alle JSPs compiliert sind usw.
Durch mehrmalige Ausführung des Profilers können Sie sich auf die eigentlichen Leistungsprobleme konzentrieren. Die einzige Ausnahme von dieser Regel besteht dann, wenn beim Füllen des Cache-Speichers selbst Probleme auftreten.
Gehen Sie zur IDM-Profileransicht in der Identity Manager-IDE zurück. Klicken Sie auf das Symbol „Reset Collected Results“ im Abschnitt „Profiling Results“ (oder „Controls“), um alle bisher erfassten Profiling-Ergebnisse zu löschen.
Wählen Sie in Identity Manager „Serveraufgaben > Aufgaben ausführen“, und klicken Sie dann auf „ProfilerTutorialWorkflow1“.
Wenn das Prozessdiagram angezeigt wird, sollten Sie zur Identity Manager-IDE zurückgehen und im Abschnitt „Profiling Results“ auf „Take Snapshot“ klicken.
Die Identity Manager-IDE lädt die Snapshots und zeigt die Ergebnisse in der rechten Fensterhälfte an.
Dieser Bereich wird als Ansicht der Aufrufhierarchie bezeichnet. In der obersten Ebene der Aufrufhierarchie sollte /idm/task/taskLaunch.jsp zusammen mit einer Zeitdauer in der Spalte „Time“ erscheinen. Die Zeit sollte zeigen, dass der gesamte Vorgang sechs oder mehr Sekunden dauerte.
Klappen Sie den Knoten /idm/task/taskLaunch.jsp auf, und jetzt sehen Sie, dass ProfilerTutorialWorkflow1 sechs Sekunden dauerte.
Klappen Sie den Knoten ProfilerTutorialWorkflow1 auf. Beachten Sie, dass activity2 vier Sekunden und activity1 zwei Sekunden dauerte.
Klappen Sie activity2 auf.
Beachten Sie, dass action1 zwei Sekunden und action2 zwei Sekunden dauerte.
Klappen Sie action1 auf. Sie sehen, dass der Aufruf (<invoke>) ebenfalls zwei Sekunden dauerte.
Doppelklicken Sie auf <invoke>, um ProfilerTutorialWorkflow1.xml zu öffnen, und markieren Sie die folgende Zeile:
<invoke name=’example’ class=’org.example.ProfilerTutorialExample’/> |
Sie sollten sehen, dass der Aufruf der Methode ProfilerTutorialExample zwei Sekunden dauerte.
Statt des Quellcodes im Projekt schauen Sie sich durch den Snapshot erfassten XML-Code an. Snapshots sind vollkommen unabhängig. (Ausführliche Informationen finden Sie unter Wie findet und verwaltet der Profiler Quellcode.)
Klicken Sie auf die Registerkarte „CPU:Datum><Uhrzeit“, um zum Snapshot zurückzukehren.
Klappen Sie den <invoke>-Knoten auf. Sie sehen, dass der Profiler zwei Sekunden in der Java-Methode ProfilerTutorialExample.example() verbracht hat.
Doppelklicken Sie auf den Methodennamen, um den Quellcode (ProfilerTutorialExample.java) zu öffnen, und markieren Sie die folgende Zeile:
Thread.sleep(2000); |
Hier liegt das Problem! Diese Methode enthält einen 2-Sekunden dauernden Sleep-Thread.
Wenn Sie zur Ansicht der Aufrufhierarchie zurückkehren, sehen Sie, dass alle 2-s-Pfade zu dieser Methode führen. Es sollten isg. drei Pfade mit einer Gesamtdauer von sechs Sekunden zu sehen sein.
Klicken Sie auf die Registerkarte „Hotspots“ am unteren Rand der Aufrufhierarchie, um die Hotspot-Ansicht zu öffnen. Sie sehen, dass die Methode ProfilerTutorialExample.example() insgesamt sechs Sekunden zur Ausführung benötigte.
(Weitere Informationen zu Hotspots finden Sie unter Arbeiten mit der Snapshot-Ansicht.)
Klicken Sie mit der rechten Maustaste auf ProfilerTutorialExample.example() und wählen Sie im Kontextmenü die Option „Show Back Traces“ aus.
Im unteren Bereich wird eine neue Registerkarte namens „Back Traces“ angezeigt.
Klappen Sie den Knoten ProfilerTutorialExample.example() in der Registerkarte „Back Traces“ auf. Sie sehen, dass diese Methode von drei verschiedenen Routinen aufgerufen wurde und jede Ausführung zwei Sekunden dauerte.
(Weitere Informationen zu Rückverfolgungen finden Sie unter Arbeiten mit der Snapshot-Ansicht.)
Klicken Sie auf das Symbol „Snapshot im Projekt speichern“, um den Snapshot zu speichern, und schließen Sie ihn.
Im Abschnitt „Saved Snapshots“ der Registerkarte „IDM Profiler“ sollte der gespeicherte Snapshot jetzt aufgeführt sein. Es kann sein, dass Sie bei längeren Listen einen Bildlauf nach unten durchführen müssen, um ihn zu sehen.
Markieren Sie den gespeicherten Snapshot und klicken Sie dann auf „Open“, um ihn wieder zu öffnen.
Mithilfe der Schaltfläche „Save As“ können Sie Snapshots extern speichern. Mithilfe der Schaltfläche „Load“ laden Sie einen Snapshot von außerhalb eines Projekts.
Schließen Sie den Snapshot wieder.