With using Zing for Cassandra you don't need to spend time in tuning the JVM Garbage Collection parameters.
Here a quick overview for switching from other JVMs to Zing on a Cassandra node:
The following documentation relies on Zing version ZVM 19.07 or newer as since this version Zing does not need the ZST component any more which was required in earlier versions. If you deploy a new Cassandra installation make sure that the ZST component is disabled or not installed by running the command "zing-ps -V". If it shows a version number, ZST is still active. If it returns "Zing-memory is stopped" or "command not found", ZST is disabled or not installed. ZST is now only an optional tuning for Zing and new installations should start without it as a wrong configuration of ZST can reduce performance with Java applications using much native memory outside of the Java heap as Cassandra does.
First, after stopping the Cassandra service on the node, install Zing. The fastest way is to start on the Zing quick start page using the Zing package repository. Then change the JVM setting for Cassandra:
That's all. You don't need to change any other JVM parameter in the cassandra-env.sh configuration. Zing is ignoring non-Zing -XX parameters which you might have added before to tune other GC implementations.
After restarting the Cassandra node you can check with the following command if the switch to Zing was successful and the java command used is actually Zing and not a different JVM. A Zing java process returns "Zing 64-Bit Tiered VM" as version information.
jcmd JAVAPID VM.version
With JAVAPID the process ID of the java command as listed by just running "jcmd" without parameters.
For production systems, the following change is recommended:
- Disable the Cassandra GCInspector log messages as it might report long running GC phases which are of no concern when using Zing as those logged times are phases of the GC which are run in parallel to the application and don't pause the application when using Zing. The log messages written to the Cassandra system.log are of the following pattern:
INFO [Service Thread] DATE GCInspector.java:284 - GPGC New GC in 300ms. GenPauseless
To disable them, add the following line to cassandra_install_location/conf/logback.xml:
<logger name="org.apache.cassandra.service.GCInspector" level="ERROR"/>
For further questions about Zing configuration or system performance, please ask Azul Support.
Cassandra on Zing was never affected by the following JDK bug as a fix in Zing was already included in the Zing releases around the time this bug was triggered by a change added with JDK 8u161 / 8u162: https://issues.apache.org/jira/browse/CASSANDRA-14173