问题
最近新搭建的OpenStack集群总是出问题,各个service的log经常报连接RabbitMQ超时。重启RabbitMQ后集群会恢复正常一段时间,之后继续报错。根据这种现象推断,大概率是跟RabbitMQ能接受的最大连接数的问题有关,执行rabbitmqctl status发现sockets_used已经达到上限,证明推断正确,解决方法就是调大这个值。
调整方法
操作系统是CentOS 7.5。编辑/usr/lib/systemd/system/rabbitmq-server.service,在[Service]字段添加一行LimitNOFILE=65535:
# systemd unit example [Unit] Description=RabbitMQ broker After=network.target epmd@0.0.0.0.socket Wants=network.target epmd@0.0.0.0.socket
[Service] Type=notify User=rabbitmq Group=rabbitmq NotifyAccess=all TimeoutStartSec=3600 LimitNOFILE=65535 WorkingDirectory=/var/lib/rabbitmq ExecStart=/usr/lib/rabbitmq/bin/rabbitmq-server ExecStop=/usr/lib/rabbitmq/bin/rabbitmqctl stop
[Install] WantedBy=multi-user.target |
然后执行systemctl daemon-reload和systemctl restart rabbitmq-server.service就生效了。再次查看rabbitmqctl status就可以发现新参数生效了:
虽然调整的是打开文件最大数,但是sockets_limit也相应增大了,查询文档得知sockets_limit通常是total_limit的0.8到0.9。之后OpenStack各服务也不再报错了,问题解决。