淺談mongodb內存


  本文僅限於mongodb3.0.0(wiredtiger引擎)

一.mongodb內存使用

1.熱數據

這一點是SQL和nosql之間的巨大差距,將熱數據存在內存相當於自帶cache,若wiredtigercache大小控制合理,此處內存性價比相當高。

2.索引

跟熱數據同樣

3.連接所消耗內存

這里算是與SQL基本相同的一部分

二.監控

1.wiredtigercache

2.mongodb所占用內存

3.mongodb讀取數據與IO數據

三.優化

1.熱數據

上面說此處占用內存為cache,可以通過wiredtigercache進行上限的調節,與memcache或redis做緩存時候調節相同,將命中和大小控制在合理范圍

2.索引

mongodb會將全部索引讀入內存中,所以這里優化相當重要,

建議花精力去整理索引,如果可以做到索引恰好覆蓋熱數據為最佳,

四.其他注意事項

1.杜絕依靠重啟來釋放內存,這時釋放掉的是熱數據,得不償失

2.可以禁止swap,

3.不要將mongodb與其他吃內存的服務部署到同一機器上

4.重視對mongodb內存監控,避免oom

5.重視oplog,oplog大小應定期調整,若oplog過小,對熱數據部分將是災難

6.關閉NUMA

7.安裝在x64機器上(貌似是句廢話)

8.根據wiredtigercache,索引,連接,來調整內存

9.有條件最好SSD

10.找一個懂mongodb的人解決具體問題,不要遇到問題就說mongodb不好

 

最后說一下個人對mongodb的看法,

1.從架構來講,可切片,有副本集,mongos,保證了高可用性和可伸縮性

2.副本集可以做讀寫分離,

3.熱數據和索引在內存,保證了高速

本人覺得mongodb是一個好東西,有不適合場景,也有適合場景,應該根據項目實際情況來使用,不能一味在不了解情況下跟風評價。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM