
执行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,最终会导致整个集群卡住.