我在 Ubuntu 16.04 服务器上安装了 Rabbitmq 服务器版本3.5.7-1ubuntu0.16.04.2
。重新启动服务器时,Rabbitmq 随机启动失败。Rabbit 服务器是从官方 Ubuntu 存储库安装的。没有集群,它只是一个独立的服务器。
当问题发生时,以下内容会在重启时记录到 Journalctl 中:
Jun 03 09:50:52 hostname systemd[1]: Starting RabbitMQ Messaging Server...
...
Jun 03 09:51:23 hostname rabbitmq[1067]: Waiting for 'rabbit@hostname' ...
Jun 03 09:51:24 hostname rabbitmq[1067]: pid is 2455 ...
09:51:29 时,尝试使用 Rabbit 的应用程序无法连接:[Errno 111] Connection refused
几秒钟后,Rabbit 按照如下方式启动:/var/log/rabbitmq/[email protected]
=INFO REPORT==== 3-Jun-2018::09:52:22 ===
Server startup complete; 6 plugins started.
* rabbitmq_management
* rabbitmq_web_dispatch
* webmachine
* rabbitmq_management_agent
* mochiweb
* amqp_client
但与此同时,Rabbit 因 Start-post 操作超时而进入错误状态:
Jun 03 09:52:22 hostname systemd[1]: rabbitmq-server.service: Start-post operation timed out. Stopping.
Jun 03 09:52:22 hostname systemd[1]: Failed to start RabbitMQ Messaging Server.
Jun 03 09:52:22 hostname systemd[1]: rabbitmq-server.service: Unit entered failed state.
Jun 03 09:52:22 hostname systemd[1]: rabbitmq-server.service: Failed with result 'timeout'.
登录时/var/log/rabbit
没有显示任何错误警告。
查看 Systemd 单元文件,我发现 Startpost 操作执行/usr/lib/rabbitmq/bin/rabbitmq-server-wait
包含以下代码的脚本:
. `dirname $0`/rabbitmq-env
/usr/lib/rabbitmq/bin/rabbitmqctl wait $RABBITMQ_PID_FILE
运行命令 service rabbitmq-server start 后,服务即可顺利启动。
我无法理解此 Start-post 操作的目的是什么以及它为什么会超时。是什么原因导致了这个问题?我应该如何继续研究它?
答案1
RabbitMQ 团队监控邮件rabbitmq-users
列表并且仅有时回答 StackOverflow 上的问题。
您使用的 RabbitMQ 版本已过时且不受支持。自那时起,systemd
集成功能已得到改进。您应该使用最新版本的 RabbitMQ 和 Erlang 19.3 或更高版本。