Show TOC

Anwendungsanalysen auswertenLocate this document in the navigation structure

Verwendung

Die Anwendungsanalyse beinhaltet Angaben zu Java Exceptions, die während der Ausführung aufgetreten sind sowie den Methoden-Trace der Anwendung.

Voraussetzungen

Sie haben eine Profiling-Sitzung abgeschlossen, in der Sie das Aufzeichnen von Anwendungsdaten aktiviert hatten. Sie befinden sich in der Auswertungsübersicht zu dieser Sitzung

Weitere Informationen: Profiling-Daten auswerten

Vorgehensweise

Je nachdem, welche Analysen Sie für Ihre Profiling-Sitzung aktiviert hatten, können Sie diese nun auswerten.

Java Exceptions auswerten

Wählen Sie in der Navigationsstruktur den Knoten Anfang des Navigationspfads Anwendungsanalyse Nächster Navigationsschritt Exception Trace Ende des Navigationspfads.

Sie bekommen auf der rechten Seite eine Tabelle mit den Java-Exceptions, die während der Profiling-Sitzung in allen VMs des VM Containers aufgezeichnet wurden. Die Tabelle enthält

  • den Namen der Exception-Klasse

  • die Häufigkeit, wie oft die Exception geworden wurde

Dadurch erhalten Sie Aufschluss darüber, ob Fehlerzustände angemessen behandelt werden und was möglicherweise ihre Ursachen sind.

Alle Tabellenzeilen sind vorne mit einem Dreieck gekennzeichnet um anzudeuten, dass sich die Zeilen durch Doppelklick expandieren lassen und dann in den Folgezeilen Detailinformationen angezeigt werden. In diesem Falle sind dies die Ergebnisse für die vier Exception-Operationen (Throw, Catch, Finally, Clear JNI).

  • THROW: Die Anzahl gibt an, an wie vielen verschiedenen Methodenlokationen die Exception geworfen wurde. Expandiert man die Zeile durch Klick auf das Dreieckssymbol vorne, so werden diese verschiedenen Lokationen in entsprechend vielen Zeilen in Gestalt von Stack Traces angezeigt. Ein Stack-Trace enthält folgende Informationen:

    • die oberste Methode auf dem Stack mit Klassen- und Methodennamen sowie Zeilennummer, so dass man schnell die Codestelle identifizieren kann, wo die Exception geworfen wurde;

    • die Anzahl, wie häufig die Exception an dieser Stelle geworfen wurde.

    • Doppelklick auf die Stack Trace-Zeile expandiert die Anzeige auf die Stack-Tiefe, mit der der Stack bei der Profiling-Sitzung aufgezeichnet wurde.

  • CATCH: Die Anzahl gibt an, an wie vielen verschiedenen Methodenlokationen die Exception abgefangen wurde. Expandiert man die Zeile durch Klick auf das Dreieckssymbol vorne, so werden diese verschiedenen Lokationen in entsprechend vielen Zeilen angezeigt:

    • Klassen- und Methodennamen sowie Zeilennummer, so dass man schnell die Codestelle identifizieren kann, wo die Exception abgefangen wurde

    • Anzahl, wie häufig die Exception an dieser Stelle abgefangen wurde

  • FINALLY: Die Anzahl gibt an, in wie vielen verschiedenen "finally"-Blöcken des Java-Programms die Exception behandelt wurde. Da die Bearbeitung des "finally"-Blocks nur dann registriert wird, wenn eine Exception vorliegt und nicht, wenn das Programm normal abläuft, gehen in diese Zahl nur Exceptions ein, die vorher nicht durch einen "catch"-Befehl abgefangen wurden. Die FINALLY-Zeilen enthalten wie die CATCH-Zeilen Methodenlokationen und lassen sich wie diese expandieren.

  • CLEAR JNI: Die Anzahl gibt an, an wie vielen verschiedenen Methodenlokationen die Exception durch einen Java Native Interface (JNI)-Befehl explizit gelöscht wurde. Da diese Art der Fehlerbehandlung nur in systemnahen Programmen verwendet werden sollte, dürften solche Tabellenzeilen bei normalen Java-Anwendungsprogrammen nicht auftreten. Die "CLEAR JNI"-Zeilen enthalten wie die "CATCH"-Zeilen Methodenlokationen und lassen sich wie diese expandieren.

    Hinweis

    Die Tabellenzeilen erlauben nur eine beschränkte Anzahl von Zeichen zur Darstellung der Methodenlokationen. Ist eine Textzeile abgeschnitten, so kann man sie sich mit Hilfe des Kontextmenüs (Klick auf die rechte Maustaste) "Anzeigen komplette Textzeile" in einem Popup vollständig anzeigen lassen.

Die Tabelle ist per Default absteigend nach der Anzahl der geworfenen Exceptions sortiert, so dass man schnell die besonders häufigen Fehlersituationen identifizieren kann.

Zusammen mit der Tabelle der Exception-Operationen werden immer auch Einträge in den Thread Trace gemacht. Diese kann man sich in der Auswertung der Thread Aktivitäten (s.u.) anschauen.

Methoden-Trace auswerten (Thread Aktivitäten)

Wählen Sie in der Navigationsstruktur den Knoten Anfang des Navigationspfads Anwendungsanalyse Nächster Navigationsschritt Thread-Aktivitäten Ende des Navigationspfads.

Sie bekommen auf der rechten Seite eine Tabelle mit den Methodenaufrufe, die während der Profiling-Sitzung in den einzelnen Threads einer VM durchlaufen wurden (in chronologischer Reihenfolge).

Wählen Sie in der Kopfzeile die Nummer der VM und dazu den Thread aus, dessen Aktivitäten Sie sehen möchten.

Die Threads werden in Form einer Dropdown-Liste zur Auswahl angeboten. Mögliche Einträge sind:

  • RFC Server (in-process): Der Thread hat ein Java-Anwendungsprogramm bearbeitet, und zwar im selben Workprozess, in dem das rufende ABAP-Programm lief. Der Aufruf erfolgte über einen Remote Function Call (RFC).

  • RFC Server (out-of-process): Der Thread hat ein Java-Anwendungsprogramm bearbeitet, wobei das rufende ABAP-Programm allerdings in einem anderen Workprozess, auf einem anderen Applikationsserver oder sogar in einem anderen System lief. Der Aufruf erfolgte über einen Remote Function Call (RFC).

  • VMC Event Container, VM Control Handler und VM Message Handler: Diese drei Threads gehören zum VM Container-Framework und bearbeiten Events, VM-übergreifende Variablen bzw. Nachrichten, die VMs zur Kommunikation untereinander austauschen.

  • Reference Handler und Finalizer: Diese zwei VM-internen Threads bearbeiten "Reference"-Objekte bzw. als "final" deklarierte Java-Objekte im Zusammenhang mit Garbage Collections.

Darüber hinaus tauchen auch Threads in der Liste auf, die von der Anwendung selbst gestartet wurden.

In der Thread-Auswahlbox sind die Einträge nach abnehmender Anzahl von Aktivitäten in den Traces sortiert. Da per Default die Ergebnisse des obersten Eintrags in der Tabelle angezeigt werden, sieht man sofort die Ergebnisse des "relevantesten" Threads.

Die Tabelle im oberen Teil enthält die Ergebnisse für den betrachteten Thread. Da die Aktivitäten eines Threads sehr zahlreich sein können, sind die Ergebnisse ggf. in Gruppen eingeteilt. Durch Doppelklick auf das Dreieckssymbol vorne in der Gruppenzeile lässt sich die Gruppe expandieren. In den Folgezeilen werden dann die einzelnen Aktivitäten aufgelistet.

Thread-Aktivitäten

Aktivitäten, die den Thread betreffen, enthalten "thread" in der Ergebniszeile.

Beispiel

Beispielsweise sind Zeilen mit "set thread" Wertzuweisungen von Thread-Namen, Mandant und Benutzer, Session-Name, Komponenten- und Anwendungsnamen oder Requests.

Abhängig davon, welche der Traces für die Profiling-Sitzung ausgewählt worden waren, enthält die Tabelle weitere, unterschiedlich umfangreiche Einträge:

  • Objektzuweisungen (bei Speicheranalyse),

  • Methoden Trace (bei Anwendungsanalyse),

  • Java-Exceptions (bei Anwendungsanalyse) und

  • Monitor Trace (bei Synchronisierung)

  • Shared Lock Trace (bei Synchronisierung)

Weitere Informationen: Neue Sitzung anlegen und starten

Objektzuweisungen

Aktivitäten, die bei den Objektzuweisungen aufgezeichnet wurden, haben die Form "assign to" und bezeichnen beispielsweise Wertzuweisungen an

  • Klassenvariablen

  • bekannte und unbekannte Instanzvariablen

  • Slots von Array-Variablen

Nach Einfachklick auf eine Ergebniszeile erscheint im unteren Teil ein Bild mit Detailinformationen zum Quell- und Zielobjekt der Zuweisung sowie zum Thread und der Methodenlokation, wo die Zuweisung stattfand.

Methoden Trace

Aktivitäten, die im Methoden Trace aufgezeichnet wurden, haben die Form:

"call" <Methodenlokation> "from" <Methodenlokation> oder

"return from" <Methodenlokation> "to" <Methodenlokation>.

Darin steht <Methodenlokation> für den Klassen- und Methodennamen sowie die Codezeilennummer der rufenden bzw. aufgerufenen Methode. Ein Dreieckssymbol vorne in einer Ergebniszeile kennzeichnet einen geschachtelten Methodenaufruf. Durch Doppelklick auf das Dreieckssymbol kann man die Aufrufhierarchie expandieren.

Nach Einfachklick auf eine Ergebniszeile erscheint im unteren Teil ein Bild mit Detailinformationen zu der aufrufenden und der gerufenen Methoden sowie zum Thread selbst. Darin erhält man durch fortgesetztes Expandieren der mit "caller" bzw. "callee" gekennzeichneten Ergebniszeilen folgende Informationen zur aufrufenden bzw. aufgerufenen Methode:

  • Klassenname einschl. Paketname,

  • Klassen- und Instanzvariablen

  • Classloader der Klasse

  • die gleichen Informationen von allen Superklassen, falls es welche gibt

  • Methodenlokation mit Name, Signatur und Zeilennummer im Quellcode

Zum Thread erhält man folgende Detailinformationen:

  • Interne Kennung (Thread Id)

  • Thread-Name

  • Benutzerdaten (Mandant, Benutzername)

  • Anwendungs- und Komponentenname (bei deployten "Anwendungen"; vgl. Anwendungen anzeigen)

  • Session-Name

  • Request-Name

Java-Exceptions

Exception-Operationen, die für die Analyse der Java-Exceptions aufgezeichnet wurden, tauchen auch in den Thread-Aktivitäten auf und haben hier die Form

  • "throw <Exception-Klasse> in <Methodenlokation>"

  • "catch <Exception-Klasse> in <Methodenlokation>"

  • "finally due to <Exception-Klasse> in <Methodenlokation>"

  • "clear (JNI) <Exception-Klasse> in <Methodenlokation>"

Nach Einfachklick auf eine Ergebniszeile erscheint im unteren Teil ein Bild mit Detailinformationen zur Exception-Klasse, zum Thread und zur Methodenlokation.

Monitor Trace

Aktivitäten, die im Monitor Trace aufgezeichnet wurden, haben die Form "wait on monitor of <Objekt-Id>" oder "notify all threads waiting on monitor of <Objekt-Id>".

Nach Einfachklick auf eine Ergebniszeile erscheint im unteren Teil ein Bild mit Detailinformationen zum betrachteten Monitor, zum wartenden und ggf. den benachrichtigten Threads sowie zur Methodenlokation, wo die Monitoroperation stattfand.

Shared Lock Trace

Aktivitäten, die im Shared Lock Trace aufgezeichnet wurden, haben die Form

"shared lock <Sperrname> <Sperrtyp> enter" oder "shared lock <Sperrname> <Sperrtyp> leave"

und bezeichnen den Erhalt bzw. die Freigabe einer VM-übergreifenden Sperre.

Nach Einfachklick auf eine Ergebniszeile erscheint im unteren Teil ein Bild mit Detailinformationen zur betrachteten Sperroperation, zum Thread und zur Methodenlokation, wo die Operation stattfand.

Weitere Informationen

Profiling-Daten auswerten