2014-02-06 25 views
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) 
      } 
     } 
    } 
] 
} 
+0

该操作是find()查询。我已经编写了一个脚本并循环记录以执行数据迁移。循环使用cursor.next()。对于接下来的每一个,都会写入一个新的集合。 – user2535472

回答