0
我正在检查MongoDB实例上长时间运行的查询的状态。该操作已运行1514秒。我试图理解这个输出,但数字secs_running
,timelockedMicros
,timeAcquiringMicros
是非常混乱。锁定时间的MongoDB CurrentOp号码似乎不正确
从documentation开始,secs_running是从操作开始后经过的时间,在这种情况下是1514秒。但是timeAcquiringMicros
似乎表明操作一直在等待整个1514秒的读锁定,这显然是不正确的,因为它已经产生了196762个记录,并根据timeLockedMicros
锁定了825秒。
这是MongoDB中currentOp()函数中的错误吗?我正在使用版本2.4.3
{
"inprog" : [
{
"opid" : 1439744,
"active" : true,
"secs_running" : 1514,
"op" : "getmore",
"ns" : <namespace>,
"query" : <query>,
"client" : "127.0.0.1:50735",
"desc" : "conn485",
"threadId" : "0x14f004000",
"connectionId" : 485,
"waitingForLock" : false,
"numYields" : 196762,
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(825186242),
"w" : NumberLong(0)
},
"timeAcquiringMicros" : {
"r" : NumberLong(1514482551),
"w" : NumberLong(0)
}
}
}
]
}
该操作是find()查询。我已经编写了一个脚本并循环记录以执行数据迁移。循环使用cursor.next()。对于接下来的每一个,都会写入一个新的集合。 – user2535472