成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

RocketMQ-沒有消費者的消息堆積場景分析

開發 架構
為了便于表達和理解,我們只關注與該問題有關的部分邏輯。因為消息堆積量不斷在增加,所以判斷該Group ID已經在Broker上有了訂閱關系,很可能是使用該Group ID的Consumer實例下線后沒有取消訂閱關系導致的。

問題描述

訂閱關系

控制臺上沒有訂閱關系信息:Topic、過濾規則均為空。

消費者狀態

沒有消費者實例信息,消息在不斷堆積。

分析過程

初步判斷

為了便于表達和理解,我們只關注與該問題有關的部分邏輯。
因為消息堆積量不斷在增加,所以判斷該Group ID已經在Broker上有了訂閱關系,很可能是使用該Group ID的Consumer實例下線后沒有取消訂閱關系導致的,如圖:

初步判斷-Consumer未取消訂閱關系

正常運行

在正常情況下,控制臺上可以看到Group ID的【訂閱關系】及【消費者狀態】,如圖:

正常情況-訂閱關系

正常情況-消費者狀態

異常之后

異常之后就變成了【問題描述】中的樣子,此時我們不清楚:

  • 該GID訂閱了哪個topic
  • 該GID被哪個應用消費者使用后出現的異常
  • 該GID對應的消息生產者是哪個

在以上事情沒有弄清楚之前,也不敢對該GID做取消訂閱、刪除之類的操作。

確定topic

消息堆積是通過消費者的offset信息統計的,該信息存儲在Broker上的store/config/consumerOffset.json中,consumerOffset.json格式如圖:

Broker - consumerOffset.json

我們在consumerOffset.json文件中找到了GID對應的topic,此處有個細節(后面代碼處有解釋):

  • 該GID在groupTopicMap中沒有重試隊列Topic
  • 該GID在offsetTable中沒有重試隊列Topic上的offset

確定Producer

通過Topic查詢Message

查詢消息

通過MessageID確定ECS IP

通過上面的查詢無法直接定位到ECS,我們可以通過Message ID計算出ECS IP,方法如下:

String ip = MessageClientIDSetter.getIPStrFromID(Message ID)

如果懶得寫代碼,也可以使用arthas來查詢:

arthas查詢消息

此時整個鏈路逐漸清晰起來了,還缺少最關鍵的Consumer信息。

確定Consumer

代碼Review

查詢了近期發版的所有代碼,沒有找到與該GID相關的信息。

Broker端找線索

我們試圖通過Broker端的日志來確認兩件事情:

  • 該GID的Consumer在什么時候從哪些IP建立了與Broker的交互
  • 該GID的Consumer在什么時候從哪些IP斷開了與Broker的交互

Broker heartBeat

Broker - Consumer心跳處理邏輯

通過以上代碼打印的日志,我們可以過濾出該GID與Broker建立交互時候的相關信息。

Broker unregisterClient

在Consumer實例shutdown的時候,會向Broker發送unregisterClient請求,會調用ConsumerManager中相應的unregisterConsumer方法:

Broker - Consumer取消注冊

通過以上代碼打印的日志,我們可以過濾出該GID與Broker斷開交互時候的相關信息。

理想是美好的,現實是殘酷的Broker端最多保留了不到2天的日志,所以這條路也走不通了。?

柳暗花明

同時我們也在想:除了程序,還有其他途徑變更這種訂閱關系嗎?答案是有的。

命令行

命令方式-重置消費位點

控制臺

控制臺 - 重置消費位點

到這里估計您已經知道引起這次消息堆積的原因了。

經驗總結

  • 完善監控告警、提高應急響應能力
  • 最小權限原則
  • RocketMQ控制臺是否應該增加操作記錄的功能?
責任編輯:武曉燕 來源: 今日頭條
相關推薦

2021-07-12 10:25:03

RocketMQ數據結構kafka

2022-07-07 09:00:49

RocketMQ消費者消息消費

2024-01-24 09:00:31

SSD訂閱關系內存

2024-04-22 00:00:00

RocketMQ優化位點

2023-12-21 08:01:41

RocketMQ消息堆積

2023-03-28 07:08:09

RocketMQ消費者堆棧

2022-03-14 11:05:01

RocketMQRedis緩存

2024-03-14 11:58:43

2022-05-09 11:15:05

RocketMQPULL 模式PUSH 模式

2021-11-23 09:00:59

消息堆積擴容RocketMQ

2024-06-06 11:57:44

2025-06-12 02:15:00

Kafka消費者高并發

2021-04-20 08:32:51

消息MQ隊列

2011-08-15 10:50:35

云手機iPhone

2023-06-01 08:08:38

kafka消費者分區策略

2015-08-26 09:39:30

java消費者

2011-08-05 16:21:24

2011-07-22 16:25:38

CA TechnoloIT消費化

2014-12-10 21:50:44

AdMaster

2009-08-13 13:14:31

C#生產者和消費者
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品日韩欧美一区二区三区 | 国产91久久精品一区二区 | 亚洲激情一级片 | 国产98色在线 | 日韩 | 日韩成人精品一区二区三区 | 欧美v日韩v | 成人免费观看男女羞羞视频 | 精品欧美一区二区久久久伦 | 国产乱码久久久久久 | 欧美亚州综合 | 91最新入口 | 国产精品福利久久久 | 国产精品视频久久 | 成年人网站免费 | 1级黄色大片 | 欧美人妖网站 | 久久精品这里精品 | 亚洲成色777777在线观看影院 | 狠狠的干 | 亚洲久久| av成年人网站 | 日韩成人av在线播放 | 欧美一区2区三区4区公司二百 | 男女羞羞视频在线免费观看 | 91精品国产乱码久久久 | 高清免费在线 | 男人天堂av网站 | 亚洲成av人影片在线观看 | 91精品无人区卡一卡二卡三 | 国产精品久久久久久久 | 亚洲精品久久久一区二区三区 | 久热国产精品 | 国产在线www| 国产精品一区二区在线 | 新91 | 亚洲欧美中文日韩在线v日本 | 亚洲国产精品一区二区三区 | 欧美精品video | 天堂网av在线 | 毛片a| 自拍偷拍亚洲欧美 |