發現異常
今天發現有一台服務器mongod占了5個多G內存 這個太誇張了
然后搜索了一下,發現是mongo優化讀寫效率時會占用內存
內存增加的原因
mongo為了優化他的讀寫效率,將內存當做緩存,所以你讀寫次數越多,緩存就越大。默認值:
從3.4開始,WiredTiger內部緩存默認使用較大的一個, 我用的是4.1
50%(RAM - 1 GB),或256 MB。
例如,我是8G內存,那么最大緩存0.5*(8-1)=3.5G,看到了么。。。mongo默認3.5G都是他的緩存。
解決
在配置中限制mongo的緩存大小, 引擎需要更換為wiredTiger
默認的mmapv1
依賴於mmap
不能指定
官方也聲稱wiredTiger
更加優秀
storage:
dbPath: /www/server/mongodb/data
directoryPerDB: true
journal:
enabled: true
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 2