max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

内容分享3小时前发布
0 0 0

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

最近有台服务器需要停机维护,停机前把这台机器上的elasticsearch节点停掉了,维护完后,发现启动不了了,报了上面的错误
我是使用普通帐号elk登录的系统,这个时候查看 ulimit -Hn 的值是4096
sudo su到root 帐号,ulimit -Hn的值却是符合elasticsearch启动要求的, exit回到 普通帐号却不行
最后我在rootsu elk切换到了普通帐号,这个时候就可以了

错误缘由分析

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535] 这个错误提示表明 Elasticsearch 进程允许打开的最大文件描述符数量过低,至少需要 65535 才能正常启动。文件描述符限制一般是由操作系统对每个用户或进程进行限制的,不同用户和不同的登录方式可能会有不同的限制设置。

不同登录方式下 ulimit 值不同的缘由

1. 普通用户登录

当使用普通帐号 elk 登录系统时,ulimit -Hn 的值是 4096,这是由于普通用户的资源限制一般是由系统的默认配置文件(如 /etc/security/limits.conf )或者用户的环境配置文件(如 ~/.bashrc~/.bash_profile 等)所设置的。这些配置文件中的设置会在用户登录时生效,普通用户的权限相对较低,可能会受到更严格的资源限制。

2. sudo su 到 root 帐号

当使用 sudo su 切换到 root 帐号时,ulimit -Hn 的值符合 Elasticsearch 启动要求。这是由于 root 用户具有最高权限,系统对 root 用户的资源限制一般会更宽松,或者 root 用户的环境配置文件中对文件描述符限制进行了更高的设置。

3. rootsu elk 切换到普通帐号

当在 root 下使用 su elk 切换到普通帐号时,文件描述符限制却符合要求了。这是由于 su 命令在切换用户时,默认会继承当前用户(这里是 root)的环境变量和部分配置,包括 ulimit 的设置。所以,从 root 切换到 elk 用户时,elk 用户临时拥有了和 root 用户一样的文件描述符限制。

解决方案

为了让普通用户 elk 在正常登录时也能拥有足够的文件描述符限制,你可以通过修改系统配置文件来实现。

1. 修改 /etc/security/limits.conf 文件

使用 sudo 权限编辑 /etc/security/limits.conf 文件,添加或修改以下内容:

elk hard nofile 65535
elk soft nofile 65535

这里的 elk 是你的普通用户名,hard 表明硬限制,soft 表明软限制,nofile 表明文件描述符限制。将硬限制和软限制都设置为 65535。

2. 修改 /etc/pam.d/common-session 文件

确保 pam_limits.so 模块被加载,编辑 /etc/pam.d/common-session 文件,添加或确认以下行存在:

session required pam_limits.so

3. 重新登录

修改完成后,注销当前用户并重新使用普通用户 elk 登录系统,再次查看 ulimit -Hn 的值,应该已经变为 65535,此时就可以正常启动 Elasticsearch 了。

© 版权声明

相关文章

暂无评论

none
暂无评论...