執行rabbitmqctl status | grep -A 4 file_descriptors 顯示socket_used 達到 socket_limited 的值
增加socket_limited 的上限
1,如果rabbitqmq在系統服務里面
修改
/etc/systemd/system/rabbitmq-server.service.d/limits.conf,
[Service]
LimitNOFILE=300000
2,如果不在系統服務
找到rabbitmq的設置環境變量的文件 rabbitmq-env.conf
ulimit -S -n 8192
#默認設置為4096
重啟rabbitmq服務
可能rabbitmq集群的中的disc節點會受到影響,最好disc節點也重啟rabbitmq服務
但是rabbitmq進程cpu使用率仍然很高,並沒有從根本上解決問題
當 RabbitMQ 的 sockets_used
達到 sockets_limits
時候(連接數耗盡時),最終即使是 Consumer 也會全部阻塞,只有在 sockets_used < sockets_limit
時(釋放部分連接后),才會恢復
5672的端口都是ESTABLISHED狀態,服務器僅僅是阻塞了新連接,而不是拒絕新連接,如果是使用 HAProxy 等工具搭建的集群,由於服務器依然會接受新連接,因此 HAProxy 不會認為節點已Down,最終會導致整個集群卡住.