最近新搭建的OpenStack集羣老是出問題,各個service的log常常報鏈接RabbitMQ超時。重啓RabbitMQ後集羣會恢復正常一段時間,以後繼續報錯。根據這種現象推斷,大機率是跟RabbitMQ能接受的最大鏈接數的問題有關,執行rabbitmqctl status發現sockets_used已經達到上限,證實推斷正確,解決方法就是調大這個值。socket
操做系統是CentOS 7.5。編輯/usr/lib/systemd/system/rabbitmq-server.service,在[Service]字段添加一行LimitNOFILE=65535:ide
# systemd unit examplespa [Unit]操作系統 Description=RabbitMQ brokerrest After=network.target epmd@0.0.0.0.socketserver Wants=network.target epmd@0.0.0.0.socketrabbitmq
[Service]ip Type=notify文檔 User=rabbitmqget 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各服務也再也不報錯了,問題解決。