【前提条件】
RabbitMQ故障后,重新启动失败。
【问题排查】
1、采用./rabbitmq-server start的方式启动时,在输出日志当中没有看到报错。
2、ps -ef | grep rabbit 查看进程,发现进程存在
3、netstat -ano | grep 5672查看端口启用情况,发现只有25672端口启动了
4、详细排查rabbitmq日志
我本机的日志路径:/usr/local/rabbitmq/var/log/rabbitmq/rabbit@xxx.log
该路径具体查看各自的配置,在使用./rabbitmq-server start时也会输出日志路径
详细排查日志,发现日志中没有error,只有一个warn日志:
Recovering 953 queues, available file handles: 927. Please increase max open file handles limit to at least 953!
退出日志后,cat /proc/进程ID/limits,发现rabbitmq max open files数量只有1024
找到根本原因了。
【根本原因】
linux服务器默认open files数量为1024,而rabbitmq启动时,由于队列较多,使得需要的句柄数量超过1024,导致失败。
【解决方案】
修改系统open files数量
【问题处理】
问题处理方案分为:临时生效和永久生效
方法一:临时生效
1、执行 ulimit -n 65535
2、启动rabbitmq,发现open files数量变为65535。并且rabbitmq启动正常
方法二:永久生效
1、vim /etc/security/limits.conf
添加:
* soft nofile 65535
* hard nofile 65535
2、启动rabbitmq
RabbitMQ服务成功恢复!
【参考资料】
1、修改linux服务器open files数量:linux 最大文件句柄(file handle)相关参数 ulimit、nofile、nr_open、file-max_lizongti的博客-CSDN博客_linux nofiles ulimit