我已经安装了 elasticsearch @ debian6本教程。我已经设置了系统最大打开文件数指令,因此我有以下值:
# su
# cat /proc/sys/fs/file-max
70000
# ulimit -Hn
64000
# ulimit -Sn
32000
当我通过以下方式检查 elasticsearch max_file_descriptors 时:
curl -XGET 'http://localhost:9200/_nodes?process=true&pretty=true'
我会得到 1024。
当我以 root 用户身份重新启动它时,它现在有“max_file_descriptors”:64000。
init.d 自动启动有什么问题?当我检查 htop 时,init.d 自动启动的 elastic 具有 1024 个描述符,也在 root 用户下运行。
我已经通过 2 个配置设置了最大打开文件数:
cat /etc/sysctl.conf
...
fs.file-max = 70000
cat /etc/security/limits.conf
...
* soft nofile 32000
* hard nofile 64000
root soft nofile 32000
root hard nofile 64000
答案1
通常/etc/security/limits.conf
由pam_limits
聚丙烯酰胺模块。但是,由启动的服务init
不在 PAM 会话下运行,因此不应用这些设置。我发现设置它的唯一可靠方法是ulimit
从 initscript 本身运行。编辑 ElasticSearch initscript 并在顶部附近添加类似以下内容:
ulimit -n 64000
我不确定您是否要设置sys.file-max
BTW;在我的系统上它默认为 779149,因此您可能会将其降低一个数量级。