2016-04-08 7 views
0

Ich habe eine Java-Flight-Recorder-Aufzeichnung für 2 Minuten auf einem JBoss EAP 6.1-Anwendungsserver unter Last ausgeführt. Ich habe das Auszählen von Ausnahmen aktiviert (Java-Anwendung => Java-Ausnahme => Aktiviert = Wahr) und ich bin überrascht von der Anzahl der gemeldeten Ausnahmen.Werden im Java Flight Recorder Ausnahmen für die Lebensdauer von JVM gezählt?

Wenn ich in der Ansicht Events => Histogram mit dem Ereignistyp "Java Application/Java Exception" und Group nach "Event Thread" suche, haben 10 Threads jeweils über 2000 Ausnahmen. 3 von ihnen haben über 3000 Ausnahmen.

Dies ist die Gesamtzahl der gemeldeten Kreationen von Throwable oder Fehler:

Stack Trace       Sample Count 
java.lang.Throwable.<init>()    128 059 
java.lang.Throwable.<init>(String)  116 107 
java.lang.Throwable.<init>(Throwable)  39 207 
java.lang.Error.<init>()      7 
java.lang.Throwable.<init>(String, Throwable) 2 

Also ich frage mich, ob all diese Ausnahmen während der Zeitspanne von 2 Minuten trat ich aufgenommen oder sind seit Anfang der sie gezählt JVM?

Antwort

0

"Sample Count" -Spalte in der Registerkarte Histogramm aggregiert die Anzahl der Ereignisse in Bezug auf einen Feldwert, in Ihrem Fall glaube ich das oberste Frame des Stack-Trace. Die Zahl 128 059 bedeutet also, dass während Ihrer Aufnahme so viele Events mit einem Top-Frame von "java.lang.Throwable.<init>()" ausgestrahlt wurden.

Dies ist möglicherweise nicht die gesuchte Information.

Ich empfehle die Verwendung der Aufzeichnungsvorlage, um Exceptions/Errors zu aktivieren und die Registerkarte Exceptions anzuzeigen, anstatt die Einstellungen für einzelne Ereignisse zu bearbeiten und die Registerkarte Histogram zu verwenden.

0

TL; DR: Java Ausnahmeereignisse zählen nur, was während der Aufzeichnung geschieht. Das Ereignis "Exception Statistics" zählt Ausnahmen während der JVM-Lebensdauer (oder einer anderen globalen JVM-Zeit).

Es gibt zwei verschiedene Datenpunkte, die Java-Ausnahme- und Java-Fehlerereignisse und das Statistics/Throwables-Ereignis. Wenn Sie nur die Java-Ausnahme/Fehler betrachten, sind die Ereignisse in der Aufzeichnung diejenigen, die während dieser Zeit aufgetreten sind. Das Statistics/Throwables-Ereignis wird in regelmäßigen Intervallen ausgeführt und kann vom Start der JVM oder möglicherweise vom Start der JFR-Engine oder vom Beginn der ersten JFR-Aufzeichnung in der laufenden JVM stammen. Es ist meist interessant, diese Werte miteinander zu vergleichen. Dieses Ereignis wird oben in der Registerkarte "Code/Ausnahmen" in den beiden Textfeldern angezeigt.

Beachten Sie auch, dass die Ausnahme/Fehlerereignisse im Konstruktor auftreten, nicht, wenn es tatsächlich

geworfen wird Wenn Ihr Programm eine Menge von Java Fehlerereignissen erstellt, gibt es einige Probleme mit doppelter Buchführung von dieser, so die Zahlen möglicherweise falsch (dies haben wir in der nächsten JMC-Version kompensiert, aber nicht in JMC 5.5) Andere Throwable-Unterklassen werden als Ausnahmeereignisse angezeigt.