Error log: This is a critical bootstrap check error that prevents your OpenSearch node from starting. You will find it in your opensearch.log.
None
[ERROR][o.o.b.BootstrapChecks] [your-node-name]
max file descriptors [4096] for opensearch process is too low,
increase to at least [65535]
Why… is this happening? This is a safety feature. OpenSearch (and the Lucene engine it runs on) needs to open many files simultaneously. Every index, every shard, and every segment within a shard is a collection of files. The cluster also maintains many open network connections (which are treated like files by the OS).
Your operating system has a limit (per-process) on the number of “file descriptors” (open files) a user can have. The default limit on many Linux systems is very low (e.g., 1024 or 4096).
This error means OpenSearch has checked your OS limit and found it’s too low for production use. If it tried to start, it would quickly run out of file descriptors and crash.
Best practice: This is a mandatory fix for any production cluster. The method depends on how you run OpenSearch.
1. For systemd (RPM/Deb installs): This is the modern, preferred method.
- Create an override file:
sudo systemctl edit opensearch - Add the following lines to the file and save it:
Ini, TOML
[Service]
LimitNOFILE=65536
- Reload the
systemddaemon and restart OpenSearch:
Bash
None
sudo systemctl daemon-reload
sudo systemctl restart opensearch
2. For limits.conf (Tarball installs):
- Edit the file
/etc/security/limits.confas root. - Add this line (replace
opensearchwith the user you run it as):
None
opensearch - nofile 65536
- You must log out and log back in as the
opensearchuser for this to take effect before starting the process.
What else can I do? Confused about ulimit settings or which method to use for your operating system? This is a core part of a production setup. Check the OpenSearch documentation on “Bootstrap Checks” or ask the community. For direct help, contact us in The OpenSearch Slack Channel in #General.