系统句柄配置默认是65535,但是EMQX最大文件句柄显示4096

之前我在服务器上安装过5.8.8版本,出了点问题我就下载安装emqx5.3.1后直接在bin目录下启动emqx,但是我看页面上显示的最大文件句柄是4096,之前使用的时候还是65535现在为什么只有4096了。

我猜一下:
之前安装的 5.8.8 版本(通常如果是 RPM 或 DEB 包安装)是由 systemd 管理服务的,systemd 会自动配置较高的文件句柄限制。而您现在的 5.3.1 版本直接在 bin 目录下运行,它继承的是当前用户 Shell 的默认限制,Linux 默认通常就是 1024 或 4096。

如果坚持使用 ./bin/emqx 手动启动,需要修改操作系统的全局配置。

sudo vim /etc/security/limits.conf

在文件末尾添加以下两行

* soft    nofile      1048576
* hard    nofile      1048576

开启 pam_limits 确保 /etc/pam.d/login 文件中有以下行(通常默认都有)

session required pam_limits.so

重新登录 修改完上述文件后,必须注销当前 SSH 会话并重新登录,或者重启服务器,配置才会生效
重新登录后,执行 ulimit -n,如果显示 1048576,则直接启动 EMQX 即可

如果只是想快速测试一下,不想重启也不想改配置文件,可以直接在当前命令行执行

# 临时设置当前会话的句柄限制
ulimit -n 65535

# 确认是否生效
ulimit -n

# 然后在同一个窗口启动 EMQX
./bin/emqx start

参照调优文档: