Identity Manager enthält ein Lernprogramm (profiler-tutorial.zip), mit dem Sie lernen können, wie Sie den Profiler zur Problembehebung bei Formularen, Java-Objekten, Regeln, Arbeitsabläufen und XPRESS-Objekten nutzen.
Führen Sie die folgenden Schritte aus, um das Lernprogramm durchzuarbeiten.
Wählen Sie „File > New Project“.
Geben Sie Folgendes an, wenn der Assistent zum Erstellen neuer Projekte angezeigt wird, und klicken Sie dann auf „Weiter“:
Wählen Sie in der Liste „Categories“ den Eintrag „Web“ aus, um festzulegen, welchen Projekttyp Sie erstellen wollen.
Wählen Sie aus der Projektliste den Eintrag „Identity Manager Project“.
Wenn Sie eine Entwicklungsumgebung mit vollem Leistungsumfang erhalten möchten, müssen Sie ein reguläres Identity Manager-Projekt erstellen. Wählen Sie nicht die Option „Identity Manager Project (Remote)“ aus.
Füllen Sie im Fenster „Name and Location“ die folgenden Felder aus und klicken Sie dann auf „Weiter“.
Project Name: Geben Sie als Projektnamen Idm80 ein.
Project Location: Übernehmen Sie den standardmäßigen Speicherort oder geben Sie einen anderen Speicherort an.
Project Folder: Übernehmen Sie den Standardordner oder geben Sie einen anderen Ordner an.
Geben Sie den Ort der war-Datei von Identity Manager 8.1 ein, wenn das Dialogfeld „Identity Manager WAR File Location“ angezeigt wird. Beim Entpacken dieser Datei wird in der Regel eine idm.war-Datei im gleichen Verzeichnis erzeugt.
Klicken Sie auf „Weiter“. Das Fenster „Repository Setup“ wird angezeigt.
Sie brauchen die Standardeinstellungen in diesem Fenster nicht zu ändern. Klicken Sie auf „Fertigstellen“. Wenn im Ausgabefenster der Identity Manager-IDE die Meldung BUILD SUCCESSFUL angezeigt wird, können Sie die Dateien des Profiler-Lernprogramms extrahieren. Anweisungen dazu finden Sie unter Schritt 2: Entpacken des Profiler-Lernprogramms.
Entpacken Sie die Datei profiler-tutorial.zip in das Projekt-Stammverzeichnis. Es werden folgende Dateien extrahiert:
<project root>/custom/WEB-INF/config/ProfilerTutorial1.xml <project root>/custom/WEB-INF/config/ProfilerTutorial2.xml <project root>/src/org/example/ProfilerTutorialExample.java <project root>/PROFILER_TUTORIAL_README.txt
Jetzt können Sie den Profiler starten. Gegen Sie zu Schritt 3: Starten des Profilers.
Erhöhen Sie mithilfe der Anleitung unter Vorbereitung die Speicherressourcen für den Server und die Netbeans-JVM.
Starten Sie den Profiler mit einer der beiden unter Übersicht beschriebenen Möglichkeiten.
Wenn das Dialogfeld „Profiler Options“ angezeigt wird, können Sie Optionen für das Profiling eingeben.
Gehen Sie zu Schritt 4: Festlegen der Optionen für das Profiling
Weitere Informationen zu den verschiedenen Profiler-Optionen finden Sie unter Festlegen von Optionen für das Profiling.
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.
Der nächste Abschnitt dieses Lernprogramms befasst sich mit dem Profiling einer „ManualAction“ eines Arbeitsablaufs.
Wählen Sie in Identity Manager „Serveraufgaben > Aufgaben ausführen“, und klicken Sie dann auf „ProfilerTutorialWorkflow2“.
Nach einigen Sekunden wird ein leeres Formular angezeigt.
Klicken Sie auf „Speichern“. Das Prozessdiagramm wird angezeigt.
Klicken Sie erneut auf „Serveraufgaben > Aufgaben ausführen“.
Gehen Sie zur IDM-Profileransicht der Identity Manager-IDE zurück und klicken Sie im Abschnitt „Profiling Results“ auf „Reset Collected Results“.
Klicken Sie jetzt in Identity Manager auf „ProfilerTutorialWorkflow2“.
Klicken Sie auf „Speichern“, wenn das leere Formular erneut angezeigt wird.
Klicken Sie in der IDM-Profileransicht auf „Take Snapshot“.
Nach einigen Sekunden wird in der Aufrufhierarchie ein Snapshot angezeigt. Sie sehen, dass /idm/task/workItemEdit.jsp zur Ausführung ca. sechs Sekunden benötigte. Dieses Ergebnis entspricht dem der manuellen Aktion im Arbeitsablauf.
Klappen Sie den Knoten /idm/task/workItemEdit.jsp auf. Sie sehen, dass die Ausführung aller Ableitungen im Formular ManualAction sechs Sekunden dauerte.
Klappen Sie die Knoten Derivation, displayNameForm, variables.dummy und <block> auf.
Sie sehen, dass der <block>-Knoten zur Ausführung sechs Sekunden benötigte und der Profiler in jedem Aufruf der Methode ProfilerTutorialExample.example() zwei Sekunden verbracht hat.
Sie können auf <block>doppelklicken, um den Quellcode zu sehen.