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

消費(fèi)者太多!RocketMQ又炸了!

開(kāi)發(fā) 前端
問(wèn)題找到了,直接的解決方式是刪除文件中無(wú)用的consumerGroup name?,重啟broker進(jìn)行加載。由于是線下環(huán)境,不需要擔(dān)心位點(diǎn)丟失的問(wèn)題,同時(shí)當(dāng)客戶端請(qǐng)求時(shí)會(huì)自動(dòng)創(chuàng)建新的位點(diǎn)信息,所以可以考慮直接刪除。

1、問(wèn)題現(xiàn)象

先說(shuō)明下RocketMQ版本, 4.6.0的老版本了。

線下環(huán)境客戶端啟動(dòng)會(huì)頻繁報(bào)錯(cuò)響應(yīng)超時(shí),導(dǎo)致consumer實(shí)例化失敗,無(wú)法啟動(dòng)應(yīng)用。

圖片圖片

2、排查

確認(rèn)線下環(huán)境RocketMQ集群流量、生產(chǎn)消費(fèi)數(shù)量無(wú)異常。

集群gc次數(shù)不多,但是耗時(shí)高。(原本監(jiān)控看板異常數(shù)據(jù)缺失,所以少了前面一段)

圖片圖片

master節(jié)點(diǎn)cpu使用率、load極高。

圖片圖片

升配,4c8g升級(jí)8c32g,擴(kuò)大jvm內(nèi)存。

系統(tǒng)指標(biāo)略有下降,但是客戶端異常沒(méi)有明顯改善。

只能進(jìn)一步排查根因,還得上arthas。

thread -n 3

查看cpu高的線程在做什么。

發(fā)現(xiàn)兩個(gè)異常線程。

1)一個(gè)線程在執(zhí)行AdminBrokerProcessor.queryTopicConsumerByWho()。

圖片圖片

這個(gè)是查詢Topic的conusmerGroup信息。

比較奇怪的是,這個(gè)請(qǐng)求很頻繁,后來(lái)發(fā)現(xiàn)是控制臺(tái)應(yīng)用dashboard有個(gè)定時(shí)任務(wù),30s查詢一次。

這個(gè)請(qǐng)求的耗時(shí)主要是在數(shù)組的遍歷處理上,說(shuō)明內(nèi)存中的數(shù)據(jù)非常大。

圖片圖片

而這個(gè)源碼中的offsetTable,就是RocketMQ中保存consumerGroup位點(diǎn)信息的對(duì)象。它的key是topic@group拼接的。

圖片圖片

先臨時(shí)處理,把dashboard應(yīng)用關(guān)閉了,減少請(qǐng)求。但是效果并不明顯。

2)另一個(gè)線程在執(zhí)行定時(shí)任務(wù)ConsumerOffsetManager.persist()。

(線程調(diào)用信息忘記截圖了)

這個(gè)是RocketMQ集群持久化consumerGroup的offset信息的定時(shí)任務(wù)。

圖片圖片

會(huì)將整個(gè)內(nèi)存對(duì)象轉(zhuǎn)化為jsonString寫入磁盤文件中。

這個(gè)內(nèi)存對(duì)象就是前面提到的offsetTable,就是RocketMQ中保存consumerGroup位點(diǎn)信息的對(duì)象。

這里消耗資源多,還是說(shuō)明我們的內(nèi)存對(duì)象非常大。

因?yàn)槭蔷€下環(huán)境,可靠性要求不高。所以先臨時(shí)處理,把定時(shí)任務(wù)默認(rèn)配置5s改成50s,減少持久化次數(shù)。

效果顯著,機(jī)器cpu、負(fù)載都明顯改善。

好了,現(xiàn)在問(wèn)題的矛頭都指向了這個(gè)offsetTable,那它到底有多大,為什么這么大?

3、定位根因

3.1 直接原因

大對(duì)象的定位,一般來(lái)說(shuō)需要dump看看,不過(guò)這個(gè)對(duì)象有點(diǎn)特殊,剛剛也提到了它會(huì)被持久化到文件中,所以直接看文件大小和內(nèi)容就行了。

持久化文件的配置路徑,可以看下啟動(dòng)的conf.properties

storePathRootDir=/usr/local/rocketmq/store1
storePathCommitLog=/usr/local/rocketmq/store1/commitlog
storePathConsumerQueue=/usr/local/rocketmq/store1/consumequeue
storePathIndex=/usr/local/rocketmq/store1/index

在/usr/local/rocketmq/store1目錄下找到config文件夾的consummerOffset.json文件,44M,amazing~

對(duì)一個(gè)幾十M的對(duì)象頻繁序列化和持久化,加上內(nèi)網(wǎng)磁盤比較差,難怪負(fù)載如此高。

圖片

(這里截圖是當(dāng)時(shí)應(yīng)急時(shí)備份的文件,新的文件目前是414K)

3.2 根本原因

為什么這個(gè)內(nèi)存對(duì)象這么大呢?

查看了下文件內(nèi)容,是RocketMQ中保存consumerGroup位點(diǎn)信息的對(duì)象,它的key是topic@group拼接的。

我們發(fā)現(xiàn)大量奇怪的consumerGroup name,跟一個(gè)topic聯(lián)合產(chǎn)生了幾千個(gè)key。

查看了下內(nèi)部封裝的客戶端代碼,找到了罪魁禍?zhǔn)住?/p>

圖片圖片

線下環(huán)境會(huì)根據(jù)小環(huán)境(比如自己起的測(cè)試、單測(cè)環(huán)境、CI測(cè)試環(huán)境等)拼接一個(gè)獨(dú)立的consumerGroup name。

在線下,每次CI的測(cè)試環(huán)境名字會(huì)變化,所以導(dǎo)致consumerGroup name數(shù)量急劇膨脹。

4、優(yōu)化

問(wèn)題找到了,直接的解決方式是刪除文件中無(wú)用的consumerGroup name,重啟broker進(jìn)行加載。

由于是線下環(huán)境,不需要擔(dān)心位點(diǎn)丟失的問(wèn)題,同時(shí)當(dāng)客戶端請(qǐng)求時(shí)會(huì)自動(dòng)創(chuàng)建新的位點(diǎn)信息,所以可以考慮直接刪除。

圖片圖片

先停止broker進(jìn)程(否則會(huì)自動(dòng)落盤內(nèi)存數(shù)據(jù),創(chuàng)建新的文件),然后重命名相關(guān)文件(用于備份回滾),重新啟動(dòng)broker進(jìn)程,讀取空文件加載空對(duì)象。

重啟后,各個(gè)客戶端在請(qǐng)求集群時(shí),會(huì)自動(dòng)創(chuàng)建訂閱關(guān)系和消費(fèi)位點(diǎn)記錄,負(fù)載略有升高,然后就恢復(fù)到較低的負(fù)載水位了。

24h的監(jiān)控顯示,優(yōu)化效果顯著,整個(gè)機(jī)器負(fù)載降低,請(qǐng)求讀寫耗時(shí)也顯著降低。

圖片圖片

注意:保存訂閱關(guān)系的subscriptionGroup.json也存在同樣consumerGroup過(guò)多導(dǎo)致膨脹的問(wèn)題,同樣的原因和優(yōu)化方式。默認(rèn)訂閱關(guān)系也是會(huì)自動(dòng)創(chuàng)建的。這里就不展開(kāi)贅述了。

5、擴(kuò)展一下

如果類似的問(wèn)題出在線上怎么辦?

事后來(lái)看,類似問(wèn)題是能夠提前避免的,主要考慮兩個(gè)措施:

  • 要做好持久化文件(對(duì)應(yīng)內(nèi)存對(duì)象)大小監(jiān)控,避免出現(xiàn)內(nèi)存大對(duì)象。如果發(fā)現(xiàn)異常增長(zhǎng),必須提前排查處理。
  • 磁盤要足夠好,使用SSD是基本要求,避免頻繁刷盤導(dǎo)致負(fù)載升高。

責(zé)任編輯:武曉燕 來(lái)源: 阿丸筆記
相關(guān)推薦

2024-01-24 09:00:31

SSD訂閱關(guān)系內(nèi)存

2023-03-27 09:50:16

RocketMQ中間件

2022-07-07 09:00:49

RocketMQ消費(fèi)者消息消費(fèi)

2022-03-14 11:05:01

RocketMQRedis緩存

2021-07-12 10:25:03

RocketMQ數(shù)據(jù)結(jié)構(gòu)kafka

2022-11-08 07:36:17

RocketMQ消費(fèi)者消息堆積

2022-05-09 11:15:05

RocketMQPULL 模式PUSH 模式

2023-06-01 08:08:38

kafka消費(fèi)者分區(qū)策略

2023-03-28 07:08:09

RocketMQ消費(fèi)者堆棧

2015-08-26 09:39:30

java消費(fèi)者

2011-08-05 16:21:24

2011-07-22 16:25:38

CA TechnoloIT消費(fèi)化

2009-08-13 13:14:31

C#生產(chǎn)者和消費(fèi)者

2023-01-29 08:46:08

2021-02-02 09:13:11

索引SQL數(shù)據(jù)庫(kù)

2021-12-22 11:00:05

模型Golang語(yǔ)言

2015-06-15 11:29:34

數(shù)據(jù)中心綠色數(shù)據(jù)中心

2015-08-31 10:45:02

數(shù)據(jù)

2009-04-15 11:17:23

2018-05-16 23:37:55

攜號(hào)轉(zhuǎn)網(wǎng)運(yùn)營(yíng)商網(wǎng)絡(luò)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日本淫视频 | 亚洲一区二区三区乱码aⅴ 四虎在线视频 | 日本不卡免费新一二三区 | 日韩三级免费观看 | 一区二区三区久久久 | 亚洲每日更新 | 欧美9999| h网站在线观看 | 久久人人网 | 99久久精品免费看国产四区 | 久久99精品久久久久久国产越南 | 久久99精品久久久久子伦 | 欧美国产一区二区 | 成人综合视频在线观看 | 真人一级毛片 | 欧美成人综合 | 国产一区二区三区亚洲 | 日日夜夜天天 | 99精品国产在热久久 | 欧洲精品久久久久毛片完整版 | 99re6在线 | 一区二区三区四区国产 | 日本视频在线播放 | 超碰免费在线 | 日本视频免费观看 | www四虎com | 午夜精品一区二区三区在线观看 | 激情欧美一区二区三区中文字幕 | 国产欧美一区二区三区在线看 | 午夜免费在线电影 | 久久精品色欧美aⅴ一区二区 | 蜜桃视频在线观看免费视频网站www | 成人h视频在线观看 | 日韩欧美一级 | 亚洲不卡在线观看 | 91看片在线 | 中文字幕av一区二区三区 | 琪琪午夜伦伦电影福利片 | 性xxxxx| 午夜免费观看网站 | 国产精品乱码一区二三区小蝌蚪 |