精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美精品一区二区三区在线| 自拍偷拍亚洲欧美日韩| 欧美一级电影在线| 欧美激情 一区| 国产精品一区二区精品| 午夜视频在线观看一区二区三区| 欧美精品欧美精品系列c| 丰满熟女人妻一区二区三| 亚洲破处大片| 日韩麻豆第一页| 亚洲综合av在线播放| 97久久人人超碰caoprom| 国产欧美日韩亚州综合| 99视频免费观看| 中文字幕免费观看| 国产一区二区三区四区三区四| 国产午夜精品久久久| 亚洲无在线观看| 五月天国产在线| 亚洲乱码中文字幕综合| 日本成人看片网址| www.好吊色| 日本女优在线视频一区二区| 久久久久久久久久av| 亚欧精品视频一区二区三区| 噜噜噜狠狠夜夜躁精品仙踪林| 欧美日韩国产精品成人| 国产最新免费视频| 天堂av资源在线观看| 国产丝袜美腿一区二区三区| 国产v亚洲v天堂无码| 91欧美日韩麻豆精品| 毛片一区二区| 午夜精品一区二区三区在线视 | 亚洲一级免费观看| 国产夫妻在线| 亚洲狠狠爱一区二区三区| 综合久久国产| 91涩漫在线观看| 久久久不卡网国产精品二区| 精品国产免费一区二区三区 | av一二三不卡影片| 91中文在线观看| 亚洲系列第一页| 三级影片在线观看欧美日韩一区二区| 午夜精品www| 黄色片子在线观看| 色综合久久一区二区三区| 亚洲视频在线观看| 日韩人妻无码一区二区三区| 精品三级av| 亚洲成年人影院在线| 中文字幕在线播放一区二区| 成人污污www网站免费丝瓜| 欧美中文字幕一区二区三区亚洲| 亚洲熟妇av一区二区三区| 蜜桃视频m3u8在线观看| 亚洲444eee在线观看| 999一区二区三区| 欧美78videosex性欧美| 亚洲影视在线观看| 免费在线看黄色片| 黄色羞羞视频在线观看| 亚洲国产裸拍裸体视频在线观看乱了| 国产黄色激情视频| 毛片大全在线观看| 亚洲自拍偷拍网站| 欧美视频在线观看视频 | 日本精品视频网站| 波多野结衣爱爱| 欧美a级理论片| 91理论片午午论夜理片久久| 精品人妻少妇嫩草av无码专区| 国产一区二区三区免费| 成人av男人的天堂| 欧美一区二区黄片| 久久男人中文字幕资源站| 欧美一区二区福利| 精品美女在线观看视频在线观看| 一区二区在线观看视频在线观看| 拔插拔插海外华人免费| 欧美xxx网站| 欧美日韩黄色一区二区| 中文字幕avav| 欧美男男freegayvideosroom| 亚洲男女性事视频| 午夜三级在线观看| 国内精品久久久久久久97牛牛| 97色在线播放视频| 亚洲免费视频二区| 国产91在线看| 免费中文日韩| 精品孕妇一区二区三区| 午夜国产精品一区| 伊人影院综合在线| 国产精品毛片av| 在线精品国产成人综合| 久久免费视频精品| 久久午夜影视| 999在线观看免费大全电视剧| 青青色在线视频| 亚洲视频免费看| 日韩精品xxxx| 超碰国产精品一区二页| 亚洲精品久久久久久下一站| 最新中文字幕视频| 在线精品国产| 国产91九色视频| 亚洲AV无码国产精品午夜字幕 | 国产一级做a爱免费视频| 久久久久99| 国产亚洲二区| 麻豆网站在线免费观看| 欧美三级欧美成人高清www| 天天干天天色天天干| 国产欧美日韩影院| 欧美国产第一页| 国产精品-色哟哟| 91小视频在线| av免费看网址| 精品亚洲二区| 色狠狠av一区二区三区香蕉蜜桃| 国偷自拍第113页| 国产麻豆成人精品| 亚洲精品第一区二区三区| 国产精品13p| 欧美成人一级视频| 人人澡人人澡人人看| 久久亚洲一区| 久久偷看各类wc女厕嘘嘘偷窃 | 亚洲成人午夜电影| 日韩精品视频网址| 欧美aaaa视频| 国产精品视频导航| 国产色在线 com| 欧美视频在线视频| 午夜不卡久久精品无码免费| 一区二区在线影院| 川上优av一区二区线观看| 成人在线免费视频| 日本韩国一区二区三区视频| 国产精品嫩草av| 亚洲国产裸拍裸体视频在线观看乱了中文 | 精产国品一区二区| 久久婷婷综合激情| 日本不卡在线观看视频| 色婷婷综合久久久久久| 26uuu亚洲国产精品| 婷婷丁香一区二区三区| 精品久久久久国产| 无码人妻精品一区二区三区温州 | 国内精品久久久久久中文字幕 | 亚洲人成在线观看| 免费观看日批视频| 国产调教视频一区| 国产精品自拍视频在线| 99精品在线| 成人久久久久久久| av毛片在线| 日韩女优电影在线观看| 久热精品在线观看| 成人ar影院免费观看视频| 久久久一本二本三本| 亚欧洲精品视频在线观看| 日本久久久久久| yw视频在线观看| 在线不卡欧美精品一区二区三区| 免费成人深夜夜行网站| 国产电影精品久久禁18| 18禁免费观看网站| 国产一区二区三区四区| 国产欧美亚洲视频| av毛片在线看| 亚洲精品视频免费在线观看| 这里只有精品999| 亚洲欧美日韩久久| 日韩av无码一区二区三区不卡| 99精品国产在热久久| 欧美性大战久久久久| 色噜噜成人av在线| 欧美激情乱人伦一区| 四虎影院在线播放| 欧美日韩一区二区欧美激情| 精品国产欧美日韩不卡在线观看 | 国产日韩亚洲精品| 都市激情亚洲一区| 久久精品国产精品| 午夜性色福利视频| 欧美性高清videossexo| 欧美极品视频在线观看| 91免费国产视频网站| 手机版av在线| 国产一区二区你懂的| 亚洲精品二区| 精品国产影院| 国产在线观看精品| 手机av在线| 久久中国妇女中文字幕| 日本中文字幕电影在线观看| 337p亚洲精品色噜噜| 可以免费在线观看的av| 亚洲欧美日韩在线| 欧美日韩高清丝袜| 国产99精品国产| 久久撸在线视频| 欧美在线综合| 精品无码国产一区二区三区av | 精品一二三四五区| 日韩一区二区中文| 精品一区二区三区国产| 99er精品视频| 国产精品国模在线| 免费v片在线观看| 美女福利视频一区| 最近高清中文在线字幕在线观看| 日韩麻豆第一页| 粉嫩av一区二区夜夜嗨| 欧美精品777| 最近中文字幕在线观看| 福利视频第一区| 久久久久免费看| 亚洲柠檬福利资源导航| 激情五月深爱五月| 久久无码av三级| 最近中文字幕无免费| 丁香婷婷综合色啪| 三级黄色片免费看| 麻豆久久久久久久| 五月婷婷激情久久| 日韩激情中文字幕| 成年网站在线免费观看| 激情婷婷久久| 国产精品久久国产| 欧美激情成人在线| 黄瓜视频免费观看在线观看www| 成人亚洲一区| 日韩影视精品| 国产一区二区三区91| 麻豆传媒一区| 亚洲自拍电影| 玛丽玛丽电影原版免费观看1977| 国产一区二区三区不卡av| 国产精品日本一区二区| 国产精品美女在线观看直播| 成人在线免费网站| 国偷自产av一区二区三区| av色综合网| eeuss鲁片一区二区三区| 成人欧美一区二区三区在线观看 | 日韩电影免费观看中文字幕| 亚洲精品一区二区三区四区| 欧美变态凌虐bdsm| 亚洲精品久久久久avwww潮水| 日韩欧美黄色影院| 好吊色视频一区二区| 精品国产污网站| 偷拍精品一区二区三区| 国产视频在线观看一区二区| 黄色电影免费在线看| 最近2019年好看中文字幕视频| 男人影院在线观看| 久久av在线看| 丁香花在线影院| 欧美影院在线播放| 欧美xxx网站| 成人网在线观看| 最新国产一区二区| 久久资源av| 久久国产成人午夜av影院宅| 最新av网址在线观看| 尹人成人综合网| 无码少妇一区二区三区芒果| 狠狠色综合日日| 欧美xxxxx精品| 国产欧美一二三区| 欧美特级一级片| 精品福利在线视频| 凹凸精品一区二区三区| 欧美一区二区视频免费观看| 深爱五月激情五月| 中文字幕综合在线| 成人在线免费观看黄色| 国产成人精品日本亚洲专区61| 亚洲狼人在线| 精品综合在线| 国产精品videosex性欧美| www污在线观看| 欧美aⅴ一区二区三区视频| 少妇献身老头系列| 久久精品水蜜桃av综合天堂| 欧美视频www| 欧美性xxxxx极品| 99在线精品视频免费观看20| 日韩精品高清在线| 国产网友自拍视频导航网站在线观看 | 777色狠狠一区二区三区| 天堂成人在线观看| www.美女亚洲精品| 色网在线免费观看| 亚洲自拍偷拍一区| 欧美日韩一二三四| 国产免费黄色一级片| 久久丁香综合五月国产三级网站| 欧美在线一级片| 日韩一区有码在线| 久久青青草原亚洲av无码麻豆| 欧美一个色资源| 成a人v在线播放| 98精品国产高清在线xxxx天堂| 日韩一级特黄| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 国产 国语对白 露脸 | 国产精品18久久久久久麻辣| 久久视频社区| 曰韩不卡视频| 日韩高清一区在线| 日本少妇毛茸茸| 亚洲一区二区五区| 国产一区二区视频免费观看| 亚洲视频综合网| 色黄视频在线观看| 国内精品久久国产| 欧美日韩一区二区三区四区在线观看| 天天干天天综合| 国产视频一区二区在线| 日韩精品手机在线| 亚洲精品999| 丁香高清在线观看完整电影视频 | 一级黄色香蕉视频| 91免费观看在线| 中文字幕日韩一级| 精品99一区二区| 丁香花在线影院| 国产精品手机在线| 国产精品红桃| 黑森林av导航| 亚洲国产精品精华液网站| 亚洲国产精品久久久久久久| 欧美成人精品激情在线观看 | 亚洲色婷婷一区二区三区| 欧美日韩国产免费一区二区| 午夜在线视频| 91精品久久久久久久久久| 日韩欧美精品综合| mm131亚洲精品| 国产精品麻豆视频| 夜夜骚av一区二区三区| 日韩在线观看成人| 懂色av色香蕉一区二区蜜桃| 99久久久无码国产精品性色戒| 久草中文综合在线| 中文字幕影音先锋| 欧美mv日韩mv国产| 草草视频在线| 免费看成人av| 日韩1区2区3区| 国产精品69久久久久孕妇欧美| 欧美精品在线观看一区二区| av在线影院| 国产精品传媒毛片三区| 国产亚洲精品v| 在线不卡av电影| 欧美日韩一区二区三区免费看| 搞黄网站在线观看| 国产美女在线精品免费观看| 国产精品久久久免费| 亚洲国产天堂av| 欧美二区在线观看| 毛片网站在线看| 日韩av一区二区三区美女毛片| 久久99精品久久久久婷婷| 欧美日韩精品一区二区三区视频播放| 精品国精品自拍自在线| 欧美黑人粗大| 老司机av福利| 不卡一区中文字幕| 免费在线不卡av| 欧美日韩高清在线观看| 中文字幕亚洲影视| 在线看免费毛片| 性做久久久久久| 中文字幕在线免费| 国产精品久久久久久久久婷婷| 久久中文字幕一区二区三区| 欧美激情精品久久久久久免费| 亚洲成色www8888| 国产韩日精品| 欧美国产视频一区| 久久精品视频免费观看| 国产三区在线播放| 欧美尤物巨大精品爽| 亚洲激情中文| 少妇久久久久久久久久| 欧美一区二区三级| 欧美特大特白屁股xxxx| 国产人妻人伦精品| 国产欧美一区二区三区在线老狼| 国产高中女学生第一次| 国产成人av网| 亚洲国内精品|