84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
mongodb占物理内存,我们一台服务器8G内存,没有开mongodb的时候,物理内存只占11%,当开了mongodb,mongodb进程的内存显示是60M,但物理内存已经是99%,请问是什么原因?有没有优化的办法,我们是在WINDOWS系统.
ringa_lee
我记得,一个叫唐建法的人说:mongodb不是吃内存,而是它设计初衷就是要故意占内存。
mongodb本身是不做内存管理的,它的内存管理完全依赖于系统。你可以用系统性能监视器看下内存和虚拟内存。简单点来说你有多少内存mongdb就会吃多少,就是这么贪得无厌,它会把绝大部分热数据都会放在内存里来提升性能,毕竟这也是它的优点。 我们的服务器是windows server 2008,有32G内存,运行了一段时间后,也是被吃光光,但性能让人惊喜,但那台服务器上不光只有mongodb,所以经常影响到其他程序,后来我们尝试用 windows的系统资源管理器WSRM,限制mongodb进程的内存,确实有效果你可以尝试一下。 但是我是前年开始使用mongodb的,当时版本比较老,限制内存后mongodb很不稳定,偶尔挂掉,看日志显示大体意思是找不到映射的内存了。所以后来我们放弃了限制内存,改用每天定点用程序使用mongodb的命令释放内存{closeAllDatabases:1} 这个命令也是有成本的,会阻塞到命令完整,而且刚释放完后效率会降低,要经过一段时间的“热身”才能慢慢恢复。 我觉得后面这种方法不错,并且通过这两年的观察一切都比较稳定。当然你们要是能单独给mongodb一台服务器那是再好不过的了。
{closeAllDatabases:1}
新的 MongoDB 引擎会认为自己是系统中唯一重要的服务,因此会尽量占用内存来作为自己的缓存(不是操作系统的缓存)。如果你需要为其它进程保留内存,或者有多个 MongoDB 实例,可以使用 --cacheSizeGB 参数来限制 MongoDB 的缓存大小。
--cacheSizeGB
我写了脚本每天凌晨清除缓存。。。http://onwise.xyz/2017/02/23/...
我记得,一个叫唐建法的人说:mongodb不是吃内存,而是它设计初衷就是要故意占内存。
mongodb本身是不做内存管理的,它的内存管理完全依赖于系统。你可以用系统性能监视器看下内存和虚拟内存。简单点来说你有多少内存mongdb就会吃多少,就是这么贪得无厌,它会把绝大部分热数据都会放在内存里来提升性能,毕竟这也是它的优点。
我们的服务器是windows server 2008,有32G内存,运行了一段时间后,也是被吃光光,但性能让人惊喜,但那台服务器上不光只有mongodb,所以经常影响到其他程序,后来我们尝试用 windows的系统资源管理器WSRM,限制mongodb进程的内存,确实有效果你可以尝试一下。
但是我是前年开始使用mongodb的,当时版本比较老,限制内存后mongodb很不稳定,偶尔挂掉,看日志显示大体意思是找不到映射的内存了。所以后来我们放弃了限制内存,改用每天定点用程序使用mongodb的命令释放内存
{closeAllDatabases:1}
这个命令也是有成本的,会阻塞到命令完整,而且刚释放完后效率会降低,要经过一段时间的“热身”才能慢慢恢复。
我觉得后面这种方法不错,并且通过这两年的观察一切都比较稳定。当然你们要是能单独给mongodb一台服务器那是再好不过的了。
新的 MongoDB 引擎会认为自己是系统中唯一重要的服务,因此会尽量占用内存来作为自己的缓存(不是操作系统的缓存)。如果你需要为其它进程保留内存,或者有多个 MongoDB 实例,可以使用
--cacheSizeGB
参数来限制 MongoDB 的缓存大小。我写了脚本每天凌晨清除缓存。。。
http://onwise.xyz/2017/02/23/...