This document covers the configuration of Cassandra 4.0.X, included with Apigee Edge for Private Cloud versions 4.53.00 or later. Refer to the appendix section for details on performing the configurations described here.
Garbage collector configuration
Switch to using CMS
By default, Apigee ships Cassandra with the G1 Garbage Collector, which is recommended for Cassandra 4.X. However, for varied use cases and your own infrastructure, as in Edge for Private Cloud, you may choose to switch to the CMS Garbage Collector. For heap sizes larger than 8 GB, Apigee strongly recommends using G1GC.
To use the CMS Garbage Collector, set the following configuration:
conf_jvm_options_gc_type=cmsTo revert to using the G1 Garbage Collector, remove this configuration.
Modify CMS garbage collector settings
Apigee provides default parameters for the CMS Garbage Collector. These parameters apply when Cassandra uses CMS. To change these parameters, use the config conf_jvm_options_cms_gc_setting_lines. Set all relevant JVM parameters for CMS GC in a single line, separated by “\n”.
Example:
conf_jvm_options_cms_gc_setting_lines=-XX:+UseParNewGC\n-XX:+UseConcMarkSweepGC\n-XX:+CMSParallelRemarkEnabled\n-XX:SurvivorRatio=8\n-XX:MaxTenuringThreshold=1\n-XX:CMSInitiatingOccupancyFraction=75\n-XX:+UseCMSInitiatingOccupancyOnly\n-XX:CMSWaitDuration=10000\n-XX:+CMSParallelInitialMarkEnabled\n-XX:+CMSEdenChunksRecordAlways\n-XX:+CMSClassUnloadingEnabledModify G1GC garbage collector settings
Apigee provides default parameters for the G1 Garbage Collector. These parameters apply when the default G1GC is enabled. If you switch to CMS, these settings do not apply. To change the G1GC parameters, use the config conf_jvm_options_g1_gc_setting_lines. Set all relevant JVM parameters for G1 GC in a single line, separated by “\n”.
Example:
conf_jvm_options_g1_gc_setting_lines=-XX:+UseG1GC\n-XX:G1RSetUpdatingPauseTimePercent=5\n-XX:MaxGCPauseMillis=500\n-XX:InitiatingHeapOccupancyPercent=50\n-XX:ParallelGCThreads=8\n-XX:ConcGCThreads=8\n-XX:+ParallelRefProcEnabled\n-XX:MaxTenuringThreshold=1\n-XX:G1HeapRegionSize=32m\n-XX:G1ReservePercent=15Use your own GC settings
To ignore all of Apigee’s presets for both G1GC and CMS, set the following configs:
conf_jvm_options_gc_type=customSpecify all GC settings for the JVM in conf_jvm_options_custom_settings, separating each setting by “\n”.
Example:
conf_jvm_options_gc_type=custom
conf_jvm_options_custom_settings=-XX:+UseParallelGC\n-XX:GCTimeRatio=19Configuring heap sizes
Apigee strongly recommends operating Cassandra with no more than 8 GB of heap space. Checks to limit the heap size to 8 GB are in $APIGEE_ROOT/apigee-cassandra/conf/cassandra-env.sh.
To specify your own heap sizing without manually disabling checks, use the config conf_jvm_options_custom_settings. Separate each setting by “\n”.
Example:
conf_jvm_options_custom_settings=-Xmx8G\n-Xms8GConfiguring general JVM settings
To add JVM parameters to Cassandra, specify all JVM configurations in a single line separated by “\n” for the config conf_jvm_options_custom_settings.
Example:
conf_jvm_options_custom_settings=-Dcassandra.start_rpc=true\n-Dcassandra.expiration_date_overflow_policy=CAP\n-XX:+FlightRecorder\n-XX:+UnlockCommercialFeaturesAppendix
How to set any Cassandra configuration
- Create or edit the Cassandra configuration override file:
vi $APIGEE_ROOT/customer/application/cassandra.properties - Add, remove, or modify the configuration line as required.
- Save the file and ensure it is owned and readable by the “apigee” user:
chown apigee:apigee $APIGEE_ROOT/customer/application/cassandra.properties - Restart the Cassandra service on the node:
apigee-service apigee-cassandra restart - Repeat these steps on each Cassandra node, one by one.
Varied types of configuration
The configuration conf_jvm_options_custom_settings can pass different parameters to the Cassandra JVM. Combine various Java parameters into a single configuration and separate by “\n”.
Example:
conf_jvm_options_custom_settings=-XX:+FlightRecorder\n-XX:+UnlockCommercialFeatures\n-Xmx8G\n-Xms8G