我使用Mongo 2.4.9,我有一个副本集为三个节点。 我已执行db.serverStatus()MEM和看到的映射该尺寸是非常高的,47GB:MongoDB:大尺寸的映射内存
db.serverStatus().mem
{
"bits" : 64,
"resident" : 266,
"virtual" : 10149,
"supported" : true,
"mapped" : 47402,
"mappedWithJournal" : 65730
}
结果db.stats的(1024)
{
"db" : "xxxxx",
"collections" : 7,
"objects" : 670488,
"avgObjSize" : 2890.6140721385023,
"dataSize" : 1892697,
"storageSize" : 2273304,
"numExtents" : 49,
"indexes" : 42,
"indexSize" : 399378,
"fileSize" : 10416128,
"nsSizeMB" : 16,
"dataFileVersion" : {
"major" : 4,
"minor" : 5
},
"ok" : 1
}
在兆字节
"dataSize" : 1848mb
"storageSize" : 2220mb
"fileSize" : 10172mb
工作集信息:
"workingSet" : {
"note" : "thisIsAnEstimate",
"pagesInMemory" : 152599,
"computationTimeMicros" : 31143,
"overSeconds" : 1728
}
大小(Mb)= 152599 * 4kb - >转换为Mb = 596 Mb
我的问题是为什么映射内存的大小是fileSize的4,2倍并且比storageSize或dataSize大15159倍? 映射内存内存继续增长缓慢。
注: OS:红帽企业Linux服务器版本5.7(Tikanga) 物理内存:3892Mb
我读这article但还是不明白,为什么映射内存的大小,使大考虑到足够小的实际数据量(文件大小)。
谢谢。
感谢您的快速响应。你是对的,serverStatus命令返回所有数据库的信息。 我有以下数据库: >节目数据库 27017(空) 管理(空) 配置(空) 当地24.06640625GB 测试(空) MYDB 9.94921875GB oplog.rs集合的大小是23386Mb =〜23gb – user1932034
我有下一个问题:我可以安全地删除oplog集合来更改init大小吗?映射内存的大尺寸是否会影响查询的性能,但不考虑物理内存的大小(映射32gb>物理4gb)? oplog coll的数据是否是工作集的一部分?谢谢 – user1932034
请参阅我的回答更新 –