mongodb查找查询getmore操作挂起
我们正在Linux上运行MongoDB 3.0.2 查找查询的“getmore”操作会定期挂起 该操作可用currentOp(),我无法解释的一点是,当查询挂起时,lockStats中的所有acquireCount值都会继续增长(对于全局、MMAPV1Journal、数据库和集合) 这就是正在讨论的操作,此时运行超过1000秒,由db.currentOp()返回:mongodb查找查询getmore操作挂起,mongodb,Mongodb,我们正在Linux上运行MongoDB 3.0.2 查找查询的“getmore”操作会定期挂起 该操作可用currentOp(),我无法解释的一点是,当查询挂起时,lockStats中的所有acquireCount值都会继续增长(对于全局、MMAPV1Journal、数据库和集合) 这就是正在讨论的操作,此时运行超过1000秒,由db.currentOp()返回: 任何见解都将不胜感激!提前谢谢。嘿,谢谢你的回复。所以我得到:>db.version()3.0.6注意currentOp.op只是:
任何见解都将不胜感激!提前谢谢。嘿,谢谢你的回复。所以我得到:>db.version()3.0.6注意currentOp.op只是:一个标识操作类型的字符串。可能的值是:“无”“更新”“插入”“查询”“getmore”“删除”“killcursors”此来源:抱歉,我想您可能会误解:(a)我不是在询问getmore控制台命令,并且(b)currentOp.op值中的“getmore”不表示使用了getmore()控制台命令(显然不是,因为这是数据库的3.0.6版本)。这是可能的。是的,但在尝试复制之前,我相信首先根据上面提供的证据进行操作要容易得多。也就是说:当查询挂起时,lockStats中的acquireCount值继续增长,并且它们具有多种锁类型和模式,这意味着什么?为什么您对curr的输出这么说entOp()?mongodb日志文件输出的数据与currentOp()的输出非常相似。注意,根据上面的输出,它没有等待锁。此外,数据库上没有运行其他查询。我们使用默认的游标批大小。它没有currentOp.lockStats.deadlockCount。它已获取数十万个锁:所有意图共享锁,但集合级锁除外,它们是共享的ocks.这个输出似乎很重要--例如,为什么会有全局锁?--我希望有人能帮助解释currentOp()的奇怪输出--但感谢您的输入!
{
"desc" : "conn60",
"threadId" : "0x2a99ee0",
"connectionId" : 60,
"opid" : 67792,
"active" : true,
"secs_running" : 1098,
"microsecs_running" : NumberLong(1098289543),
"op" : "getmore",
"ns" : "dbName.collectionName",
"query" : {
"d" : {
"$gt" : ISODate("2016-03-13T18:00:00.261Z"),
"$lt" : ISODate("2016-03-14T22:45:17.718Z")
},
"cc" : "US",
"dc" : {
"$in" : [
"26",
"31",
"17",
"29",
"35"
]
},
"pr" : {
"$gte" : 4
}
},
"client" : "10.0.0.111:33670",
"numYields" : 317557,
"locks" : {
},
"waitingForLock" : false,
"lockStats" : {
"Global" : {
"acquireCount" : {
"r" : NumberLong(635114)
}
},
"MMAPV1Journal" : {
"acquireCount" : {
"r" : NumberLong(317557)
}
},
"Database" : {
"acquireCount" : {
"r" : NumberLong(317557)
}
},
"Collection" : {
"acquireCount" : {
"R" : NumberLong(317557)
}
}
}
}