mongodb的高非映射虚拟内存

mongodb的高非映射虚拟内存,mongodb,memory-management,Mongodb,Memory Management,我看到MongoDB的非映射虚拟内存使用率非常高。我可以在top中看到大量虚拟内存,pmap告诉我大部分虚拟内存没有分配给文件。此外,MMS通过显示大量未映射的虚拟内存来确认这一点 图的MMS说明说明了以下关于未映射虚拟内存的内容: 如果这个数字非常高(多个千兆字节),则表明文件的内存映射以外的其他方面正在使用过多的内存,这将是不好的/次优的。对于非映射数据库,使用大量内存的最常见情况是有很多到数据库的连接。每个连接都有一个线程堆栈,这些堆栈的内存加起来可能相当大。将此统计数据保持在合理的低水平

我看到MongoDB的非映射虚拟内存使用率非常高。我可以在
top
中看到大量虚拟内存,
pmap
告诉我大部分虚拟内存没有分配给文件。此外,
MMS
通过显示大量未映射的虚拟内存来确认这一点

图的
MMS
说明说明了以下关于未映射虚拟内存的内容:

如果这个数字非常高(多个千兆字节),则表明文件的内存映射以外的其他方面正在使用过多的内存,这将是不好的/次优的。对于非映射数据库,使用大量内存的最常见情况是有很多到数据库的连接。每个连接都有一个线程堆栈,这些堆栈的内存加起来可能相当大。将此统计数据保持在合理的低水平非常重要,因为此处使用的内存无法用于缓存

所以现在我想知道,我在这里看到的数量是否不合理,它是否真的是一个问题,或者它是否是好的。数量可以在图片中看到,但我也将在这里的文本中解释它们,以防万一

我的数据库大小约为12.5GB。常驻内存使用率为11GB,映射为18GB,虚拟内存使用率高达118GB。到db的连接量大约为50(在40到60之间移动),因此这似乎不是原因

值得注意的是,我在
pmap
输出中看到了许多类似的条目:

0000013f9dfff000 521296K -----    [ anon ]
000001439e400000   1024K -----    [ anon ]
000001439e500000   1024K rw---    [ anon ]
000001439e600000   2048K -----    [ anon ]
000001537ce33000    820K -----    [ anon ]
000001537cf00000     20K rw---    [ anon ]
000001537cf05000      4K -----    [ anon ]
000001537cf06000    996K rwx--    [ anon ]
000001537cfff000      4K -----    [ anon ]
000001537d000000     20K rw---    [ anon ]
000001537d005000      4K -----    [ anon ]
000001537d006000    996K rwx--    [ anon ]
特别是第一次输入大约0.5GB似乎太多了。我经常看到它回来,根据一些grepping的说法是159次。所以这可以解释我看到的大部分数量。我不知道这些条目是从哪里来的

我在CentOS 6.4(64位)上使用MongoDB v2.4.1


我进行了调查,发现一些强有力的迹象表明问题与使用
rockmongo
有关。我向10gen发起了一项私人支持,他们发现问题确实与rockmongo有关。显然,它使用了大量的
eval()
调用,从而产生了需要大量内存的服务器端V8 javascript引擎。我向rockmongo提交了一份bug报告

你能分享bug报告链接以供参考吗?使用eval是邪恶的(请原谅这个双关语),所以我不介意看一看
rockmongo
问题可以在这里找到:。mongo的票是私人的,所以很遗憾我不能分享。不幸的是,
rockmongo
票证中的信息比我的答案中的信息多不了多少。他们那边没有任何活动,我已经停止使用它(现在使用
robomongo
,因为我们将设置更改为允许VPN)。