This article provides information on why Java performance statistics are no longer available on DataStax Enterprise nodes.
The Java virtual machine (JVM) collects and logs performance statistics which are used for monitoring and tuning activities. The performance data get collected and written to
/tmp/hsperfdata on a node. Command-line utilities bundled with Java such as
jstat read this data to report a JVM's performance.
If there is no data or the utility does not have read permissions, information about the JVM is not available to report.
For Cassandra 2.2 and later, performance statistics data collection has been disabled for the JVM (CASSANDRA-9242) in the
This is the default for DSE 5.0 and later (Cassandra 3.0+).
This was done as a result of the discovery that when the JVM saves the data to a memory-mapped file on
/tmp/hsperfdata, the operation is synchronous and gets blocked until the IO completes. The JVM is paused during this time, sometimes for hundreds of milliseconds significantly impacting GC performance.
This is discussed in an often-cited blog post from Evan Jones, "The Four Month Bug: JVM statistics cause garbage collection pauses". Disabling performance statistics collection ironically improves the performance of the JVM.
Enable performance data collection on nodes only when actively monitoring performance by commenting out the following line in
Note that this will require a restart of DSE to take effect. It is recommended to disable it again when no longer actively monitoring the JVM's performance.