Rabbitmq managerment UI显示队列状态NaN

问题现象

Rabbitmq线上出现客户端发送消息时报channelMAX. Limit 异常,经过查看管理界面发现:

  1. 所有连接Channel数量都达到2047,且状态均为unconfirmed。
  2. 创建的队列状态为NaN,且consumer数量为0。

问题分析

经过查询日志发现,上一个工作日,MQ集群出现了网络抖动导致的网络分区,集群通过自动处理的方式恢复网络分区状态。但是其中某些队列进行主动切换同步过程中出现了异常。问题队列无法正常接受消息进行落盘,所以应用发送消息到这个队列的时候就会发送失败,无法收到服务器回复的confirm,再次发起请求的时候,因为上一次的链接被占用还没有释放,所以就一直重新申请链接,channel数量就不断上升。

解决方法

  • 强制关闭问题channel
    • 强制关闭连接可通过管理平台connection页面直接点击按钮完成
    • 大多数情况下,channel数过多时,是无法通过页面完成点击的,因为页面直接就卡死了,因此可以在服务器上使用直接请求web api 的方式完成删除操作
      curl - i -u guest:guest -H "content-type:application/json" -XDELETE http://localhost:15672/api/connections/{name}
  • 强制删除问题队列
    rabbitmqctl eval 'Q = {resource, <<"vhostID">>, queue, <<"queueName">>}, rabbit_amqqueue:internal_delete(Q, <<"cli">>).'
    参考Investigating Ghost queues on RabbitMQ
  • 重建队列
    最后在原vhost 重建同样规则的队列
  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值