Metrics Analysis
A new Metric mode has been added within the console that provides a high level view of the last 60 minutes of JVM and JDBC activity. The JVM counters such as waiting and blocking relate to all activity within the VM including non-JDBC work. The information visualizations associated with the mode allow for visual comparison and correlation of a large multiple of JVM/JDBC counters. It is relatively easy to correlate across metrics via the spark-line bar charts graphics in the table view. Patterns of behaviour over time are equally visible complimenting the correlation efficiencies.




JXInsight Distributed eXtensible Tracing

The JVMPI profiler has been augmented to allow users to profile applications at various levels (methods, user transactions, workflows, framework interceptions points, and AOP point cuts). The new Trace API (com.jinspired.jdbinsight.trace.Tracer – jdbidriver.jar) provides flexible instrumentation and measurement capabilities allowing for specific individual code blocks to be profiled in terms of object allocation, thread waiting and blocking, GC and CPU and wall clock times. It is even possible to profile a thread call stack sequence – a trace can be started in a higher calling method and stopped in a called method.

Traces can be nested and transferred between client and server processes allowing for distributed trace correlation and JVM statistic aggregation. All traces are associated with the calling thread. The traces started and stopped can be accessed from within the JDBInsight/JXInsight console by creating a server, selecting the profile mode and then switching to the Traces perspective. To profile a particular code block surround it with the following code template

  try {
    Tracer.start(“mytraceid”);
    // code block to be profiled
  } finally {
    Tracer.stop();
  }



JXInsight 1.0 offers two extensions for distributed tracing and profiling. The VisiBroker trace extension allows for tracing of remote calls from a CORBA client to a CORBA server as well as profiling the time and resource consumption of inbound CORBA server requests. Neither JVMs need to be JDBC clients. The Tracer class will start a server profiler within both JVM’s allowing for JDBInsight consoles to connect and extract tracing and profiling information. By creating a JDBInsight cluster containing both client and server processes the console will be able to associate client traces sent over the wire with server traces this can be further extended by the trace console reconciliation engine to link a particular client trace with a SQL operation on a database table or column.



The Servlet/JSP extension enables the profiling and tracing of servlet service requests. Again there is no requirement for any code within the container to execute JDBC work. By adding the trace filter to the web.xml of a J2EE application users can have high level profiling of inbound http service requests. Statistics for clock, CPU, blocking and waiting, GC and object allocations can be captured and aggregated at various levels via the flexible trace identifiers configuration. In the event that JDBC work is initiated during the scope of a trace transaction paths and interceptions will be associated. The association can then be navigated within the console for a load profile model.


Additional Console Commands
• Dump Profile Dumps the current profile model to the servers local file system.
• JVM Properties Displays the JVM System properties including those set by the JDBInsight mode.
• JVM Threads Displays the current thread groups and threads within the server JVM process.
• Recording Provides a dialog that automates the reset, snapshot and export actions for use case testing.
• Shutdown Calls System.exit(0) in the remote JVM process.






Java Source Code Viewer Integrated Into Console

The console now provides the ability to view the source of frames on the call stack of intercepted methods. The first step in integrating the source viewing is to mount the source directory within the console. The source directory mounted should be the parent of the first package directory. Right mouse clicking on the source directory and selecting the Add to Source Path will place all the directory's sub-directories on the search path for Java sources. Jar and Zip files containing Java sources can also be added to the source path. All immediate directories will be searched. The JDBInsight console can browse inside zip or jar files viewing source files or directories. It is possible to add nested directories within a zip or jar file to the consoles source path if the zip/jar file has been packaged with higher parent directories.




Annotations of Exported Snapshots

It is now possible to attach notes to individual attribute values within a snapshot. Currently this functionality is available via the table view menus Attach Note, Open Note and Delete Note. This reduces the need to create separate textual documents noting observations found within snapshots. Now different users can collaborate in the performance engineering exercise by adding notes into the snapshot and exchanging snapshots via email.



Notes are stored in a separate file than the snapshot. The notes file is simply the snapshot full filename with a ".notes" extension. This means it is also possible to restrict the viewing of notes by not sending the “.notes file. The notes file is automatically loaded into the snapshot on load within the console. The notes file must be placed in the same directory of the snapshot. Notes are indicated by a red box in the top left hand corner of the cell value. In the future notes will also be visible from within tree views and other visualizations. Nearly all attribute values can be annotated with text.


Statistical Distributions and Improved Transaction / SQL Analysis

• The distribution related columns (Median, Mode, Inter-quartile, Semi-quartile, Lower-quartile, Upper-quartile, Standard Deviation, and Coefficient of Variance) can help determine whether the average values reported are not affected by outliners. The Average column has a “Sparkline” graphic showing a compressed bar chart for the distribution. There is also a variation of the Box and Wisker Plot graphic showing graphical the values of the distribution related columns.
• The SQL analysis related columns (Columns (*), Tables (*)) help quickly identify transaction paths that select a from a large number of tables and columns. There are counts for columns and tables based on access type: Select, Insert, Update, Delete and Query.
• The row retrieval counts and total columns help quickly identify transaction paths processing large amounts of data.






Code Sources and JXInsight Traces added to Call Trace Analysis

The view now includes the option of displaying Java packages and Code Sources across the various Java related partitions (Presentation, Process, and Persistence). This can help consolidate call statistics into more meaningful application units. Call dependencies can also be determined via this view. Selecting a code source (typically a jar) or Java package, results in the displaying of all interceptions with a direct or indirect association with the code source or package. The view also includes a new partition, Traces, that contains JXInsight traces. Lines are drawn from traces to database objects (tables and columns) based on the active trace stack during the interception of JDBC method calls.



Increased OS Platform Coverage
• Mac OSX
• AIX



Additional Terminal Commands
The terminal add-on now permits the displaying of metric information, this is a high level view of the last 60 minutes of JVM and JDBC activity. The information provides crucial information related to transactions, jdbc, threads amongst others. The metrics command has the ability to output this high level summary categorized by type and value. The –repeat option allows the metric information to be re-displayed or output to a file after a period of time, specified in seconds.




Additional Call Stack Classifications

• iBatis
• Java Swing
• JMS



Improved and Extended Documentation
The Install Guide has more driver and container examples. The User Guide has new chapters as well as additional tips.Each platform installer includes native agents for Windows, Linux, Solaris, AIX and HP-UX platforms.