当前位置:   article > 正文

Rabbitmq managerment UI显示队列状态NaN_rabbitmq nan

rabbitmq 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 重建同样规则的队列
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/869964
推荐阅读
相关标签
  

闽ICP备14008679号