Bootstrap Checks

If you are binding to a network reachable IP address, CrateDB performs a number of bootstrap checks during startup. These checks examine your setup and will prevent startup if a problem is detected.

This best practices guide is intended to help you configure your setup so that CrateDB passes the bootstrap checks and can perform optimally.

If you are binding to the loopback address, the bootstrap checks will not be run, but it is still a good idea to follow these instructions.

System Settings

Official Packages

If you are using one of the official packages, all of the necessary operating system configuration is handled for you.

Tarball

If you have installed CrateDB from a tarball, you must manually configure your operating system.

Here’s what needs to be configured:

  • File descriptors
    • Set hard and soft limit to unlimited
  • Memory lock
    • Set hard and soft limit to unlimited
  • Threads
    • Set hard and soft limit to 2048
  • Virtual memory
    • Set hard and soft limit to unlimited (on Linux only)
  • Memory map
    • Set limit to 262144 (on Linux only)

You might be able to set these limits per process or per user, depending on your operating system and setup. And for this to take effect, you may also have to set these limits for the superuser.

Linux

If you’re running Linux, you can perform the necessary configuration by following these instructions.

Edit /etc/security/limits.conf and configure these lines:

crate soft nofile unlimited
crate hard nofile unlimited

crate soft memlock unlimited
crate hard memlock unlimited

crate soft nproc 2048
crate hard nproc 2048

crate soft as unlimited
crate hard as unlimited

Here, crate is the user that runs the CrateDB daemon.

Edit /etc/sysctl.conf and configure:

vm.max_map_count = 262144

Garbage Collection

CrateDB uses the CMS garbage collector and this should not be changed.

Warning

If you use a different JVM garbage collector you may encounter serious performance degradation or even data corruption.