最新文章專(zhuān)題視頻專(zhuān)題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專(zhuān)題1關(guān)鍵字專(zhuān)題50關(guān)鍵字專(zhuān)題500關(guān)鍵字專(zhuān)題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專(zhuān)題關(guān)鍵字專(zhuān)題tag2tag3文章專(zhuān)題文章專(zhuān)題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專(zhuān)題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

MongoDB內(nèi)存使用

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 13:22:57
文檔

MongoDB內(nèi)存使用

MongoDB內(nèi)存使用:都說(shuō) MongoDB 是個(gè)內(nèi)存大戶(hù),但是怎么知道它到底用了多少內(nèi)存呢? 先 ps 一下看看。 $ ps aux|grep mongodmongo 26994 9.0 20.0 797264324 13243052 Sl May16 117:03 /path/to/mongodb/bin/mongod 總共 760G 多的虛
推薦度:
導(dǎo)讀MongoDB內(nèi)存使用:都說(shuō) MongoDB 是個(gè)內(nèi)存大戶(hù),但是怎么知道它到底用了多少內(nèi)存呢? 先 ps 一下看看。 $ ps aux|grep mongodmongo 26994 9.0 20.0 797264324 13243052 Sl May16 117:03 /path/to/mongodb/bin/mongod 總共 760G 多的虛

都說(shuō) MongoDB 是個(gè)內(nèi)存大戶(hù),但是怎么知道它到底用了多少內(nèi)存呢? 先 ps 一下看看。 $ ps aux|grep mongodmongo 26994 9.0 20.0 797264324 13243052 ? Sl May16 117:03 /path/to/mongodb/bin/mongod 總共 760G 多的虛擬內(nèi)存,但是物理內(nèi)存就只有 12.6G 。這

都說(shuō) MongoDB 是個(gè)內(nèi)存大戶(hù),但是怎么知道它到底用了多少內(nèi)存呢?

先 ps 一下看看。

$ ps aux|grep mongod
mongo 26994 9.0 20.0 797264324 13243052 ? Sl May16 117:03 /path/to/mongodb/bin/mongod

總共 760G 多的虛擬內(nèi)存,但是物理內(nèi)存就只有 12.6G 。這個(gè)機(jī)器可是有 64G 內(nèi)存的哦,這看起來(lái) MongoDB 完全沒(méi)用多少內(nèi)存嘛。

再看看 free 的結(jié)果。

$ free -m
 total used free shared buffers cached
Mem: 64544 64279 265 0 134 60413
-/+ buffers/cache: 3731 60813
Swap: 31999 0 31999

內(nèi)存倒是占得差不多了,基本都是 cached ,也就是文件系統(tǒng)緩存。MongoDB 是通過(guò) mmap 方式讓操作系統(tǒng)來(lái)處理持久化和緩存的。每個(gè)數(shù)據(jù)文件都直接映射到某個(gè)虛擬內(nèi)存地址。訪問(wèn)的時(shí)候如果這一頁(yè)不在內(nèi)存中,系統(tǒng)就會(huì)嘗試把這一頁(yè)加載進(jìn)來(lái)。這些內(nèi)存都是算進(jìn) cache 里的。在 mongodb 的官方文檔里有這樣一個(gè)說(shuō)法,top 或 ps 里的 RSIZE 段顯示的是機(jī)器的全部?jī)?nèi)存大小,因?yàn)?mongodb 會(huì)盡可能占用全部?jī)?nèi)存。但是事實(shí)上,這些緩存并沒(méi)有算在里面。因此在 top 或 ps 中是看不出 MongoDB 的實(shí)際內(nèi)存使用情況的。而 free 雖然可以看到系統(tǒng)的內(nèi)存使用情況,但是沒(méi)法確定這些內(nèi)存里究竟有多少真的是 MongoDB 使用的。

還好有人做了 vmtouch 這個(gè)工具??梢詸z查文件在緩存中的情況,另外也可以把文件直接加載進(jìn)緩存或者踢出去。只需要對(duì) MongoDB 的所有數(shù)據(jù)文件檢查一下緩存加載情況,就可以知道 MongoDB 到底緩存了多少數(shù)據(jù)了。

$ vmtouch -m4G /path/to/mongodb/data/
 Files: 256
 Directories: 3
 Resident Pages: 15465901/100219772 58G/382G 15.4%
 Elapsed: 4.072 seconds

這里 -m4G 是 vmtouch 檢查的文件大小限制。MongoDB 的數(shù)據(jù)文件比較大,通常會(huì)超過(guò)默認(rèn)的 500M。這樣看來(lái),緩存用了 58G,這還差不多。Resident Pages 左側(cè)的數(shù)字是頁(yè)的數(shù)量,頁(yè)的數(shù)量乘以文件系統(tǒng)頁(yè)大小才是內(nèi)存使用量。頁(yè)的大小可以通過(guò)

getconf PAGESIZE 

查看,通常是 4096,也就是 4KB。

MongoDB 在 NUMA 的機(jī)器上運(yùn)行,并且內(nèi)存被固定到一個(gè) node 的時(shí)候,會(huì)有一個(gè)警告

WARNING: You are running on a NUMA machine. 
We suggest launching mongod like this to avoid performance problems: 
numactl –interleave=all mongod [other options]

也許是認(rèn)為,這種情況下只能用上一個(gè)節(jié)點(diǎn)的內(nèi)存。但 MongoDB 的緩存是由操作系統(tǒng)管理的。NUMA 似乎對(duì)此并沒(méi)有影響。而內(nèi)存不太小的時(shí)候 MongoDB 本身很難用掉一個(gè)節(jié)點(diǎn)的內(nèi)存。這種情況下,是否開(kāi)啟 numactl –interleave=all 作用已經(jīng)不大了。能做的也許只能是加內(nèi)存,sharding,或者換 ssd 了。

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

MongoDB內(nèi)存使用

MongoDB內(nèi)存使用:都說(shuō) MongoDB 是個(gè)內(nèi)存大戶(hù),但是怎么知道它到底用了多少內(nèi)存呢? 先 ps 一下看看。 $ ps aux|grep mongodmongo 26994 9.0 20.0 797264324 13243052 Sl May16 117:03 /path/to/mongodb/bin/mongod 總共 760G 多的虛
推薦度:
標(biāo)簽: 內(nèi)存 使用 是個(gè)
  • 熱門(mén)焦點(diǎn)

最新推薦

猜你喜歡

熱門(mén)推薦

專(zhuān)題
Top