請(qǐng)教個(gè)問(wèn)題哈膘滨,DefaultMessageStore#checkInDiskByCommitOffset 這個(gè)方法來(lái)檢查消息是否在內(nèi)存中,40% 這個(gè)邏輯是怎么形成的呢柬批?是依照什么指標(biāo)決定出來(lái)的呢?
個(gè)人想了一下袖订,使用內(nèi)存的地方可能如下:(現(xiàn)在對(duì) RocketMQ 的整體還不太了解氮帐,可能不準(zhǔn)確)
1,啟動(dòng) rocketmq 的 jvm 內(nèi)存洛姑。記得官方推薦 16G 內(nèi)存的機(jī)器上沐,runbroker.sh 里默認(rèn)是 8G。這樣的內(nèi)存就剩下 50%了楞艾。
2参咙,除了 CommitLog 外,Index硫眯、ConsumeQueue 等會(huì)占用一部分 page cache 內(nèi)存蕴侧,這些文件不算太大,我們估計(jì)成占用 10% 的內(nèi)存两入。
3净宵,系統(tǒng)占用內(nèi)存忽略。
上面占用內(nèi)存統(tǒng)計(jì)后裹纳,大約是 60%塘娶,剩下的 40% 內(nèi)存是 CommitLog 所占用,所以 checkInDiskByCommitOffset 方法里痊夭,計(jì)算是否在內(nèi)存中時(shí),使用的是系統(tǒng)內(nèi)存的 40%脏里。不知道這樣從結(jié)果推原因她我,是不是準(zhǔn)確。
rocket mq 底層存儲(chǔ)源碼分析(7)-業(yè)務(wù)消息查詢(xún)本章節(jié)是《rocket mq 底層存儲(chǔ)源碼分析》系列的最后一章迫横,我們結(jié)合【邏輯位移索引】以及【key查詢(xún)索引】番舆,從低層接口分析如何利用這兩類(lèi)索引,為上層業(yè)務(wù)接口提供查詢(xún)業(yè)務(wù)消...