使用 11 GB 工作集(db.records.totalSize()
),我运行了touch
命令,以便让Mongo在我的16 GB上尽可能多地使用内存RAM盒子。在运行触摸之前,serverStatus
命令显示Mongo的mem.resident
等于 5800 (大约6 GB RAM)。
db.runCommand({ touch: "records", data: true, index: true })
{ "ok" : 1 }
但是,在运行触摸后,Mongo使用了大致相同数量的RAM。
"mem" : {
"bits" : 64,
"resident" : 5821, /* only a 21 MB increase */
"virtual" : 29010,
"supported" : true,
"mapped" : 14362,
"mappedWithJournal" : 28724
},
为什么touch
命令几乎没有增加Mongo使用的内存量(mem.resident)?
答案 0 :(得分:1)
MongoDB db.serverStatus()命令报告驻留内存的方式是计算mongod进程实际访问的物理RAM中的页数。
这意味着,当您的收藏和索引被读入RAM时,他们将无法显示在" res"值,直到你开始实际查询它。
您可以通过查看mongod进程有多少RAM(而不是虚拟内存)来验证数据是否已读入RAM(如果以前肯定是冷的话)。