解決MongoDB佔用記憶體過大頻繁宕機的方法詳解
阿新 • • 發佈:2020-02-18
從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佔用記憶體過大的問題解決方法請檢視下面的相關連結