搜索

首页  >  问答  >  正文

mongodb占物理内存

mongodb占物理内存,我们一台服务器8G内存,没有开mongodb的时候,物理内存只占11%,当开了mongodb,mongodb进程的内存显示是60M,但物理内存已经是99%,请问是什么原因?有没有优化的办法,我们是在WINDOWS系统.

ringa_leeringa_lee2796 天前927

全部回复(4)我来回复

  • 伊谢尔伦

    伊谢尔伦2017-04-24 09:15:16

    我记得,一个叫唐建法的人说:mongodb不是吃内存,而是它设计初衷就是要故意占内存。

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-24 09:15:16

    mongodb本身是不做内存管理的,它的内存管理完全依赖于系统。你可以用系统性能监视器看下内存和虚拟内存。简单点来说你有多少内存mongdb就会吃多少,就是这么贪得无厌,它会把绝大部分热数据都会放在内存里来提升性能,毕竟这也是它的优点。
    我们的服务器是windows server 2008,有32G内存,运行了一段时间后,也是被吃光光,但性能让人惊喜,但那台服务器上不光只有mongodb,所以经常影响到其他程序,后来我们尝试用 windows的系统资源管理器WSRM,限制mongodb进程的内存,确实有效果你可以尝试一下。
    但是我是前年开始使用mongodb的,当时版本比较老,限制内存后mongodb很不稳定,偶尔挂掉,看日志显示大体意思是找不到映射的内存了。所以后来我们放弃了限制内存,改用每天定点用程序使用mongodb的命令释放内存{closeAllDatabases:1}
    这个命令也是有成本的,会阻塞到命令完整,而且刚释放完后效率会降低,要经过一段时间的“热身”才能慢慢恢复。
    我觉得后面这种方法不错,并且通过这两年的观察一切都比较稳定。当然你们要是能单独给mongodb一台服务器那是再好不过的了。

    回复
    0
  • 迷茫

    迷茫2017-04-24 09:15:16

    新的 MongoDB 引擎会认为自己是系统中唯一重要的服务,因此会尽量占用内存来作为自己的缓存(不是操作系统的缓存)。如果你需要为其它进程保留内存,或者有多个 MongoDB 实例,可以使用 --cacheSizeGB 参数来限制 MongoDB 的缓存大小。

    回复
    0
  • 怪我咯

    怪我咯2017-04-24 09:15:16

    我写了脚本每天凌晨清除缓存。。。
    http://onwise.xyz/2017/02/23/...

    回复
    0
  • 取消回复