> 文章列表 > MongoDB限制使用内存及释放多余内存的办法概览

MongoDB限制使用内存及释放多余内存的办法概览

MongoDB限制使用内存及释放多余内存的办法概览

目录

  • 前言
  • 1.限制wiredTiger引擎的内存
  • 2.释放太过激进的内存占用
  • 3.调整MongoDB释放内存的速率
  • 4.原理解释
  • 5.总结

前言

  MongoDB 占用内存过多导致服务器崩溃的问题令人十分头疼,这里记录一下三种方式解决 MongoDB 占用内存过多的问题

1.限制wiredTiger引擎的内存

  参考作者的另外一篇文章,mongodb常用配置,不过需要注意的是,需要注意你的 MongoDB 使用支持 wiredTiger 引擎,有的版本恩使用的 mmapv1

2.释放太过激进的内存占用

db.adminCommand({setParameter:1,tcmallocAggressiveMemoryDecommit:1
})

3.调整MongoDB释放内存的速率

db.adminCommand({setParameter:1,tcmallocReleaseRate:5
})

释放率单位为千分之一,即当用户将1000个page(4k)大小的对象给释放后,会触发一个page的内存归还,所以tcmalloc建议配置0 - 10之间来保证系统操作次数,如果资源使用紧张,可将该配置成500+。

4.原理解释

   MongoDB 使用 tcmalloc 内存分配器将内存分配并释放回系统。通过将参数 tcmallocAggressiveMemoryDecommit 设置为1,可以将空闲内存标记为空闲后立即释放。它既可以在启动时完成,也可以在运行时完成。也可以通过调整 tcmallocReleaseRate 来调整释放内存的速度。

5.总结

  tcmallocReleaseRate 参数有的 MongoDB 版本不支持,作者的3.2版本就不支持,目前在使用前两种方式。回见~

声卡推荐