环境 Win2012:
- RabbitMQ 3.11.0
- Erlang: 25.1.1
报错日志:
- 由于磁盘满,导致 rabbitmq 崩溃,无法提供服务
- 清理磁盘空间后,rabbitmq 无法自动恢复正常 重启没用
39.916000+08:00 [info] <0.431.0> Making sure data directory 'c:/***/RabbitMQ/db/rabbit@iZ25ddk367koq2Z-mnesia/msg_stores/vhosts/628WB79CIFDYO9LJI6DKMI09L' for vhost '/' exists
2023-03-11 12:10:39.933000+08:00 [info] <0.431.0> Starting message stores for vhost '/'
2023-03-11 12:10:39.933000+08:00 [info] <0.436.0> Message store "628WB79CIFDYO9LJI6DKMI09L/msg_store_transient": using rabbit_msg_store_ets_index to provide index
2023-03-11 12:10:39.933000+08:00 [info] <0.431.0> Started message store of type transient for vhost '/'
2023-03-11 12:10:39.933000+08:00 [info] <0.440.0> Message store "628WB79CIFDYO9LJI6DKMI09L/msg_store_persistent": using rabbit_msg_store_ets_index to provide index
2023-03-11 12:10:39.933000+08:00 [warning] <0.440.0> Message store "628WB79CIFDYO9LJI6DKMI09L/msg_store_persistent": rebuilding indices from scratch
2023-03-11 12:10:39.933000+08:00 [error] <0.368.0> ** Generic server <0.368.0> terminating
2023-03-11 12:10:39.933000+08:00 [error] <0.368.0> ** Last message in was {'$gen_cast',
2023-03-11 12:10:39.933000+08:00 [error] <0.368.0> {submit_async,
2023-03-11 12:10:39.933000+08:00 [error] <0.368.0> #Fun<rabbit_classic_queue_index_v2.11.7882794>,
2023-03-11 12:10:39.933000+08:00 [error] <0.368.0> <0.365.0>}}
2023-03-11 12:10:39.933000+08:00 [error] <0.368.0> ** When Server state == undefined
2023-03-11 12:10:39.933000+08:00 [error] <0.368.0> ** Reason for termination ==
解决办法:
- 仔细看日志内容 是 mq 启动时候,恢复队列内容数据时候发生了错误
- 可能是由于磁盘满了,队列数据写磁盘时候发生日常,导致数据文件格式错误了
进入C:***\Roaming\RabbitMQ\db/msg_stores/vhosts/628WB79CIFDYO9LJI6DKMI09L
下面的报错
该目录是存放队列的数据文件的地方
找到queues,把可能损坏的文件删除。(或者全部删掉,不过这些队列中的数据就丢失了)
然后重启,就正常了
service rabbitmq-server start