【问题标题】:High non-mapped virtual memory for mongodbmongodb的高非映射虚拟内存
【发布时间】:2013-07-23 22:42:19
【问题描述】:

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

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

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

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

我的数据库大小约为 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。

【问题讨论】:

    标签: mongodb memory-management


    【解决方案1】:

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

    【讨论】:

    • 你能分享错误报告链接以供参考吗?使用 eval 是邪恶的(请原谅双关语),所以我不介意看看
    • rockmongo 问题可以在这里找到:github.com/iwind/rockmongo/issues/28。 mongo 的票是私人的,所以很遗憾我不能分享。不幸的是,rockmongo 票的信息比我的回答中的信息多。他们方面没有任何活动,我已经停止使用它(现在使用robomongo,因为我们更改了设置以允许 VPN)。
    猜你喜欢
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    相关资源
    最近更新 更多