MongoDB的使用内存映射文件,当我使用很长一段时间,我看到的空闲内存已经在Ubuntu留下更少的命令"自由-m"和高速缓存使用了很多.那么杀掉Mongodb的缓存还是要花很多钱?我该如何发布缓存?
Jus*_*ins 31
MongoDB将(至少看起来)耗尽大量可用内存,但它实际上是由操作系统的VMM来告诉它释放内存(请参阅MongoDB文档中的缓存.)
您应该能够通过重新启动MongoDB来释放任何和所有内存.
但是,在某种程度上,MongoDB并没有真正"使用"内存.
例如,从MongoDB文档检查服务器内存使用情况 ...
根据平台的不同,您可能会在过程中将映射的文件视为内存,但这并不严格正确.Unix top可能会显示出比mongod更多的内存.操作系统(特别是虚拟内存管理器,取决于操作系统)管理"内存映射文件"所在的内存.这个数字通常显示在像"free -lmt"这样的程序中.
它被称为"缓存"内存.
MongoDB使用LRU(最近最少使用)缓存算法来确定要发布的"页面",您将在这两个问题中找到更多信息......
小智 8
从3.2开始,MongoDB使用WiredTiger作为默认存储引擎.以前的版本使用MMAPv1作为默认存储引擎.
使用WiredTiger,MongoDB同时使用WiredTiger内部缓存和文件系统缓存.在MongoDB 3.2中,默认情况下,WiredTiger内部缓存将使用较大的一个:60%的RAM减去1 GB或1 GB.对于具有高达10 GB RAM的系统,新的默认设置小于或等于3.0默认设置(对于MongoDB 3.0,WiredTiger内部缓存使用1 GB或已安装物理RAM的一半,以较大者为准).对于RAM超过10 GB的系统,新的默认设置大于3.0设置.
限制wiredTriggered Cache将以下行添加到.config文件:
wiredTigerCacheSizeGB = 1