Recommended production settings
Recommendations for production environments.
Recommendations for production environments; adjust them accordingly for your implementation.
User resource limits
You can view the current limits using the ulimit -a command. Although limits can also be temporarily set using this command, DataStax recommends making the changes permanent:
cassandra - memlock unlimited cassandra - nofile 100000 cassandra - nproc 32768 cassandra - as unlimited
* - memlock unlimited * - nofile 100000 * - nproc 32768 * - as unlimited
root - memlock unlimited root - nofile 100000 root - nproc 32768 root - as unlimited
* - nproc 32768
vm.max_map_count = 1048575
$ sudo sysctl -p
$ cat /proc/<pid>/limits
Disable swap
Disable swap entirely. This prevents the Java Virtual Machine (JVM) from responding poorly because it is buried in swap and ensures that the OS OutOfMemory (OOM) killer does not kill Cassandra.
sudo swapoff --all
To make this change permanent, remove all swap file entries from /etc/fstab.
For more information, see Nodes seem to freeze after some period of time.
Synchronize clocks
The clocks on all nodes should be synchronized. You can use NTP (Network Time Protocol) or other methods.
This is required because columns are only overwritten if the timestamp in the new version of the column is more recent than the existing column.
Optimum blockdev --setra settings for RAID
Typically, a readahead of 512 is recommended, especially on Amazon EC2 RAID0 devices.
Check to ensure setra is not set to 65536:
sudo blockdev --report /dev/<device>
To set setra:
sudo blockdev --setra 512 /dev/<device>
Java Virtual Machine
The latest 64-bit version of Java 6 or 7 is recommended, not the OpenJDK.
Java Native Access
Java Native Access (JNA) is required for production installations.