2020年5月

Elasticsearch默认安装后,如果不进行任何配置的修改直接启动,则大概率会报出如下错误:

max file descriptors [4096] for elasticsearch process is too low

此时网上搜到的结果一般是需要修改/etc/security/limits.conf文件,并加入如下配置:

*               soft    nofile          65536
*               hard    nofile          65536

然后通过如下命令来验证是否已经改动:

# ulimit -Hn
65536

# ulimit -Sn
65536

但如果在Supervisor管理下的Elasticsearch,则采用上述修改方式是无效的。将ulimit命令写入Elasticsearch的启动脚本,看到的值仍然是4096。

此问题的原因是,修改limit.conf只是修改了操作系统层面的限制,但Supervisor本身的限制没有被修改。Supervisor对文件数量的限制是保存在/etc/supervisor.conf文件中。所以,需要在/etc/supervisor.conf的“[supervisord]”段加入或修改如下配置:

minfds=65536                  ; min. avail startup file descriptors; default 1024
minprocs=4096                 ; min. avail process descriptors;default 200

supervisord拉起的其他进程都是子进程,共享了supervisord的配置,所以修改上述配置之后,需要重启supervisord方可生效。

值得注意的是,通过“supervisorctl reload”命令无法让supervisord立即更新上述已修改的配置。所以需要通过“kill -9”杀掉并重新运行supervisord,或者直接重启机器。