| ########################################################################### | 
 | #                             jvm.options                                 # | 
 | #                                                                         # | 
 | # - all flags defined here will be used by cassandra to startup the JVM   # | 
 | # - one flag should be specified per line                                 # | 
 | # - lines that do not start with '-' will be ignored                      # | 
 | # - only static flags are accepted (no variables or parameters)           # | 
 | # - dynamic flags will be appended to these on cassandra-env              # | 
 | ########################################################################### | 
 |  | 
 | ###################### | 
 | # STARTUP PARAMETERS # | 
 | ###################### | 
 |  | 
 | # Uncomment any of the following properties to enable specific startup parameters | 
 |  | 
 | # In a multi-instance deployment, multiple Cassandra instances will independently assume that all | 
 | # CPU processors are available to it. This setting allows you to specify a smaller set of processors | 
 | # and perhaps have affinity. | 
 | #-Dcassandra.available_processors=number_of_processors | 
 |  | 
 | # The directory location of the cassandra.yaml file. | 
 | #-Dcassandra.config=directory | 
 |  | 
 | # Sets the initial partitioner token for a node the first time the node is started. | 
 | #-Dcassandra.initial_token=token | 
 |  | 
 | # Set to false to start Cassandra on a node but not have the node join the cluster. | 
 | #-Dcassandra.join_ring=true|false | 
 |  | 
 | # Set to false to clear all gossip state for the node on restart. Use when you have changed node | 
 | # information in cassandra.yaml (such as listen_address). | 
 | #-Dcassandra.load_ring_state=true|false | 
 |  | 
 | # Enable pluggable metrics reporter. See Pluggable metrics reporting in Cassandra 2.0.2. | 
 | #-Dcassandra.metricsReporterConfigFile=file | 
 |  | 
 | # Set the port on which the CQL native transport listens for clients. (Default: 9042) | 
 | #-Dcassandra.native_transport_port=port | 
 |  | 
 | # Overrides the partitioner. (Default: org.apache.cassandra.dht.Murmur3Partitioner) | 
 | #-Dcassandra.partitioner=partitioner | 
 |  | 
 | # To replace a node that has died, restart a new node in its place specifying the address of the | 
 | # dead node. The new node must not have any data in its data directory, that is, it must be in the | 
 | # same state as before bootstrapping. | 
 | #-Dcassandra.replace_address=listen_address or broadcast_address of dead node | 
 |  | 
 | # Allow restoring specific tables from an archived commit log. | 
 | #-Dcassandra.replayList=table | 
 |  | 
 | # Allows overriding of the default RING_DELAY (1000ms), which is the amount of time a node waits | 
 | # before joining the ring. | 
 | #-Dcassandra.ring_delay_ms=ms | 
 |  | 
 | # Set the port for the Thrift RPC service, which is used for client connections. (Default: 9160) | 
 | #-Dcassandra.rpc_port=port | 
 |  | 
 | # Set the SSL port for encrypted communication. (Default: 7001) | 
 | #-Dcassandra.ssl_storage_port=port | 
 |  | 
 | # Enable or disable the native transport server. See start_native_transport in cassandra.yaml. | 
 | # cassandra.start_native_transport=true|false | 
 |  | 
 | # Enable or disable the Thrift RPC server. (Default: true) | 
 | #-Dcassandra.start_rpc=true/false | 
 |  | 
 | # Set the port for inter-node communication. (Default: 7000) | 
 | #-Dcassandra.storage_port=port | 
 |  | 
 | # Set the default location for the trigger JARs. (Default: conf/triggers) | 
 | #-Dcassandra.triggers_dir=directory | 
 |  | 
 | # For testing new compaction and compression strategies. It allows you to experiment with different | 
 | # strategies and benchmark write performance differences without affecting the production workload.  | 
 | #-Dcassandra.write_survey=true | 
 |  | 
 | # To disable configuration via JMX of auth caches (such as those for credentials, permissions and | 
 | # roles). This will mean those config options can only be set (persistently) in cassandra.yaml | 
 | # and will require a restart for new values to take effect. | 
 | #-Dcassandra.disable_auth_caches_remote_configuration=true | 
 |  | 
 | ######################## | 
 | # GENERAL JVM SETTINGS # | 
 | ######################## | 
 |  | 
 | # enable assertions.  disabling this in production will give a modest | 
 | # performance benefit (around 5%). | 
 | -ea | 
 |  | 
 | # enable thread priorities, primarily so we can give periodic tasks | 
 | # a lower priority to avoid interfering with client workload | 
 | -XX:+UseThreadPriorities | 
 |  | 
 | # allows lowering thread priority without being root on linux - probably | 
 | # not necessary on Windows but doesn't harm anything. | 
 | # see http://tech.stolsvik.com/2010/01/linux-java-thread-priorities-workar | 
 | -XX:ThreadPriorityPolicy=42 | 
 |  | 
 | # Enable heap-dump if there's an OOM | 
 | -XX:+HeapDumpOnOutOfMemoryError | 
 |  | 
 | # Per-thread stack size. | 
 | -Xss256k | 
 |  | 
 | # Larger interned string table, for gossip's benefit (CASSANDRA-6410) | 
 | -XX:StringTableSize=1000003 | 
 |  | 
 | # Make sure all memory is faulted and zeroed on startup. | 
 | # This helps prevent soft faults in containers and makes | 
 | # transparent hugepage allocation more effective. | 
 | -XX:+AlwaysPreTouch | 
 |  | 
 | # Disable biased locking as it does not benefit Cassandra. | 
 | -XX:-UseBiasedLocking | 
 |  | 
 | # Enable thread-local allocation blocks and allow the JVM to automatically | 
 | # resize them at runtime. | 
 | -XX:+UseTLAB | 
 | -XX:+ResizeTLAB | 
 |  | 
 | # http://www.evanjones.ca/jvm-mmap-pause.html | 
 | -XX:+PerfDisableSharedMem | 
 |  | 
 | # Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See | 
 | # http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version: | 
 | # comment out this entry to enable IPv6 support). | 
 | -Djava.net.preferIPv4Stack=true | 
 |  | 
 | ### Debug options | 
 |  | 
 | # uncomment to enable flight recorder | 
 | #-XX:+UnlockCommercialFeatures | 
 | #-XX:+FlightRecorder | 
 |  | 
 | # uncomment to have Cassandra JVM listen for remote debuggers/profilers on port 1414 | 
 | #-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1414 | 
 |  | 
 | # uncomment to have Cassandra JVM log internal method compilation (developers only) | 
 | #-XX:+UnlockDiagnosticVMOptions | 
 | #-XX:+LogCompilation | 
 |  | 
 | ################# | 
 | # HEAP SETTINGS # | 
 | ################# | 
 |  | 
 | # Heap size is automatically calculated by cassandra-env based on this | 
 | # formula: max(min(1/2 ram, 1024MB), min(1/4 ram, 8GB)) | 
 | # That is: | 
 | # - calculate 1/2 ram and cap to 1024MB | 
 | # - calculate 1/4 ram and cap to 8192MB | 
 | # - pick the max | 
 | # | 
 | # For production use you may wish to adjust this for your environment. | 
 | # If that's the case, uncomment the -Xmx and Xms options below to override the | 
 | # automatic calculation of JVM heap memory. | 
 | # | 
 | # It is recommended to set min (-Xms) and max (-Xmx) heap sizes to | 
 | # the same value to avoid stop-the-world GC pauses during resize, and | 
 | # so that we can lock the heap in memory on startup to prevent any | 
 | # of it from being swapped out. | 
 | #-Xms4G | 
 | #-Xmx4G | 
 |  | 
 | # Young generation size is automatically calculated by cassandra-env | 
 | # based on this formula: min(100 * num_cores, 1/4 * heap size) | 
 | # | 
 | # The main trade-off for the young generation is that the larger it | 
 | # is, the longer GC pause times will be. The shorter it is, the more | 
 | # expensive GC will be (usually). | 
 | # | 
 | # It is not recommended to set the young generation size if using the | 
 | # G1 GC, since that will override the target pause-time goal. | 
 | # More info: http://www.oracle.com/technetwork/articles/java/g1gc-1984535.html | 
 | # | 
 | # The example below assumes a modern 8-core+ machine for decent | 
 | # times. If in doubt, and if you do not particularly want to tweak, go | 
 | # 100 MB per physical CPU core. | 
 | #-Xmn800M | 
 |  | 
 | ################# | 
 | #  GC SETTINGS  # | 
 | ################# | 
 |  | 
 | ### CMS Settings | 
 |  | 
 | -XX:+UseParNewGC | 
 | -XX:+UseConcMarkSweepGC | 
 | -XX:+CMSParallelRemarkEnabled | 
 | -XX:SurvivorRatio=8 | 
 | -XX:MaxTenuringThreshold=1 | 
 | -XX:CMSInitiatingOccupancyFraction=75 | 
 | -XX:+UseCMSInitiatingOccupancyOnly | 
 | -XX:CMSWaitDuration=10000 | 
 | -XX:+CMSParallelInitialMarkEnabled | 
 | -XX:+CMSEdenChunksRecordAlways | 
 | # some JVMs will fill up their heap when accessed via JMX, see CASSANDRA-6541 | 
 | -XX:+CMSClassUnloadingEnabled | 
 |  | 
 | ### G1 Settings (experimental, comment previous section and uncomment section below to enable) | 
 |  | 
 | ## Use the Hotspot garbage-first collector. | 
 | #-XX:+UseG1GC | 
 | # | 
 | ## Have the JVM do less remembered set work during STW, instead | 
 | ## preferring concurrent GC. Reduces p99.9 latency. | 
 | #-XX:G1RSetUpdatingPauseTimePercent=5 | 
 | # | 
 | ## Main G1GC tunable: lowering the pause target will lower throughput and vise versa. | 
 | ## 200ms is the JVM default and lowest viable setting | 
 | ## 1000ms increases throughput. Keep it smaller than the timeouts in cassandra.yaml. | 
 | #-XX:MaxGCPauseMillis=500 | 
 |  | 
 | ## Optional G1 Settings | 
 |  | 
 | # Save CPU time on large (>= 16GB) heaps by delaying region scanning | 
 | # until the heap is 70% full. The default in Hotspot 8u40 is 40%. | 
 | #-XX:InitiatingHeapOccupancyPercent=70 | 
 |  | 
 | # For systems with > 8 cores, the default ParallelGCThreads is 5/8 the number of logical cores. | 
 | # Otherwise equal to the number of cores when 8 or less. | 
 | # Machines with > 10 cores should try setting these to <= full cores. | 
 | #-XX:ParallelGCThreads=16 | 
 | # By default, ConcGCThreads is 1/4 of ParallelGCThreads. | 
 | # Setting both to the same value can reduce STW durations. | 
 | #-XX:ConcGCThreads=16 | 
 |  | 
 | ### GC logging options -- uncomment to enable | 
 |  | 
 | -XX:+PrintGCDetails | 
 | -XX:+PrintGCDateStamps | 
 | -XX:+PrintHeapAtGC | 
 | -XX:+PrintTenuringDistribution | 
 | -XX:+PrintGCApplicationStoppedTime | 
 | -XX:+PrintPromotionFailure | 
 | #-XX:PrintFLSStatistics=1 | 
 | #-Xloggc:/var/log/cassandra/gc.log | 
 | -XX:+UseGCLogFileRotation | 
 | -XX:NumberOfGCLogFiles=10 | 
 | -XX:GCLogFileSize=10M |