首页 > 解决方案 > 如何找出为什么 MongoDB 会消耗这么多内存?

问题描述

我们有一个 MongoDB 安装:

MongoDB: 3.0.6
MongoDB Engine: mmapv1
Replica: Pri+Sec+Arb
OS: Debian 8.2
Primary node VM mem amount: 10 GB

不幸的是,我无法升级这个安装,尽管它的引擎盖下有这么旧的软件。

通常我们在主虚拟机上有 6 GB 的可用内存。但是几天前我们的开发人员在 DB 上进行了一些更新和插入之后,主 VM 上的 MongoDB 开始消耗 4 GB 以上,而现在我们只有 2 GB 的可用内存。它工作正常,但我想知道发生了什么。

首先我检查了 db.serverStatus().mem:

{
    "bits" : 64,
    "resident" : 8091,
    "virtual" : 35055,
    "supported" : true,
    "mapped" : 12555,
    "mappedWithJournal" : 25110
}

然后我输入了 db.stats():

{
    "db" : "Our DB",
    "collections" : 14,
    "objects" : 1443933,
    "avgObjSize" : 848.8413797593101,
    "dataSize" : 1225670080,
    "storageSize" : 3136176128,
    "numExtents" : 85,
    "indexes" : 25,
    "indexSize" : 162342656,
    "fileSize" : 8519680000,
    "nsSizeMB" : 16,
    "extentFreeList" : {
        "num" : 128,
        "totalSize" : 2996109312
    },
    "dataFileVersion" : {
        "major" : 4,
        "minor" : 22
    },
    "ok" : 1
}

我预计会看到 storageSize 长大,但它与开发人员行动之前保持不变。

所以我还是不明白这些 4GB 是从哪里泄露的。你能给我一个提示,我还能检查什么来查看内存消耗的全貌?

标签: mongodb

解决方案


推荐阅读