In diesem Abschnitt werden die Funktionen der grafischen Benutzeroberfläche des Profilers beschrieben und wie Sie mit diesen arbeiten können. Die Informationen sind wie folgt unterteilt:
Das Dialogfeld „Profiler Options“ enthält folgende Registerkarten:
Mit den Optionen in diesen Registerkarten legen Sie fest, für welche Objekte das Profiling ausgeführt werden soll und welche Elemente im Profil anzuzeigen sind.
Klicken Sie auf „OK“, um den Profiler zu starten, wenn Sie die Optionen für das Profiling festgelegt haben. Je nach Projektkonfiguration führt der Profiler einen der folgenden beiden Vorgänge aus:
Bei regulären Identity Manager-Projekten mit einer eingebetteten Identity Manager-Instanz führt der Profiler ein vollständiges Build durch, stellt das Projekt auf dem NetBean-Anwendungsserver bereit und startet den Profiler.
Bei regulären Identity Manager-Projekten mit einer externen Identity Manager-Instanz oder Identity Manager-Fernprojekten verbindet sich der Profiler mit der für das Projekt konfigurierten Identity Manager-Instanz.
Sie können „IdM > Set Identity Manager Instance“ auswählen, um die Aktion der Identity Manager-Instanz für das Projekt festzulegen.
Die Registerkarte „Mode“ enthält folgende Optionen:
IDM Objects Only: Wählen Sie diese Option, um das Profiling für Formulare, Regeln, Arbeitsabläufe und XPRESS-Objekte durchzuführen. Es wird kein Profiling für Java-Objekte ausgeführt.
Java and IDM Objects: Wählen Sie diese Option, um das Profiling für Formulare, Java, Regeln, Arbeitsabläufe und XPRESS-Objekte durchzuführen.
Die Option „Java and IDM Objects“ ist für reguläre Identity Manager-Projekte mit externer Identity Manager-Instanz bzw. Identity Manager-Fernprojekte nicht verfügbar.
Sie können den Modus nicht ändern, während das Profiling läuft. Wenn Sie den Modus ändern möchten, muss der Profiler angehalten werden.
Die Registerkarte „IDM Object Filters“ enthält folgende Optionen:
Show IDM Object details
Markieren Sie dieses Kontrollkästchen, um alle Formulare, Arbeitsabläufe und XPRESS-Elemente, die ausgeführt werden, in den Snapshot einzubeziehen.
Demarkieren Sie dieses Kontrollkästchen, wenn nur die folgende Elemente im Snapshot enthalten sein sollen:
<invoke>
<new>
<Rule>
<Form>
<WFProcess>
<ExScript>
<ExDefun>
<FieldRef>
<Action> (für Zusatzaktionen von Arbeitsablauf-Anwendungen)
Einbeziehen von anonymem Quellcode
Unter anonymen Quellcode versteht man Formulare (oder Teile davon), die dynamisch generiert werden (z.-B. Anmeldeformulare oder Formulare, die auf fehlende Felder hinweisen) und keinem der persistenten Formulare im Identity Manager-Repository entsprechen.
Markieren Sie dieses Kontrollkästchen, wenn anonymer Quellcode in den Snapshot einbezogen werden soll.
Demarkieren Sie dieses Kontrollkästchen, wenn kein anonymer Quellcode im Snapshot enthalten sein soll.
In der Registerkarte „Java Filters“ können Sie:
Java-Filter einbeziehen bzw. ausschließen
neue Filter erstellen
vorhandene Filter löschen
Standardfilter wiederherstellen
Java-Filter sind in Bezug auf Methodenmuster gegeben und werden in ein- bzw. ausschließenden, auf dem kanonischen Methodennamen basierenden Mustern angegeben. Kanonische Methodennamen sehen wie folgt aus:
Klassenname_mit_vollständigem_Pfad.Methodenname(Parametertyp-1, Parametertyp-2, ...)
Für Konstruktoren lautet der Methodenname <init>.
Hier sind einige Beispiele:
Zum Ausschließen von Konstruktoren markieren Sie das Kontrollkästchen „Exclude“ und fügen den folgenden Filter hinzu:
*.<init>(*)
Zum Ausschließen aller Konstruktoren mit einem einzigen Parameter org.w3c.dom.Element markieren Sie das Kontrollkästchen „Exclude“ und fügen den folgenden Filter hinzu:
*.<init>(org.w3c.dom.Element)
Zum Ausschließen aller Identity Manager-Klassen markieren Sie das Kontrollkästchen „Exclude“ und fügen die folgenden Filter hinzu:
"com.waveset.*" "com.sun.idm.*"
Wenn Sie nur benutzerspezifischen Code instrumentieren wollen, deaktivieren Sie das Kontrollkästchen „Exclude“, entfernen den Filter * include zu Beginn und fügen dann den folgenden Filter hinzu:
"com.yourcompany.*"
Die letzten beiden Beispiele haben gegenwärtig den gleichen Effekt, da Filter nur auf benutzerspezifische Klassen und Identity Manager-Klassen angewendet werden.
Falls erforderlich, können Sie durch entsprechendes Ändern der folgenden Zeilen in der Datei build.xml noch andere JAR-Dateien instrumentieren. Zum Beispiel:
<instrument todir="${lighthouse-dir-profiler}/WEB-INF" verbose="${instrumentor.verbose}" includeMethods="${profiler.includes}" excludeMethods="${profiler.excludes}"> <fileset dir="${lighthouse-dir}/WEB-INF"> <include name="lib/idm*.jar"/> <include name="classes/**/*.class"/> </fileset> </instrument> |
Standardmäßig sind in der Konfiguration alle benutzerspezifischen und die meisten Identity Manager-Klassen enthalten. Eine Reihe von Identity Manager-Klassen sind zwangsläufig nicht enthalten, da deren Einbeziehung den Profiler funktionsunfähig machen würde.
So sind z.-B. Klassen aus den Arbeitsablauf-, Formular- und XPRESS-Programmen nicht enthalten, da der Profiler beim Profiling von Java- und Identity Manager-Objekten unverständliche Ausgaben generieren würde.
Bitte beachten Sie, dass Java-Filter eine erheblich feinere Filtergranularität als IDM-Objektfilter bieten. Java-Instrumentierungen verlangsamen die Ausführungszeit erheblich, was bei den Profiling-Ergebnissen zu drastischen Abweichungen führen kann. Da Identity Manager-Objekte interpretiert und nicht kompiliert werden, kann der Einfluss der Instrumentierung auf die Ausführungszeit vernachlässigt werden. So gibt es beispielsweise keinen Grund, Arbeitsablauf-A auszuschließen und Arbeitsablauf-B einzubeziehen usw.
Sie können Java-Filter nicht ändern, während das Profiling läuft. Wenn Sie die Java-Filter ändern möchten, muss der Profiler angehalten werden.
Die Registerkarte „Miscellaneous“ enthält folgende Optionen:
Prune snapshot nodes where execution time is 0:
Deaktivieren Sie die Option (standardmäßig deaktiviert), wenn der Snapshot Aufrufdaten für alle ausgeführten Entitäten (auch für die, deren Ausführungszeit 0 ist) enthalten soll.
Unter Umständen ist die Verfolgung der Aufrufanzahl bei Knoten nützlich, deren Ausführungszeit gleich null ist.
Aktivieren Sie diese Option, um diese Knoten auszuschließen. Damit können Sie sich auf die relevantesten Profiling-Daten konzentrieren. Darüber hinaus kann durch Aktivieren dieser Option die Größe eines Profiler-Snapshots erheblich reduziert werden.
Automatically Open Browser Upon Profiler Start:
Aktivieren Sie diese Option (standardmäßig aktiviert), wenn beim Start des Profilers automatisch ein Browser geöffnet werden soll, in dem die Identity Manager-Instanz angezeigt wird, für die das Profiling ausgeführt wird.
Deaktivieren Sie diese Option, wenn kein Browser geöffnet werden soll.
Include Java Sources in Snapshot:
Aktivieren Sie diese Option (standardmäßig aktiviert), wenn Java-Quellcode für alle Java-Methoden enthalten sein soll, die im Snapshot der Profiling-Daten referenziert werden sollen. Diese Einstellung sollte stets für Snapshots unter Produktionsbedingungen verwendet werden. Benutzerspezifischer Java-Code ist beansprucht wenig Ressourcen, und es wichtig, diesen für die Fehlersuche zur Verfügung zu haben.
Deaktivieren Sie diese Option, wenn Sie das Profiling für Identity Manager durchführen und der vollständige Identity Manager-Quellcode verfügbar ist.
In solchen Fällen sollte der Identity Manager-Quellcode nicht in den Snapshots enthalten sein, da dadurch die Snapshot-Größe extrem erhöht wird. (Weitere Informationen finden Sie unter Wie findet und verwaltet der Profiler Quellcode.)
Die IDM-Profileransicht enthält die folgenden Bereiche:
Der Bereich „Current Project“ besteht aus einem Dropdown-Menü, in dem alle aktuellen Projekte aufgeführt sind. In diesem Menü wählen Sie das Projekt aus, für das ein Profiling durchgeführt werden soll.
Der Bereich „Controls“ enthält vier Symbole. Diese sind in der folgenden Tabelle beschrieben:
Symbol |
Name |
Zweck |
---|---|---|
|
Start Identity Manager Profiler |
Startet den Profiler und öffnet das Dialogfeld „Profiler Options“. |
|
Stop Identity Manager Profiler |
Stoppt den Profiler. |
|
Reset Collected Results |
Löscht alle bis hierhin erfassten Profiling-Ergebnisse. |
|
Modify Profiling |
Öffnet das Dialogfeld „Profiler Options“ erneut, sodass Sie an den Einstellungen Änderungen vornehmen können. |
Im Bereich „Status“ wird gemeldet, ob der Profiler mit dem Host eine Verbindung herstellen konnte, und es werden Informationen zum Starten, Laufen und Stoppen des Profilers angezeigt.
Der Bereich „Profiling Results“ enthält zwei Symbole. Diese sind in der folgenden Tabelle beschrieben:
Symbol |
Name |
Zweck |
---|---|---|
|
Start Identity Manager Profiler |
Startet den Profiler und öffnet das Dialogfeld „Profiler Options“. |
|
Reset Collected Results |
Löscht alle bis hierhin erfassten Profiling-Ergebnisse. |
Der Bereich „Saved Snapshots“ enthält eine Liste aller gespeicherten Snapshots.
Eine Anleitung zum Speichern von Snapshots finden Sie im Abschnitt Speichern eines Snapshots.
Darüber hinaus dienen die folgenden Schaltflächen zum Verwalten dieser Snapshots:
Open: Klicken Sie auf diese Schaltfläche, um einen gespeicherten Snapshot im Fenster „Snapshot View“ zu öffnen.
Sie können auch auf einen Snapshot in dieser Liste doppelklicken, um ihn zu öffnen.
Delete: Wählen Sie einen Snapshot in der Liste „Saved Snapshots“ aus und klicken auf diese Schaltfläche, um den Snapshot zu löschen.
Save As: Wählen Sie einen Snapshot in der Liste aus und klicken Sie auf diese Schaltfläche, um den Snapshot in einem beliebigen externen Verzeichnis zu speichern.
Load: Klicken Sie auf diese Schaltfläche, um einen in einem beliebigen externen Verzeichnis gespeicherten Snapshot im Fenster „Snapshot View“ zu öffnen.
Beim Öffnen eines Snapshots werden die Ergebnisse in der Snapshot-Ansicht angezeigt. Diese befindet sich rechts oben in der Identity Manager-IDE.
Ein Snapshot bietet verschiedene Anzeigemöglichkeiten für Profiling-Daten. Diese werden in den folgenden Abschnitten beschrieben:
Die Ansicht der Aufrufhierarchie zeigt eine Hierarchieansicht mit den Aufrufzeiten und -dauern im gesamten System an.
Diese Tabelle enthält drei Spalten:
Spalte „Call Tree“: Hier werden alle Knoten aufgeführt.
Knoten der obersten Ebene können folgende Entitäten sein:
Thread.run()-Methoden für verschiedene Hintergrund-Threads im System
Wenn Sie beispielsweise Java-Profiling aktiviert haben, sehen Sie hier die Methode ReconTask.WorkerThread.run().
Zeitdauern für Anforderungen
Wenn Sie beispielsweise die URL idm/login.jsp angezeigt haben, sehen Sie in der obersten Ebene einen Eintrag für idm/login.jsp. Die Spalte „Time“ zeigt die Gesamtzeit, die für diese Anforderung (bzw. Anforderungen) benötigt wurde. Die Spalte „Invocations“ zeigt, wie oft diese Seite insgesamt aufgerufen wurde. Sie können diese Daten näher untersuchen, um festzustellen, welche Aufrufe zur Gesamtzeit beigetragen haben.
Die Ansicht der Aufrufhierarchie enthält darüber hinaus Knoten mit Eigenausführungszeiten. Unter Eigenausführungszeit versteht man die Zeit, die ein Knoten für seine eigene Ausführung benötigt. (Weitere Informationen dazu finden Sie unterInterpretationshinweise zu den Statistiken.)
Spalte „Time“: Die Zeit, die in jedem Knoten verbracht wurde, als dieser Knoten von seiner übergeordneten Routine aufgerufen wurde. Die Werte sind Prozentsätze relativ zur Ausführungszeit der aufrufenden Routine.
Spalte „Invocations“: Hält fest, wie oft jeder Knoten von seiner übergeordneten Routine aufgerufen wurde.
Die Hotspot-Ansicht zeigt eine flache Knotenliste mit den aufsummierten Aufrufzeiten unabhängig von der aufrufenden Routine an.
Diese Ansicht enthält die folgenden Spalten:
Self Time: Die Gesamtzeit, die in jedem Knoten verbracht wurde.
Invocations: Hält fest, wie oft jeder Knoten insgesamt von seiner übergeordneten Routine aufgerufen wurde.
Time: Die Gesamtzeit, die in jedem Knoten und in allen von diesem Knoten aufgerufenen Unterroutinen verbracht wurde.
Die Rückverfolgungsansicht zeigt einen invertierten Aufrufstack mit allen Aufrufketten, von denen jeder Knoten aufgerufen wurde, an.
Mit diesen Statistikdaten können Sie nachvollziehen, wie viel Zeit Sie durch Eliminierung einer bestimmten Aufrufkette aus dem betreffenden Knoten einsparen würden?
Sie können die Rückverfolgungsansicht von allen anderen Snapshot-Ansichten aufrufen, indem Sie mit der rechten Maustaste auf einen Knoten klicken (der dann in der Rückverfolgungsansicht zum sog. Root-Knoten wird) und aus dem Kontextmenü die Option „Show Back Traces“ auswählen.
In der Rückverfolgungsansicht haben die Werte in den Spalten „Time“ und „Invocations“ eine andere Bedeutung:
Time: Die Werte in dieser Spalte geben die Zeit an, die im Root-Knoten verbracht wurde, wenn dieser von einer bestimmten Aufrufkette aufgerufen wird.
Invocations: Die Werte in dieser Spalte geben an, wie oft der Root-Knoten von einer bestimmten Aufrufkette aus aufgerufen wurde.
Die Ansicht der aufgerufenen Routinen zeigt eine Gesamtaufrufhierarchie für einen Knoten (den sog. Root-Knoten) unabhängig von dessen aufrufender Kette an.
Diese Statistikdaten sind bei Problembereichen nützlich, die innerhalb der Masterhierarchie von vielen Routinen aufgerufen werden, und wo Sie sich das Gesamtprofil des betreffenden Knotens ansehen möchten.
Sie können die Ansicht der aufgerufenen Routinen von allen anderen Snapshot-Ansichten aufrufen, indem Sie mit der rechten Maustaste auf einen Knoten klicken (der dann in der Rückverfolgungsansicht zum sog. Root-Knoten wird) und aus dem Kontextmenü die Option „Show Callees“ auswählen.
In der Ansicht der aufgerufenen Routinen haben die Werte in den Spalten „Time“ und „Invocations“ die gleiche Bedeutung wie bei der Ansicht der Aufrufhierarchie.
Klicken Sie in der Ansicht der Aufrufhierarchie bzw. in der Hotspot-Ansicht mit der rechten Maustaste auf einen beliebigen Knoten. Es wird ein Kontextmenü mit den in der folgenden Tabelle beschriebenen Optionen angezeigt:
Menüoption |
Beschreibung |
---|---|
GoTo Source |
Wählen Sie diese Option zur Anzeige des XML-Quellcodes für einen Knoten, der einer Java-Methode, einem Arbeitsablauf, Formular, einer Regel oder einem XPRESS-Objekt entspricht. Ausführliche Informationen zu dieser Ansicht finden Sie unter Wie findet und verwaltet der Profiler Quellcode. |
Show Back Traces |
Wählen Sie diese Option, um zur Rückverfolgungsansicht zu schalten. Ausführliche Informationen zu dieser Ansicht finden Sie unterRückverfolgungsansicht. |
Show Callees |
Wählen Sie diese Option, um zur Ansicht der aufgerufenen Routinen zu schalten. Ausführliche Informationen zu dieser Ansicht finden Sie unterAnsicht der aufgerufenen Routinen. |
Find In Hotspots |
Wählen Sie diese Option, um in der Hotspot-Ansicht einen Knoten zu suchen. Ausführliche Informationen zu dieser Ansicht finden Sie unterHotspot-Ansicht. |
List Options > Sort > |
Wählen Sie diese Option, um den Sortiermodus festzulegen. Sortierung nach:
|
List Options > Change Visible Columns |
Wählen Sie diese Option, um die angezeigten Tabellenspalten in der Ansicht der Aufrufhierarchie bzw. Hotspot-Ansicht zu ändern. Im Dialogfeld „Change Visible Columns“ können Sie eine oder mehrere der folgenden Optionen festlegen:
|
Mit dem Suchsymbol am oberen Rand der Snapshot-Ansicht können Sie in der Ansicht der Aufrufhierarchie bzw. der Hotspot-Ansicht Knoten nach Namen suchen.
Alternativ dazu können Sie in der Ansicht der Aufrufhierarchie bzw. in der Hotspot-Ansicht mit der rechten Maustaste auf einen beliebigen Knoten klicken und aus dem angezeigten Kontextmenü die Option „Find in Call Tree“ bzw. „Find in Hotspots“ auswählen.
Der Profiler bietet mehrere Möglichkeiten zum Speichern eines Snapshots. Die folgende Tabelle enthält eine Beschreibung dieser Optionen:
Symbol |
Name |
Zweck |
---|---|---|
|
Symbol „Save the Snapshot in the Project“ (am oberen Rand der Snapshot-Ansicht) |
Speichert den Snapshot im Verzeichnis nbproject/private/idm-profiler Ihres Projekts. Die im Projekt gespeicherten Snapshots werden im Bereich „Saved Snapshots“ der Profiler-Ansicht angezeigt. |
|
Symbol „Save the Snapshot Externally“ (am oberen Rand der Snapshot-Ansicht) |
Speichert den Snapshot in einem beliebigen externen Verzeichnis. |
|
Schaltfläche „Save As“ (im Bereich „Saved Snapshots“) |
Speichert den Snapshot in einem beliebigen externen Verzeichnis. |