mongodb - 如何找出为什么 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 是从哪里泄露的。你能给我一个提示,我还能检查什么来查看内存消耗的全貌?
解决方案
推荐阅读
- python-3.x - 创建一个可以从多个类访问的列表
- php - 如何使用 phpmailer 处理数百个收件人
- python - 有没有办法按第二列从最大值到最小值对数组进行排序?
- ios - 当 'a' 应该是返回的值时,'a+1' 被保存
- automapper - 如何展开属性,在其他地图中被忽略?
- tkinter - Tkinter 打开和关闭顶层窗口
- node.js - 如何从json中的firestore返回数据?
- c++ - 如何使用 std::find 从 vector< pair < string, string >> type 的第一个元素中查找字符串?
- qt - QMenu 中的 QIcon 不会通过鼠标悬停或单击来更改图像
- r - 无法加载 xlsx 包