mongodb释放内存

最近在做游戏服务器的性能review的时候,db自然是少不了的一个关键点。今天我准备测试db查询的时候,往mongodb里面插入了30w条数据,使用mongostat命令,查看占用的内存169.0M。然后我drop掉这个collection,居然发现db使用的内存还是这么大!我了个去,这样内存不是一直会增大么?联想到之前的游戏线上db服务器,经常报警内存不足。于是我试着寻找mongodb释放内存的方案。google了一下,大多数人推荐使用
<pre>
db.repairDatabase()
</pre>
或者
<pre>
use admin
db.runCommand({closeAllDatabases:1})
</pre>
两种方案我尝试了,我是基于mongodb3.2的,发现都不行。尤其是第二种方案,3.2已经去掉了这个命令了。
没法,如果要释放内存,只有重启一下mongodb的服务了。到时候,游戏服务器只能把所有人踢下线,然后公告停服维护了,再重启mongodb的服务了
<pre>
use admin
db.shutdownServer();
</pre>

后来用线上数据试了下,之前是1.5G,重启之后是1G,少了50%!!!
一个新服db实例,之前是1.28G, 重启之后,也是1G,少了30%

    原文作者:randyjia
    原文地址: https://www.jianshu.com/p/fd68a7f9c296
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞