之前我在服务器上安装过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
参照调优文档: