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.
Tip
If you are using Docker, these checks are dependent on the host system. You must configure the host system appropriately if you wish to run CrateDB on Docker. Consult the additional documentation on Docker resource constraints for more information.
Table of contents
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 4096 (CrateDB versions < 3.0.0 will also work with 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 4096
crate hard nproc 4096
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
To apply this change, run:
$ sudo sysctl -p
This command will this reload all settings from /etc/sysctl.conf
.
Tip
Alternatively, vm.max_map_count
can be set directly, like so:
$ sysctl -w vm.max_map_count=262144
Note, however, this setting will be reset to the value in
/etc/sysctl.conf
when your system next boots.
Garbage collection¶
CrateDB has been tested using the CMS garbage collector (default up to and including CrateDB 4.0) and the G1 garbage collector (the default with CrateDB 4.1).
G1GC
can also be used in earlier CrateDB versions, but should only be used in
combination with Java 11 or later.
Warning
Other garbage collectors have not been tested with CrateDB and we do not support using other GCs in production.