Java Flight Recorder Support

Generate JZR reports with JFR recordings

Jeyzer can analyze JFR recordings : a major feature in the Jeyzer solution and a good ally to investigate your Java incidents.

As a reminder, Java Flight Recorder (JFR) is a standard feature available in every Java installation.
JFR permits to collect selectively any JVM internal event and store it in a JFR file.
Since Java 9 (or any recent Openjdk 8), the JFR functionality is available for free.

Java Flight Recorder Support

Generate JZR reports with JFR recordings

   Jeyzer 2.4 introduces the JFR analysis : a major feature in the Jeyzer solution and a good ally to investigate your Java incidents.

   As a reminder, Java Flight Recorder (JFR) is a standard feature available in every Java installation. JFR permits to collect selectively any JVM internal event and store it in a JFR file.
Since Java 9, the JFR functionality is available for free.

Why using Jeyzer with JFR ?

      A JFR recording is usually analyzed with Java Mission Control (JMC). So why using Jeyzer ?

      The main advantage is definitively the JZR report : once generated, you can share and open it everywhere with Excel.
The JZR report offers also multiple levels of reading to adapt to the DevOps, the Support and R&D audiences.
Like an AWR report on Oracle, the JZR report usually transits through those actors, while stored on a ticket system such as JIRA.

      In comparison, the JFR analysis and reading with JMC requires the JMC application to be installed locally.
And JMC provides a very detailed technical interface over the JVM events : its audience target is mainly R&D.

       Jeyzer provides also these advantages :

  • Active focus on the threads of interest
  • Centralized analysis in your organization with the Jeyzer Web Analyzer (free) or Online analysis
  • Advanced issue detection rules including functional ones (*)
  • De-obfuscation support (*)

(*) The last 2 points may require an application specific profile in Jeyzer.

Check also our article covering in details the comparison between Jeyzer and JFR.

And... why using JFR with Jeyzer ?

Although the Jeyzer Recorder is the recommended way to go, you may use the Java Flight Recorder as a replacement solution, especially if the Jeyzer Recorder is not – yet – validated for your production environment.

How does it work ?

Prerequisites : Openjdk 8u282+ or Java 11+ must be used. Otherwise go for the Jeyzer Recorder.

Java Flight Recorder will perform thread dumps every 30 seconds and collect only the information required for a Jeyzer analysis (CPU, memory, Garbage collection, Java modules, system info).

To achieve this selective collection, a customized JFR configuration is provided in any Jeyzer installation. It permits also to limit the performance impact of JFR over the target application.

Immediate usage

Deploy the jeyzer.jfc file in the target environment.

Add the following VM parameter to the command line of the application to monitor (replace the <> as indicated) :

–XX:StartFlightRecording=maxage=6h,maxsize=100M,dumponexit=true,settings=<JFR configuration>,filename=<JFR recording>

     <JFR configuration> is the path to the above jeyzer.jfc file
     <JFR recording> is the path to the resulting JFR recording

Start your application. Let it run for some time.

Stop it properly (service shutdown, kill -10, CTRL+C..) to let the JVM writing the latest events.

Note : the maxage and maxsize parameters indicate the maximum retention period of the collected VM data.

JFR analysis

Start the Jeyzer Web Analyzer and connect to it.

Drop the JFR recording (zipped or not) in the upload section of the analyzer.

Select your application profile if any. Otherwise select the neutral Portal profile.

Generate the report.

Note : the Jeyzer Online Analyzer can also achieve the same, using the Jeyzer portal profile.

Example

The below sample is issued from a Jeyzer demo run :

  • The JFR recording – which you can drop in the online analyzer
  • The resulting JZR report – which you can also get with the online analyzer