1. 程式人生 > 資料庫 >解決MongoDB佔用記憶體過大頻繁宕機的方法詳解

解決MongoDB佔用記憶體過大頻繁宕機的方法詳解

從MongoDB 3.4開始,預設的WiredTiger內部快取大小是以下兩者中的較大者:

50%(RAM-1 GB),或 256 MB

例如,在總共有4GB RAM的系統上,WiredTiger快取將使用1.5GB RAM()。

相反,總記憶體為1.25 GB的系統將為WiredTiger快取分配256 MB,因為這是總RAM的一半以上減去1 GB()。

// 4GB

0.5 * (4 GB - 1 GB) = 1.5 GB

// 1.25GB

0.5 * (1.25 GB - 1 GB) = 128 MB < 256 MB

看完文件,我查看了自己的記憶體使用

$ free -h
# 沒啟動mongod
      total    used    free
Mem:     3.7G    2.4G    1.3G
# 啟動mongod
      total    used    free
Mem:     3.7G    1.8G    364M

直接佔滿記憶體了

參考了一部分網上的文章,大致的意思就是說,MongoDB佔用了太多記憶體,被系統kill掉了,所以出現宕機現象

解決方式

新增兩個引數

修改配置 mongodb.conf

# 為快取記憶體分配的最大記憶體量;預設為物理RAM的1/2
# wiredTigerCacheSizeGB <float>
wiredTigerCacheSizeGB=0.5
# 最大同時連線數,預設1000000

更多關於MongoDB佔用記憶體過大的問題解決方法請檢視下面的相關連結