2013-10-18 41 views
1

使用11 GB工作集(db.records.totalSize()),我运行了touch命令,以便让Mongo在我的16 GB RAM盒上尽可能多地使用内存。在运行触摸之前,serverStatus命令显示Mongo的mem.resident等于(大约6 GB RAM)。Mongo`touch`命令意外结果

db.runCommand({ touch: "records", data: true, index: true }) 
    { "ok" : 1 } 

但是,在运行touch之后,Mongo使用的RAM大致相同。

"mem" : { 
      "bits" : 64, 
      "resident" : 5821, /* only a 21 MB increase */ 
      "virtual" : 29010, 
      "supported" : true, 
      "mapped" : 14362, 
      "mappedWithJournal" : 28724 
    }, 

为什么touch命令几乎增加蒙戈多少内存使用(mem.resident)?

回答

1

MongoDB db.serverStatus()命令报告驻留内存的方式是通过计算mongod进程实际访问物理RAM中的页数。

这意味着,虽然您的收集和索引被读入内存,但它们将不会显示在“res”值中,直到您开始实际查询它为止。

通过查看RAM mongod进程有多少(不是虚拟内存),您可以验证数据是否已读入RAM(如果之前绝对冷)。