如何缩小进程的页表大小?

时间:2012-11-23 06:17:03

标签: linux mongodb memory-management

mongodb服务器将所有db文件映射到RAM中。随着数据库的大小变大,服务器将拥有一个巨大的页表,最多可达3G字节。

有没有办法在服务器运行时收缩它?

mongodb版本是2.0.4

3 个答案:

答案 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)系统调用