大家好,我是烤鸭:
rabiitmq 突然宕机,并且无法启动。同事反馈测试环境 rabbitmq 有一个节点突然掉了,并且无法启动。
现象
集群有一个节点宕机。
去对应的机器上执行启动命令
./rabbitmq-server -detached
发现进程不在,查找日志
find / -name *.log|grep rabbitmq
find / -name erl_crash.dump
发现dump日志,进行dump日志分析,分析脚本下载
wget
https://github.com/ferd/recon/blob/master/script/erl_crashdump_analyzer.sh
# 执行分析
./erl_crashdump_analyzer.sh erl_crash.dump
如果 wget之后报换行错误,自己新建再复制文本内容。
可以看到启动失败是因为 rabbit_memory_monitor。
百度了下,这个错就是磁盘空间不足。
https://www.dell.com/support/kbdoc/zh-cn/000068054/networker-rabbitmq-crash-during-startup
原因
磁盘空间不足这个问题,第一时间为什么没发现。
其实刚进去就看了磁盘和内存,都没问题。
df -h
free -h
因为一般中间件如果没改过配置或者版本的话,多半是磁盘问题。
后来还是抱着试一试的态度删了一些文件,确实可以启动了。
删除文件的方式是有说法的,先查找大文件。
# 超过1G的文件find / -type f -size +1G# 删除xxx.logecho '' > xxx.log
这样删除避免了,执行删除操作后,空间未释放。
怎么看文件是否有未释放的空间。
lsof |grep deleted
kill 掉指定的进程就可以释放了。
kill -9 7255
总结
还总结啥啊,五一快乐,劳动者最光荣!