mongodb服务器将所有db文件映射到RAM中。随着数据库的大小变大,服务器将拥有一个巨大的页表,最多可达3G字节。
有没有办法在服务器运行时收缩它?
mongodb版本是2.0.4
答案 0 :(得分:2)
Mongodb将对其创建的所有数据文件以及日志文件(如果您正在使用日记)进行内存映射。没有办法防止这种情况发生。这意味着MongoDB进程的虚拟内存大小始终大约是数据文件大小的两倍。
请注意,操作系统内存管理系统会将未使用的RAM页面分页,因此进程的物理内存大小通常远小于虚拟内存大小。
减少“mongod”虚拟内存大小的唯一方法。进程是为了减小MongoDB数据文件的大小。减小数据文件大小的唯一方法是使节点脱机并执行“修复”。
请点击此处了解更多详情: - http://www.mongodb.org/display/DOCS/Excessive+Disk+Space#ExcessiveDiskSpace-RecoveringDeletedSpace
答案 1 :(得分:1)
基本上,您要求执行MongoDB手册建议不要执行的操作:http://docs.mongodb.org/manual/administration/ulimit/在此特定方案中。但推荐不是必需的,它只是一个指导原则。
这就是MongoDB的运行方式和你必须接受的东西,除非你想玩弄并测试不同的场景以及它们是如何工作的。
答案 2 :(得分:0)
您可能希望减少进程的已用内存。您可以使用ulimit
bash内置(在启动服务器之前,可能在某些/etc/rc.d/mongodb
脚本中)调用setrlimit(2)系统调用