0

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

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

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

所以现在我想知道我在这里看到的数量是否不合理,如果它真的是一个问题,或者它是否很好。金额可以在图像中看到,但我也会在此处以文字形式解释它们,以防万一。

我的数据库大小约为 12.5GB。常驻内存使用量为 11GB,映射为 18GB,虚拟内存使用量高达 118GB。与数据库的连接数量约为 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。

彩信截图

4

1 回答 1

1

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

于 2013-07-23T14:42:19.180 回答