我们的生产 mongos 突然开始运行缓慢,如果我们重新启动 mongo db,问题就会消失。性能从毫秒下降到秒,并且在我们重新启动之前永远不会恢复(或者我们可能没有等待足够长的时间)。我在 mongo 日志中看不到任何内容。所以认为这可能是由于页面错误
db.stats(1024*1024)
"db" : "xrr",
"collections" : 7,
"objects" : 605843,
"avgObjSize" : 3614.9300528354706,
"dataSize" : 2088,
"storageSize" : 2517,
"numExtents" : 57,
"indexes" : 41,
"indexSize" : 383,
"fileSize" : 8125,
"nsSizeMB" : 16,
"dataFileVersion" : {
"major" : 4,
"minor" : 5
},
服务器状态和工作集似乎输出
"workingSet" : {
"note" : "thisIsAnEstimate",
"pagesInMemory" : 113607,
"computationTimeMicros" : 23265,
"overSeconds" : 830
},
mongo 机器有 4 GB 的内存,工作集的大小似乎很低。所以我不明白为什么在这种情况下会出现页面错误,因为我们有足够的内存来容纳一半的数据库和内存中的所有索引。mms 确实显示页面错误略有增加,我不明白为什么工作集没有扩展以适应内存中的记录,以及当我重新启动 mongos 时问题如何自行解决。我们使用的是 2.4.1 版本
我注意到非映射虚拟内存很高 ~2.4GB ,我只有 100 -200 个连接
rs_default:PRIMARY> db.serverStatus().mem
{
"bits" : 64,
"resident" : 2275,
"virtual" : 138017,
"supported" : true,
"mapped" : 67584,
"mappedWithJournal" : 135168
}
rs_default:PRIMARY> db.stats(1024*1024)
{
"db" : "xrr",
"collections" : 7,
"objects" : 605844,
"avgObjSize" : 3614.9263836895307,
"dataSize" : 2088,
"storageSize" : 2517,
"numExtents" : 57,
"indexes" : 41,
"indexSize" : 383,
"fileSize" : 8125,
"nsSizeMB" : 16,
"dataFileVersion" : {
"major" : 4,
"minor" : 5
},
"ok" : 1
}