Ubuntu 20.04下RabbitMQ 3.12.1启动失败求助
RabbitMQ启动失败(feature_flags_registry初始化失败)解决方法
环境版本
Ubuntu 20.04.6 rabbitmq-server 3.12.1-1
问题现象
执行systemctl start rabbitmq-server时服务启动失败,提示:
Job for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details.
systemctl状态信息
● rabbitmq-server.service - RabbitMQ broker Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/rabbitmq-server.service.d └─limits.conf Active: activating (auto-restart) (Result: exit-code) since Tue 2023-07-11 15:27:07 CEST; 298ms ago Process: 935584 ExecStart=/usr/lib/rabbitmq/bin/rabbitmq-server (code=exited, status=1/FAILURE) Main PID: 935584 (code=exited, status=1/FAILURE) Status: "Standing by" kaiyu@kaiyu-Latitude-5500:~
journalctl日志信息
jul 11 15:27:33 kaiyu-Latitude-5500 rabbitmq-server[935767]: 2023-07-11 15:27:33.512944+02:00 [error] <0.236.0> exception exit: {failed_to_initialize_feature_flags_registry, jul 11 15:27:33 kaiyu-Latitude-5500 rabbitmq-server[935767]: 2023-07-11 15:27:33.512944+02:00 [error] <0.236.0> {rabbit,start,[normal,[]]}} jul 11 15:27:33 kaiyu-Latitude-5500 rabbitmq-server[935767]: 2023-07-11 15:27:33.512944+02:00 [error] <0.236.0> in function application_master:init/4 (application_master.erl, line 142) jul 11 15:27:33 kaiyu-Latitude-5500 rabbitmq-server[935767]: 2023-07-11 15:27:33.512944+02:00 [error] <0.236.0> ancestors: [<0.235.0>] jul 11 15:27:33 kaiyu-Latitude-5500 rabbitmq-server[935767]: 2023-07-11 15:27:33.512944+02:00 [error] <0.236.0> message_queue_len: 1 jul 11 15:27:33 kaiyu-Latitude-5500 rabbitmq-server[935767]: 2023-07-11 15:27:33.512944+02:00 [error] <0.236.0> messages: [{'EXIT',<0.237.0>,normal}] jul 11 15:27:33 kaiyu-Latitude-5500 rabbitmq-server[935767]: 2023-07-11 15:27:33.512944+02:00 [error] <0.236.0> links: [<0.235.0>,<0.44.0>] jul 11 15:27:33 kaiyu-Latitude-5500 rabbitmq-server[935767]: 2023-07-11 15:27:33.512944+02:00 [error] <0.236.0> dictionary: [] jul 11 15:27:33 kaiyu-Latitude-5500 rabbitmq-server[935767]: 2023-07-11 15:27:33.512944+02:00 [error] <0.236.0> trap_exit: true jul 11 15:27:33 kaiyu-Latitude-5500 rabbitmq-server[935767]: 2023-07-11 15:27:33.512944+02:00 [error] <0.236.0> status: running jul 11 15:27:33 kaiyu-Latitude-5500 rabbitmq-server[935767]: 2023-07-11 15:27:33.512944+02:00 [error] <0.236.0> heap_size: 233 jul 11 15:27:33 kaiyu-Latitude-5500 rabbitmq-server[935767]: 2023-07-11 15:27:33.512944+02:00 [error] <0.236.0> stack_size: 28 jul 11 15:27:33 kaiyu-Latitude-5500 rabbitmq-server[935767]: 2023-07-11 15:27:33.512944+02:00 [error] <0.236.0> reductions: 168 jul 11 15:27:33 kaiyu-Latitude-5500 rabbitmq-server[935767]: 2023-07-11 15:27:33.512944+02:00 [error] <0.236.0> neighbours: jul 11 15:27:33 kaiyu-Latitude-5500 rabbitmq-server[935767]: 2023-07-11 15:27:33.512944+02:00 [error] <0.236.0> jul 11 15:27:33 kaiyu-Latitude-5500 rabbitmq-server[935767]: 2023-07-11 15:27:33.519884+02:00 [notice] <0.44.0> Application rabbit exited with reason: {failed_to_initialize_feature_flags_registry,{rabbit,start,[normal,[]]}} jul 11 15:27:35 kaiyu-Latitude-5500 rabbitmq-server[935767]: Kernel pid terminated (application_controller) ({application_start_failure,rabbit,{failed_to_initialize_feature_flags_registry,{rabbit,start,[normal,[]]}}}) jul 11 15:27:35 kaiyu-Latitude-5500 rabbitmq-server[935767]: jul 11 15:27:35 kaiyu-Latitude-5500 rabbitmq-server[935767]: Crash dump is being written to: erl_crash.dump...done jul 11 15:27:35 kaiyu-Latitude-5500 systemd[1]: rabbitmq-server.service: Main process exited, code=exited, status=1/FAILURE -- Subject: Unit process exited -- Defined-By: systemd -- Support: http://www.ubuntu.com/support -- -- An ExecStart= process belonging to unit rabbitmq-server.service has exited. -- -- The process' exit code is 'exited' and its exit status is 1. jul 11 15:27:35 kaiyu-Latitude-5500 systemd[1]: rabbitmq-server.service: Failed with result 'exit-code'. -- Subject: Unit failed -- Defined-By: systemd -- Support: http://www.ubuntu.com/support -- -- The unit rabbitmq-server.service has entered the 'failed' state with result 'exit-code'. jul 11 15:27:35 kaiyu-Latitude-5500 systemd[1]: Failed to start RabbitMQ broker. -- Subject: A start job for unit rabbitmq-server.service has failed -- Defined-By: systemd -- Support: http://www.ubuntu.com/support -- -- A start job for unit rabbitmq-server.service has finished with a failure. -- -- The job identifier is 299570 and the job result is failed.
已尝试的无效方法
- 执行
rabbitmqctl enable_feature_flag all开启所有功能标志,无效 - 执行
sudo apt update时出现404错误,原RabbitMQ源链接失效:Failed to fetch https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu/dists/focal/main/binary-i386/Packages 404 Not Found [IP: 172.67.140.63 443] E: Failed to fetch https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu/dists/focal/main/binary-i386/Packages 404 Not Found [IP: 172.67.140.63 443] - 重新安装rabbitmq-server包,无效
解决方案
步骤1:清理旧的RabbitMQ源
- 删除旧的源文件:
sudo rm /etc/apt/sources.list.d/rabbitmq.list sudo rm /etc/apt/sources.list.d/rabbitmq-erlang.list - 清理apt缓存并更新:
sudo apt clean sudo apt update
步骤2:修复feature_flags_registry问题
该错误多由数据目录权限异常或数据损坏导致:
- 停止并禁用服务(终止重启循环):
sudo systemctl stop rabbitmq-server sudo systemctl disable rabbitmq-server - 备份数据目录(可选但推荐):
sudo cp -r /var/lib/rabbitmq /var/lib/rabbitmq_backup - 清理损坏的Mnesia数据:
sudo rm -rf /var/lib/rabbitmq/mnesia - 修复数据目录权限:
sudo chown -R rabbitmq:rabbitmq /var/lib/rabbitmq
步骤3:重新安装并配置官方源
- 添加官方Erlang和RabbitMQ源:
# 添加Erlang源 echo "deb https://packages.erlang-solutions.com/ubuntu focal contrib" | sudo tee /etc/apt/sources.list.d/erlang-solutions.list wget -O- https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc | sudo apt-key add - # 添加RabbitMQ源 echo "deb https://dl.bintray.com/rabbitmq/debian focal main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add - - 更新并重新安装指定版本:
sudo apt update sudo apt install rabbitmq-server=3.12.1-1
步骤4:启动并验证服务
- 启用并启动服务:
sudo systemctl enable rabbitmq-server sudo systemctl start rabbitmq-server - 检查服务状态:
systemctl status rabbitmq-server
内容的提问来源于stack exchange,提问作者kykywei
相关产品推荐
相关产品推荐

