Ubuntu 20.04下如何正确提升RabbitMQ的open file descriptors上限?
RabbitMQ 文件描述符限制无法修改问题
问题现象
按官方文档尝试提升RabbitMQ的文件描述符(open file descriptors)上限,但rabbitmqctl status显示的限制始终未变化,仍为32671。
已执行操作
- 修改
/etc/sysctl.conf:sudo nano /etc/sysctl.conf fs.file-max=1048576 - 修改
/etc/default/rabbitmq-server:sudo nano /etc/default/rabbitmq-server ulimit -S -n 1048576 - 尝试在
/etc/rabbitmq/rabbitmq-env.conf中添加ulimit -S -n 1048576,但此操作导致RabbitMQ无法启动。
当前状态
- 系统全局ulimit设置已生效:
$ ulimit -Sn 1048576 $ ulimit -Hn 1048576 rabbitmqctl status输出:File Descriptors Total: 6, limit: 32671 Sockets: 0, limit: 29401/etc/systemd/system/rabbitmq-server.service.d/limits.conf文件及对应目录不存在。
环境信息
- 操作系统:Ubuntu 20.04
- RabbitMQ版本:3.12.4
解决方案
Ubuntu 20.04采用systemd管理服务,需通过systemd配置文件设置服务级别的文件描述符限制,步骤如下:
创建systemd配置目录:
sudo mkdir -p /etc/systemd/system/rabbitmq-server.service.d创建
limits.conf文件并写入配置:sudo nano /etc/systemd/system/rabbitmq-server.service.d/limits.conf添加以下内容:
[Service] LimitNOFILE=1048576 LimitNPROC=1048576重新加载systemd配置并重启RabbitMQ:
sudo systemctl daemon-reload sudo systemctl restart rabbitmq-server验证设置:
执行rabbitmqctl status,查看File Descriptors的limit是否已更新为1048576。
注意事项
- 禁止在
/etc/rabbitmq/rabbitmq-env.conf中添加ulimit命令,该文件用于定义RabbitMQ环境变量,执行命令会导致服务启动失败。 - 修改
/etc/sysctl.conf后需执行sudo sysctl -p,让系统全局文件描述符配置生效。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

