You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RabbitMQ dangle connections未关闭、连接数持续增长故障排查咨询

RabbitMQ 联邦集群连接/套接字持续攀升故障排查步骤

针对你描述的RabbitMQ 3.7.7 + Erlang 21.0.1 3节点联邦集群场景,结合观测到的每小时250个连接/通道/套接字增量、大量accepting -> connection -> closed短生命周期连接、同代码其他环境无异常的特征,按以下优先级排查:

  • 第一步:先定位短连接来源
    进入管理控制台Connections页面,筛选最近1小时新建、状态为closed/closing的连接,提取对端IP、端口、client_properties字段里的客户端标识(进程名、服务名、版本信息),先排除非业务流量:

    重点核对是否是监控探针、日志采集组件、安全扫描器产生的探测连接——这类连接通常只完成TCP三次握手、AMQP协议头握手就主动断开,不会携带合法的客户端认证信息,且源IP固定为运维类网段。
    如果对端IP确实是业务服务IP,继续下一步。

  • 第二步:排查联邦插件配置异常
    联邦架构是和普通单机/普通集群的核心差异点,优先排查链路配置问题:

    • 执行rabbitmqctl eval 'rabbit_federation_status:status().' 查看所有联邦链路的状态变更历史,正常稳定链路会长期保持running状态,如果某条链路频繁出现disconnected->connecting->running的状态跳转,记录对应的上游节点地址,核对链路的reconnect-delay参数是否被误设为1s以下的过小值,导致网络微小波动就触发反复拆建连接
    • 核对3个节点的联邦策略配置,执行rabbitmqctl list_policies查看策略匹配规则,确认是否存在策略范围过大、误匹配临时交换器/临时队列的情况——如果发布的消息路由到的交换器被联邦策略匹配,但没有预建的联邦链路,插件会临时建连同步消息,同步完成后立刻释放连接,正好匹配你观测到的短连接特征。
  • 第三步:核对环境差异导致的客户端连接未复用
    同代码其他环境无问题,重点查出问题环境的配置差异:

    • 核对业务侧发布端的连接池配置:确认连接池初始化是否成功,是否存在虚拟主机权限配置错误、用户名密码配置错误导致连接池初始化失败,代码走兜底逻辑每次发布消息新建临时连接,发完就关闭
    • 在Broker节点抓包验证:执行tcpdump -i any port 5672 -w amqp.pcap 抓10分钟流量,解析AMQP帧确认短连接的操作序列:如果连接建立后只执行1次basic.publish就立刻发送connection.close帧,可确认是业务侧未复用连接
    • 核对操作系统TCP参数:执行sysctl -a | grep tcp_tw查看TIME_WAIT相关配置,若tcp_tw_recycle、tcp_tw_reuse未开启,正常关闭的TCP连接会在TIME_WAIT状态停留60s,套接字描述符不会被立刻回收,会导致控制台统计值持续线性上涨。
  • 第四步:排查已知版本缺陷
    你使用的RabbitMQ 3.7.7、Erlang 21.0.1均为对应大版本的早期小版本,存在两个和你描述现象完全匹配的已知bug:

    • RabbitMQ 3.7.7 联邦插件bug:当发布的消息携带自定义headers、且匹配联邦转发规则时,插件会为单条消息新建独立联邦连接,消息转发完成后立刻关闭连接,该问题在3.7.8版本修复
    • Erlang 21.0.1 端口引用计数泄漏bug:AMQP连接正常关闭后,Erlang VM不会立刻释放套接字对应的文件描述符引用,导致套接字统计值持续线性上涨,该问题在Erlang 21.0.3版本修复
      可以先把单个节点升级到RabbitMQ 3.7.28 + Erlang 21.3(3.7系列兼容的稳定小版本)做对照验证,排除版本bug影响。
  • 第五步:开启debug日志定位连接关闭原因
    不需要重启节点,直接执行命令临时调整连接模块日志级别到debug:
    rabbitmqctl eval 'application:set_env(rabbit, log_levels, [{connection, debug}]).'
    观测新产生的连接日志,每条连接关闭时都会打印关闭原因:如果是业务主动正常关闭,reason字段为normal;如果是异常触发关闭,会打印具体错误码(权限拒绝、帧错误、通道错误等),可直接定位关闭触发源。

内容的提问来源于stack exchange,提问作者Ashok Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 00:57:19