1

mongodb 服务器将所有 db 文件映射到 RAM。随着数据库的规模越来越大,服务器将拥有一个高达 3G 字节的巨大页表。

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

mongodb版本是2.0.4

4

3 回答 3

2

Mongodb 将内存映射它创建的所有数据文件,以及日志文件(如果您正在使用日志)。没有办法防止这种情况发生。这意味着 MongoDB 进程的虚拟内存大小将始终大约是数据文件大小的两倍。

请注意,OS 内存管理系统将分页出未使用的 RAM 页面,因此进程的物理内存大小通常会远小于虚拟内存大小。

减小“mongod”进程的虚拟内存大小的唯一方法是减小 MongoDB 数据文件的大小。减小数据文件大小的唯一方法是使节点脱机并执行“修复”。

有关详细信息,请参见此处:- http://www.mongodb.org/display/DOCS/Excessive+Disk+Space#ExcessiveDiskSpace-RecoveringDeletedSpace

于 2012-11-24T01:23:11.087 回答
1

基本上,您要求执行 MongoDB 手册建议不要执行的操作:http: //docs.mongodb.org/manual/administration/ulimit/在此特定场景中。然而,推荐并不意味着需要,它只是一个指导方针。

这正是 MongoDB 的运行方式,除非您想尝试和测试不同的场景以及它们的工作方式,否则您必须接受这种方式。

于 2012-11-23T09:51:02.700 回答
0

您可能希望减少进程的已用内存。您可以使用调用setrlimit(2)系统调用的ulimitbash 内置函数(在启动服务器之前,可能在某些/etc/rc.d/mongodb脚本中)

于 2012-11-23T06:21:12.110 回答