在RabbitMQ中,Socket descriptors 是 File descriptors 的子集,它们也是一对此消彼长的关系。然而,它们的默认配额并不大,在实际应用中直接影响使用,File descriptors 默认值为“1024”,而 Socket descriptors 的默认值也只有“829”。同时,File descriptors 所能打开的最大文件数也受限于操作系统的配额。
因此,如果要调整 File descriptors 文件句柄数,就需要同时调整操作系统和RabbitMQ参数。
今天,正好出现了服务连接rabbitmq报超时的错误,在rabbitmq的控制面板中很直观地看到:
此外,在系统中执行“rabbitmqctl status”,也可以看到file_descriptors和sockets的详细信息。
修改系统内核参数
系统级别
修改配置/etc/sysctl.conf:
fs.file-max=655350
sysctl -p | grep file-max
用户级别
修改配置/etc/security/limits.conf:
* soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535
修改RabbitMQ配置
如果是以systemd方式管理rabbitmq服务,则需要修改/usr/lib/systemd/system/rabbitmq-server.service,添加如下参数,其值请根据实际情况进行调整:
[Service] LimitNOFILE=16384
重启rabbitmq即可:
systemctl daemon-reload systemctl restart rabbitmq-server
原创文章禁止转载:技术学堂 » 优化RabbitMQ文件句柄数和socket连接数