发布于2026-05-29 阅读(0)
扫一扫,手机访问
使用 systemctl start rabbitmq-server.service 命令启动 RabbitMQ 时,报了一串错误,看起来有点让人头疼。先贴一下具体的日志信息:

[root@rhos5-rabbitmq1 ~]# systemctl start rabbitmq-server
Jun 13 21:03:08 jeckersb-f20 systemd[1]: Starting RabbitMQ broker...
Jun 13 21:03:09 jeckersb-f20 rabbitmqctl[1186]: Waiting for 'rabbit@jeckersb-f20' ...
Jun 13 21:03:09 jeckersb-f20 rabbitmqctl[1186]: pid is 1185 ...
Jun 13 21:03:09 jeckersb-f20 systemd[1]: rabbitmq-server.service: main process exited, code=exited, status=1/FAILURE
Jun 13 21:03:09 jeckersb-f20 rabbitmqctl[1186]: Error: process_not_running
Jun 13 21:03:09 jeckersb-f20 systemd[1]: rabbitmq-server.service: control process exited, code=exited status=2
[root@rhos5-rabbitmq1 ~]# rabbitmqctl status
Status of node 'rabbit@rhos5-rabbitmq1' ...
Error: unable to connect to node 'rabbit@rhos5-rabbitmq1': nodedown
DIAGNOSTICS
===========
nodes in question: ['rabbit@rhos5-rabbitmq1']
hosts, their running nodes and ports:
- rhos5-rabbitmq1: [{rabbitmqctl2980,45861}]
current node details:
- node name: 'rabbitmqctl2980@rhos5-rabbitmq1'
- home dir: /var/lib/rabbitmq
- cookie hash: vzI5NUyusQhCrkRr6GAhpQ==
一开始看到那一堆日志,第一反应可能是:这信息量看着不少,但真正有用的有多少?很多人会先尝试排查常见的缓存或节点残留问题。比如,网传比较广的一个方法是:删除 /var/lib/rabbitmq/mnesia 目录下的 rabbit@localhost.pid、rabbit@localhost 和 rabbit@localhost-plugins-expand 这三个文件。实际操作之后,再用 systemctl start rabbitmq-server 启动,结果发现——问题依旧,服务依然起不来。
既然 systemctl 方式没给够线索,那就直接用 rabbitmq-server 命令直连启动吧。这次日志总算报了点有价值的信息:
{"could not start kernel pid",application_controller,"error in config file "c:/Users/yupeipei/AppData/Roaming/RabbitMQ/
rabbitmq.config" (256): syntax error before: ']'"}
could not start kernel pid (application_controller) (error in config file "c:/Users/yupeipei/AppData/Roaming/RabbitMQ/ra
bbitmq.config" (256): syntax error before: ']')
看到这个错误,熟悉的开发者应该立刻能反应过来——配置文件语法有误。具体是哪个配置文件呢?编辑一下 /etc/rabbitmq/rabbitmq.config 看看。
检查配置文件后发现,为了让远程用户可以访问,我配置了一段 loopback_users 的规则,但不多不少,在最后面多敲了一个逗号。来看看当时的具体配置:
[
{rabbit, [{tcp_listeners, [5672]}, {loopback_users, [“asdf”]},]}
]
注意看,在 loopback_users 的配置项后面,跟着一个 },,而结尾的 ] 直接导致了这个多出来的逗号成为一个语法错误。这种情况在 Erlang 的配置文件中非常典型——多一个逗号,启动直接扑街。删掉那个多余的逗号,再次重启服务,一切顺利启动。
整个过程其实就一句话:配置文件的语法错误。多写了一个逗号,导致 RabbitMQ 在加载配置时解析失败,进而无法启动。这个案例虽然小,但提醒我们——配置文件写完后,最好不要太自信,仔细检查一下括号和逗号的搭配,尤其是涉及多层级嵌套的时候。毕竟,这类问题在其他中间件的配置中也经常遇到,值得留意。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8