精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Topic太多!RocketMQ炸了!

開發 架構
我們的RocketMQ集群為4.6.0版本,按照3個Nameserver,2個broker,每個Broker為主從雙節點部署。

網上博客常說,kafka的topic數量過多會影響kafka,而RocketMQ不會受到topic數量影響。

但是,果真如此嗎?

最近排查一個問題,發現RocketMQ穩定性同樣受到topic數量影響!!

好了,一起來回顧下這次問題排查吧,最佳實踐和引申思考放在最后,千萬不要錯過。

1、問題描述

我們的RocketMQ集群為4.6.0版本,按照3個nameserver,2個broker,每個broker為主從雙節點部署。

圖片

部署架構

某天收到警報,broker-b突然從nameserver掉線,且主從雙節點都無法重新注冊。

2、初步排查

(1)檢查進程存活&網絡

因為控制臺上顯示broker-a正常,因此可以認為 nameserver、broker-a都是正常的,問題出在broker-b上。

當時第一反應是broker-b進程掛了,或者網絡不通了。

登陸broker節點,看到進程依然存活。

然后通過telnet檢查和nameserver的聯通性,顯示正常,網絡沒有問題。

(2)檢查日志

檢查broker日志,馬上發現了異常。

2023-01-09 14:07:37 WARN brokerOutApi_thread_3 - registerBroker Exception, mqnameserver3:xxxx
org.apache.rocketmq.remoting.exception.RemotingSendRequestException: send request to <qnameserver3/xx.xx.xx.xxx:xxxx> failed
at org.apache.rocketmq.remoting.netty.NettyRemotingAbstract.invokeSyncImpl(NettyRemotingAbstract.java:429) ~[rocketmq-remoting-4.6.0.jar:4.6.0]
at org.apache.rocketmq.remoting.netty.NettyRemotingClient.invokeSync(NettyRemotingClient.java:373)
......

異常比較明確,broker請求nameserver失敗,所以導致無法注冊到集群中。

那為什么會注冊失敗呢?沒有非常明確的提示,因此去看下nameserver上的日志信息。

2023-01-09 14:09:26 ERROR NettyServerCodecThread_1 - decode exception, xx.xxx.xx.xxx:40093
io.netty.handler.codec.TooLongFrameException: Adjusted frame length exceeds 16777216: 16777295 - discarded
at io.netty.handler.codec.LengthFieldBasedFrameDecoder.fail(LengthFieldBasedFrameDecoder.java:499) [netty-all-4.0.42.Final.jar:4.0.42.Final]
......

這個異常看起來是nameserver上的netty拋出的,請求過大拋出了異常。

根據日志關鍵字,直接定位到了源碼,確實有默認的大小限制,并且可以通過com.rocketmq.remoting.frameMaxLength進行控制。

(3)源碼分析

雖然找到了異常的直接原因,但是為什么broker突然會有這么大的請求?是什么帶來的?

從broker的warning日志中,并沒有辦法看到更多有效信息。

因此,還是得深入分析下broker上的源碼。根據日志關鍵字,很快找到broker中的異常位置

圖片

broker異常位置

注意!這里通過遍歷nameserverlist,在線程池中異步注冊,跟后面的一個小知識點有關。

從源碼中可以分析出,如果有過大的請求的話,應該就是這個requestBody引起,它攜帶了大量topic信息topicConfigWrapper。

但是我們在控制臺上看到當前集群中,只有300+topic(這里其實是一個誤區,最后會解釋),理論上來說是非常小的,為什么會超出容量限制呢?

看了下源碼上下文,并沒有對reqeustBody或者topicConfigWrapper有相關日志的記錄,因此,還是需要arthas來看看了。

(4)arthas定位

直接通過arthas定位實際內存值。

watch org.apache.rocketmq.broker.out.BrokerOuterAPI registerBrokerAll {params,returnObj} -x 3

查看結果:

圖片

內存中實際topic數量

啥玩意?!

topicConfigTable的map大小為size=71111?!!

進一步看看這些topic里面都是些啥?我們調整下arthas的參數-x為4,改變watch變量的深度。

圖片

內存中相關topic名稱

發現問題了!

我們看到了大量%RETRY%開頭的topic。

3、根本原因

至此,根本原因就能明確了。

RETRY topic過多,導致 broker 向 nameserver 發送心跳(定時發送注冊請求)時,心跳請求中攜帶的 body 上的 topic 信息過大,超過了 nameserver 上使用的 NettyDecoder.java 限制的 16M (默認值),心跳請求失敗,所以broker掉線。

4、恢復

既然問題基本確定了,那么先嘗試恢復吧。

前面已經看到了對最大請求體的配置,因此,我們在bin/runserver.sh中添加一個JAVA_OPTION對com.rocketmq.remoting.frameMaxLength進行配置。然后重啟nameserver。

重新觀察broker,果然重啟成功了。

2023-01-09 16:03:55 INFO brokerOutApi_thread_3 - register broker[0]to name server mqnameserver4:9876 OK
2023-01-09 16:03:55 INFO brokerOutApi_thread_4 - register broker[0]to name server mqnameserver2:9876 OK

當然,這只是臨時恢復措施,后面重點要思考以下問題并進行優化:

  • RETRY topic數量這么多是否正常?是否可以清理無效topic?
  • 如何做好后續的topic數量監控告警?

5、最佳實踐

(1)定時刪除無效RETRY topic

考慮使用定時任務掃描所有業務topic下的消費組,再根據消費組狀態(狀態為not_online的消費組),拼出對應RETRY topic進行刪除。以上步驟均有開源MQ sdk 的 api 可以調用。

即使后續消費組重新使用,RETRY topic 也會重新創建,不影響消費。

(2)topic總數監控

前面說到在控制臺上看到當前集群中只有300+topic,這里其實是一個誤區,只勾選了NORMAL類型的topic,并沒有注意RETRY、DLQ、SYSTEM類型的topic。

圖片

控制臺誤區

而這次幾萬個topic基本都是RETRY類型的。

后續需要添加topic數量監控(包括RETRY類型),防止由于topic數量過多,導致broker注冊失敗。

6、引申思考

(1)RETRY topic是什么?為什么有這么多?

這需要從RocketMQ的重試機制與死信機制說起。

RocketMQ 提供了自帶的重試機制,消息消費失敗或超時,會被投遞到 RETRY topic。RETRY topic 里的消息會按照延時隊列的延時時間進行消費,這樣也避免了有問題的消息阻塞正常消費。

RETRY topic 里保存的是消費狀態為 consumer_later 的消息,在重試達到 16 次(默認值)以后,消息會進入死信隊列(本質上也是一個新的topic類型,DLS topic)。

DLQ topic在使用時才會創建,因此不會像RETRY topic 這樣大量膨脹。

但是,RETRY topic不一樣。它是由RocketMQ服務端自動創建,創建的時機有兩個:

  • 消費失敗的時候,將消息發送回 broker,這時候會在服務端創建RETRY topic。

圖片

消費失敗創建RETRY topic

  • consumer client 和服務端保持心跳時創建RETRY topic

圖片

心跳時創建 retry topic

線下環境的消費組存在大量的臨時測試group,而 RocketMQ會給每個實際存在的消費組創建RETRY topic,導致 RETRY topic 大量膨脹。

(2)如果所有消息自動重試,順序消息會亂序嗎?

我們知道,RocketMQ中包含三種消息類型:普通消息、普通有序消息、嚴格有序消息。

三種消息的類型介紹如下:

  • 普通消息:消息是無序的,任意發送發送哪一個隊列都可以。
  • 普通有序消息:同一類消息(例如某個用戶的消息)總是發送到同一個隊列,在異常情況下,也可以發送到其他隊列。
  • 嚴格有序消息:消息必須被發送到同一個隊列,即使在異常情況下,也不允許發送到其他隊列。

對于這三種類型的消息,RocketMQ對應的提供了對應的方法來分別消息:

//發送普通消息,異常時默認重試
public SendResult send(Message msg)

//發送普通有序消息,通過selector動態決定發送哪個隊列,異常默認不重試,可以用戶自己重試,并發送到其他隊列
public SendResult send(Message msg, MessageQueueSelector selector, Object arg)

//發送嚴格有序消息,通過指定隊列,保證嚴格有序,異常默認不重試
public SendResult send(Message msg, MessageQueue mq)

所以RocketMQ客戶端的生產者默認重試機制,只對普通消息有作用。對于普通有序消息、嚴格有序消息是沒有作用。

(3)nameserver數據一致性問題

在通過修改啟動參數com.rocketmq.remoting.frameMaxLength進行臨時恢復的時候,發現一個問題:日志恢復了,但是控制臺上卻仍然沒有顯示broker-b。

排查了下發現,由于nameserver有4臺,只重啟了一臺,而控制臺連接訪問的nameserver是另一臺,所以顯示不正確。

通過切換控制臺nameserver地址,就能看到broker-b了。

為什么不同nameserver允許數據不一致呢?

前面在排查的過程中也發現了,broker源碼中通過遍歷nameserverlist,在線程池中異步注冊topic信息到nameserver。

圖片

注冊邏輯

而這也體現了RocketM中對nameserver的設計思想。

nameserver是一個AP組件,而不是CP組件!

在 RocketMQ 中 Nameserver 集群中的節點相互之間不通信,各節點相互獨立,實現非常簡單。但同樣會帶來一個問題:

Topic 的路由信息在各個節點上會出現不一致。

那 Nameserver 如何解決這個問題呢?RocketMQ 的設計者采取的方案是不解決,即為了保證 Nameserver 的高性能,允許存在這些缺陷。

NameServer之間不通信,消息發送端通過PULL方式更新topic信息,無法及時感知路由信息的變化,因此引入了消息發送重試(只針對普通消息)與故障規避機制來保證消息的發送高可用。

事實上,在RocketMQ的早期版本,即MetaQ 1.x和MetaQ 2.x階段,也是依賴Zookeeper的(CP型組件)。但MetaQ 3.x(即RocketMQ)卻去掉了ZooKeeper依賴,轉而采用自己的NameServer。

NameServer數據不一致,比較大的影響就是topic的隊列會存在負載不均衡的問題,以及消費端的重復消費問題,這些問題對消息隊列來說都是可以忍受的,只要最終能保持一致,恢復平衡即可。

責任編輯:姜華 來源: 阿丸筆記
相關推薦

2024-01-24 09:00:31

SSD訂閱關系內存

2024-04-22 00:00:00

RocketMQ優化位點

2021-08-05 15:03:14

Windows 服務器系統

2022-08-12 10:02:24

數據中心谷歌

2024-08-19 04:00:00

2025-04-15 19:52:04

2024-11-19 08:36:16

2021-10-08 08:09:13

Facebook算法DNS

2025-07-28 02:55:00

虛擬列表JavaScript單線程

2021-04-16 07:04:53

SQLOracle故障

2021-01-22 09:56:50

微信微信8.0移動應用

2021-03-18 10:33:26

智商本科HR

2017-09-04 16:51:03

Java虛擬機GC

2021-02-02 09:13:11

索引SQL數據庫

2024-01-05 13:26:00

KafkaTopicSpring

2024-01-26 07:48:10

SpringKafka提升

2021-09-13 08:38:42

阿里時間成本

2022-01-19 11:19:25

Java/接口/代碼

2022-12-31 08:17:02

2025-08-21 08:03:22

MySQLPostgreSQL類型
點贊
收藏

51CTO技術棧公眾號

一本一生久久a久久精品综合蜜| 亚洲91精品在线| 天天干天天草天天| 亚洲妇熟xxxx妇色黄| 成人精品国产免费网站| 51午夜精品视频| 情侣偷拍对白清晰饥渴难耐| 99精品国产一区二区三区2021| 精品美女国产在线| 杨幂一区欧美专区| 婷婷丁香一区二区三区| 六月丁香婷婷久久| 97精品视频在线| 国产精品免费在线视频| 欧美自拍一区| 欧美一区二区福利视频| 国产综合免费视频| 羞羞视频在线观看免费| 久久久久久亚洲综合影院红桃| 亚洲一区二区三区香蕉| 日韩 国产 欧美| 激情亚洲网站| 久久久精品欧美| 国产又大又粗又爽的毛片| 中文久久电影小说| 欧美精品第一页| 日本男人操女人| heyzo在线| 亚洲欧美韩国综合色| 清纯唯美一区二区三区| 女人天堂av手机在线| 人妻熟女aⅴ一区二区三区汇编| 欧美久久一区二区三区| 91国产福利在线| 欧美一级在线看| 大桥未久在线播放| 亚洲视频一二三区| 亚洲精品成人自拍| 九色在线视频| 久久久久国色av免费看影院| 精品国产91亚洲一区二区三区www| 91精品国产乱码久久久| 人人爽香蕉精品| 国产va免费精品高清在线| 永久免费看片在线播放| 国模吧视频一区| 欧美人在线视频| 亚洲欧美一区二区三区四区五区| 日韩中文首页| 日韩在线视频国产| 奇米网一区二区| 欧美日韩一二| 中文字幕久久亚洲| 婷婷丁香综合网| 国产成人毛毛毛片| 345成人影院| 亚洲午夜电影在线| 精品国偷自产一区二区三区| 激情av在线| 亚洲午夜精品17c| 国产视频九色蝌蚪| 老色鬼在线视频| 欧美性猛交xxxx免费看久久久| 少妇高潮喷水在线观看| 三级在线看中文字幕完整版| 欧美午夜视频一区二区| 无码内射中文字幕岛国片| 国产一区二区三区朝在线观看| 色94色欧美sute亚洲线路一ni| 中文字幕无码不卡免费视频| 日本精品在线中文字幕| 欧美男男青年gay1069videost| 色91精品久久久久久久久| 24小时成人在线视频| 欧美一级日韩免费不卡| 挪威xxxx性hd极品| 亚洲国产合集| 色偷偷噜噜噜亚洲男人| 国产麻豆视频在线观看| 国产精品chinese| 欧美在线观看一区二区三区| 91视频久久久| 国产综合色产在线精品| 97人人模人人爽人人喊38tv| 黄色一级a毛片| 久久久久九九视频| 青青在线免费视频| 天堂√中文最新版在线| 欧美日韩国产综合一区二区三区 | 2019中文字幕在线电影免费 | 久久综合五月天| 国产精品50页| 美女脱光内衣内裤视频久久网站| 99精品国产高清在线观看| 飘雪影视在线观看免费观看 | 粉嫩绯色av一区二区在线观看| 久久久久久久久久久一区 | 亚洲精品97久久中文字幕无码| 91在线观看高清| 一区二区三区四区视频在线观看 | 婷婷综合视频| 98精品国产高清在线xxxx天堂| 伊人久久一区二区| 国产99一区视频免费| 日韩在线第一区| tube8在线hd| 欧美日韩免费高清一区色橹橹 | 国产91久久精品一区二区| 久久久999精品视频| 九九热精品视频在线| 国精产品一区一区三区mba桃花| 久久免费看av| 高清电影在线观看免费| 欧美无砖砖区免费| 亚洲午夜久久久久久久久红桃 | 日韩精选在线| 欧美成人激情在线| 在线免费观看日韩视频| 99精品欧美一区二区三区小说| 大地资源第二页在线观看高清版| 成人免费看黄| 日韩av影视在线| 久草视频这里只有精品| 日韩伦理三区| 亚洲国产精品推荐| 清纯粉嫩极品夜夜嗨av| 久久国产三级精品| 日韩一区不卡| 日韩免费小视频| 日韩精品视频免费在线观看| 久久久久久蜜桃| 国产在线精品一区二区夜色| 亚洲国产一区二区三区在线播| 樱桃视频成人在线观看| 亚洲国产日韩欧美在线动漫| 久久精品国产亚洲av高清色欲| 国内一区二区在线| 天堂av在线中文| 24小时成人在线视频| 日韩在线视频播放| 一级黄色大片网站| 国产精品国产馆在线真实露脸 | 亚洲视频第一页| 日韩免费视频一区二区视频在线观看| 成人综合在线网站| www插插插无码免费视频网站| 91精品国产自产观看在线| 日韩视频中文字幕| 97精品人妻一区二区三区香蕉 | 亚洲日本欧美日韩高观看| 中文字幕第15页| 99re热视频精品| 狠狠爱免费视频| 免费欧美激情| 国产精品入口尤物| 日本高清视频在线播放| 欧美精品久久一区| 久久国产一级片| 国产老妇另类xxxxx| 国产在线视频综合| 欧美1区二区| 日韩免费在线视频| 国产精品99999| 在线成人午夜影院| 免费人成视频在线| 99久久婷婷国产综合精品| 色欲av无码一区二区人妻| 国产一区毛片| 国产日韩中文在线| 牛牛电影国产一区二区| 日韩精品欧美激情| 又骚又黄的视频| 亚洲乱码一区二区三区在线观看| 亚洲成a人片在线www| 国产日韩欧美三级| 日韩欧美精品一区二区三区经典| 成人免费在线观看视频| 欧美成人性色生活仑片| 天天躁日日躁狠狠躁伊人| 色婷婷国产精品综合在线观看| 山东少妇露脸刺激对白在线| 激情综合网天天干| 成人黄色av片| 国产大片一区| 精品国产日本| 日本国产一区| 性色av一区二区三区免费| 国产露出视频在线观看| 欧美一区二区三区的| 国产精品黄色大片| 亚洲图片欧美激情| jizz日本免费| 国产在线精品一区二区夜色 | 在线手机中文字幕| 日韩在线观看免费高清完整版| 国产91久久久| 欧美日韩你懂得| 五月天婷婷激情| 亚洲欧美偷拍卡通变态| 中文字幕在线看高清电影| 国内外成人在线| caopor在线视频| 国产综合婷婷| 制服国产精品| 久久93精品国产91久久综合| 成人av男人的天堂| 成人在线视频观看| 91av在线网站| 秋霞在线午夜| 久久久极品av| 在线观看av的网站| 日韩理论片久久| 精品久久国产视频| 欧美日韩午夜影院| 国产成人在线免费视频 | 毛片av在线播放| 日韩国产欧美| 日本午夜一区二区三区| 久久男人av| 两个人的视频www国产精品| 五月天婷婷社区| 欧美一区二区大片| 亚洲一区 中文字幕| 色偷偷88欧美精品久久久| 日本天堂在线视频| 亚洲一区在线视频观看| 免费在线观看a级片| 欧美极品另类videosde| 欧美图片第一页| 久久亚洲综合色一区二区三区| 中文字幕乱视频| 国产成人免费在线视频| 亚洲女人在线观看| 久久99精品国产.久久久久| 亚洲一区二区三区欧美| 国产一区二区三区不卡视频网站| 国产一区免费观看| 日韩免费一级| 不卡视频一区| gogo久久日韩裸体艺术| 95av在线视频| 日韩成人久久| 成人av播放| 成人精品动漫一区二区三区| 成人影片在线播放| 成人台湾亚洲精品一区二区| 超碰在线97av| 精品国产18久久久久久洗澡| 国产美女精品在线观看| 国产一精品一av一免费爽爽| 亚洲一区二区三区四区视频| 中文字幕视频精品一区二区三区| 91手机在线播放| 国产欧美自拍一区| 国产综合18久久久久久| 中文字幕中文字幕精品| 日韩高清国产精品| 欧美少妇xxxx| 亚洲第一页在线视频| 综合视频在线| 国产欧美日韩网站| 久久不射中文字幕| 91蝌蚪视频在线观看| 另类中文字幕网| 日本中文字幕在线不卡| 成人精品一区二区三区中文字幕| 亚洲男女在线观看| 久久久亚洲精品一区二区三区| 亚洲精品一区二区三区影院忠贞| 国产精品久久久久婷婷| 国产精品九九九九九九| 亚洲成人一区在线| 日本a级c片免费看三区| 欧美欧美欧美欧美首页| 亚洲精品国产suv一区| 精品夜色国产国偷在线| av在线免费观看网站| 欧美成人精品一区二区| 极品av在线| 国产日韩专区在线| 精品久久97| 一区二区精品免费视频| 伊人久久综合| 亚洲天堂2018av| 成人精品免费网站| 亚欧精品视频一区二区三区| 亚洲伊人伊色伊影伊综合网| 日韩欧美国产另类| 日韩女优av电影在线观看| 青草久久伊人| 欧美激情在线有限公司| 韩国成人在线| 国产另类第一区| 99精品视频精品精品视频| 久久久久久久久久网| 另类小说综合欧美亚洲| 鲁大师私人影院在线观看| 国产精品久久久一本精品| 日本少妇激情舌吻| 欧美丰满美乳xxx高潮www| 青青久在线视频| 欧美日韩爱爱视频| 福利视频亚洲| 久久久久久久久久久久久久一区 | 91欧美日韩在线| 日韩在线三区| 9国产精品视频| 污视频在线观看免费网站| 亚洲国产高清不卡| 日韩av一二三区| 日韩视频国产视频| 欧美激情午夜| 国产精品ⅴa在线观看h| 欧美日韩大片免费观看| 特级西西人体www高清大胆| 免费成人av在线播放| 免费无码一区二区三区| 一区二区三区高清在线| 91成人一区二区三区| 亚洲欧洲成视频免费观看| 99riav视频在线观看| 91麻豆精品秘密入口| 欧美mv日韩| 天天影视综合色| 久久亚洲综合色一区二区三区| 日韩成年人视频| 精品国产伦理网| 亚洲卡一卡二| 99re热精品| 欧美伊人影院| 五月天六月丁香| 亚洲毛片av在线| 成人av手机在线| 欧美疯狂性受xxxxx另类| 香蕉久久久久久| 在线免费一区| 精品一区二区三区在线视频| 欧美老女人性生活视频| 在线视频一区二区三| 欧美性孕妇孕交| 国产91色在线|免| 国产一区网站| 国内自拍视频网| 国产精品福利一区二区| 中文字幕一区二区三区人妻四季| 国产一区二区三区在线观看视频 | 欧美日韩视频第一区| 国产香蕉视频在线看| 国产成人综合精品| 精品视频网站| 国产成人美女视频| 中文字幕亚洲在| a级片在线免费看| 欧美激情视频在线| 久久这里只有精品一区二区| 国产精品秘入口18禁麻豆免会员| 91视频精品在这里| 无码人妻av免费一区二区三区| 夜夜嗨av一区二区三区免费区| 欧美黄页免费| 免费在线精品视频| 成人综合婷婷国产精品久久蜜臀 | 丝袜诱惑亚洲看片 | 亚洲精品一二三| 成人免费视频国产| 97国产成人精品视频| 国产99久久| 天天摸天天舔天天操| 亚洲综合激情网| 国产精品无码2021在线观看| 国产日韩在线亚洲字幕中文| 极品av少妇一区二区| 黄瓜视频污在线观看| 欧美色男人天堂| 天堂8中文在线| 久久精品人成| 久久超级碰视频| 伊人国产在线观看| 亚洲日本aⅴ片在线观看香蕉| 欧洲亚洲精品久久久久| 青草视频在线观看视频| 国产日产精品一区| 成年人av电影| 亚洲精品美女视频| 日韩欧美一区二区三区在线观看 | 日韩av片在线免费观看| 欧美一级黄色录像| 日韩免费电影| 激情五月六月婷婷| 国产女人水真多18毛片18精品视频| 99热这里只有精品99| 日av在线播放中文不卡| 中文字幕一区二区三区欧美日韩| 鲁大师私人影院在线观看| 91麻豆精品国产91久久久久久久久| 成av人片在线观看www| 亚洲午夜久久久影院伊人| 99这里只有久久精品视频| 91午夜交换视频| 欧洲日韩成人av|