########################################################################### # jvm-server.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 # # # # See jvm8-server.options and jvm11-server.options for Java version # # specific options. # ########################################################################### ###################### # 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 (30000ms), which is the amount of time a node waits # before joining the ring. #-Dcassandra.ring_delay_ms=ms # Set the SSL port for encrypted communication. (Default: 7001) #-Dcassandra.ssl_storage_port=port # 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 # To disable dynamic calculation of the page size used when indexing an entire partition (during # initial index build/rebuild). If set to true, the page size will be fixed to the default of # 10000 rows per page. #-Dcassandra.force_default_indexing_page_size=true # Imposes an upper bound on hint lifetime below the normal min gc_grace_seconds #-Dcassandra.maxHintTTL=max_hint_ttl_in_seconds ######################## # GENERAL JVM SETTINGS # ######################## # enable assertions. highly suggested for correct application functionality. -ea # disable assertions for net.openhft.** because it runs out of memory by design # if enabled and run for more than just brief testing -da:net.openhft... # enable thread priorities, primarily so we can give periodic tasks # a lower priority to avoid interfering with client workload -XX:+UseThreadPriorities # Enable heap-dump if there's an OOM -XX:+HeapDumpOnOutOfMemoryError # Per-thread stack size. -Xss256k # 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 -XX:+UseNUMA # 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 ################################### # EXPIRATION DATE OVERFLOW POLICY # ################################### # Defines how to handle INSERT requests with TTL exceeding the maximum supported expiration date: # * REJECT: this is the default policy and will reject any requests with expiration date timestamp after 2038-01-19T03:14:06+00:00. # * CAP: any insert with TTL expiring after 2038-01-19T03:14:06+00:00 will expire on 2038-01-19T03:14:06+00:00 and the client will receive a warning. # * CAP_NOWARN: same as previous, except that the client warning will not be emitted. # #-Dcassandra.expiration_date_overflow_policy=REJECT