rabbitmq connection_closed_abruptly

在使用RabbitMQ作为消息中间件时遇到连接异常问题,表现为本地执行成功但远程未执行,日志显示连接被异常关闭。寻求解决方法及如何模拟此问题。
在使用rabbitmq做消息中间件发送消息的时候出现一个问题,就是当调用远程接口的时候出现连接异常中断,然后本地执行成功,而远程的没有成功执行。查看rabbitmq日志有如下错误log(6649860行):

6649844 =INFO REPORT==== 29-Mar-2010::10:20:52 ===
6649845 accepted TCP connection on 0.0.0.0:5672 from 192.168.1.74:51511
6649846
6649847 =INFO REPORT==== 29-Mar-2010::10:20:52 ===
6649848 starting TCP connection <0.17182.220> from 192.168.1.74:51511
6649849
6649850 =INFO REPORT==== 29-Mar-2010::10:20:52 ===
6649851 closing TCP connection <0.17182.220> from 192.168.1.74:51511
6649852
6649853 =INFO REPORT==== 29-Mar-2010::10:20:55 ===
6649854 accepted TCP connection on 0.0.0.0:5672 from 192.168.1.99:37824
6649855
6649856 =INFO REPORT==== 29-Mar-2010::10:20:55 ===
6649857 starting TCP connection <0.17189.220> from 192.168.1.99:37824
6649858
6649859 =ERROR REPORT==== 29-Mar-2010::10:20:55 ===
6649860 error on TCP connection <0.17189.220> from 192.168.1.99:37824
6649861 connection_closed_abruptly
6649862
6649863 =INFO REPORT==== 29-Mar-2010::10:20:55 ===
6649864 closing TCP connection <0.17189.220> from 192.168.1.99:37824
6649865
6649866 =INFO REPORT==== 29-Mar-2010::10:23:41 ===
6649867 accepted TCP connection on 0.0.0.0:5672 from 192.168.1.79:46722



大家有没有碰到过,有什么办法可以解决这个问题,还有如何模拟重现这种现象。现在我在准备执行的时候把远程的服务关掉得到的结果如下:

=WARNING REPORT==== 21-Apr-2010::15:19:10 ===
exception on TCP connection <0.1580.0> from 172.16.2.212:1786
connection_closed_abruptly



结果不一样 ,一个是exception ,一个是error ;所以一直没查出肯本原因来。经过QA的多次测试也很难重现这种现象。但是在生产环境中却经常出现。求解决方案!!!!
### 3.1 RabbitMQ 插件状态异常的排查与解决 当执行 `rabbitmq-plugins list` 时出现“无法联系节点”的错误,通常表示 RabbitMQ 节点未正常运行或插件系统未正确加载。 #### 3.1.1 检查 RabbitMQ 服务运行状态 在尝试查看插件列表之前,必须确保 RabbitMQ 服务正在运行。可以通过以下命令检查服务状态: ```bash rabbitmqctl status ``` 如果服务未运行,将无法正常加载插件列表。此时应先启动 RabbitMQ 服务: - 在 Linux 系统上: ```bash systemctl start rabbitmq-server ``` - 在 Windows 系统上,可以通过命令行启动: ```bash rabbitmq-server ``` 或以守护进程方式启动: ```bash rabbitmq-server -detached ``` 服务启动后再次执行 `rabbitmq-plugins list` 查看插件状态 [^4]。 #### 3.1.2 验证 Erlang 节点通信 RabbitMQ 依赖 Erlang 节点进行插件管理和状态同步。如果 Erlang 节点未能正确启动或出现通信异常,会导致插件命令失败。 检查 Erlang cookie 是否一致,该 cookie 通常位于 `/var/lib/rabbitmq/.erlang.cookie`(Linux)或安装目录下的 `.erlang.cookie`(Windows)。确保该文件的权限设置为仅允许 RabbitMQ 用户访问,避免权限问题导致节点无法通信 。 #### 3.1.3 检查插件启用路径和权限 插件文件必须放置在 RabbitMQ 的插件目录中,并且 RabbitMQ 服务必须有权限读取这些文件。可以通过以下命令查看插件目录: ```bash rabbitmq-plugins list ``` 若插件文件缺失或路径错误,需手动下载插件(如 `rabbitmq_delayed_message_exchange-3.9.0.ez`)并将其复制到插件目录。在容器环境中,需使用 `docker cp` 命令将插件复制到容器内部的 `/plugins` 目录: ```bash docker cp rabbitmq_delayed_message_exchange-3.9.0.ez cd-rabbitmq:/plugins ``` 进入容器后启用插件: ```bash rabbitmq-plugins enable rabbitmq_delayed_message_exchange ``` 确保插件启用后重启 RabbitMQ 容器: ```bash docker restart cd-rabbitmq ``` #### 3.1.4 查看日志排查插件加载失败原因 如果插件状态仍然异常,建议查看 RabbitMQ 日志文件。日志通常位于 `/var/log/rabbitmq/`(Linux)或安装目录下的 `logs` 文件夹(Windows)。 搜索与插件加载相关的日志条目,例如: ``` Failed to load plugin rabbitmq_management ``` 常见错误包括插件依赖项缺失、版本不兼容或 Erlang 版本不匹配。例如 RabbitMQ 3.8.x 版本推荐使用 Erlang 23.x,若使用不兼容版本可能导致插件无法加载 [^4]。 #### 3.1.5 防火墙与端口配置 虽然 `rabbitmq-plugins list` 不涉及网络访问,但如果 RabbitMQ 节点运行在远程服务器上,需确保本地能够通过网络访问 RabbitMQ 的通信端口(默认为 5672)和插件管理端口(默认为 15672)。使用以下命令检查端口监听状态: ```bash netstat -tuln | grep 15672 ``` 若端口未监听,可能表示插件未正确加载或 RabbitMQ 服务异常。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值