为什么oplog搜索在Primary上花费的时间太长

时间:2014-07-31 13:58:04

标签: mongodb

我们的mongo日志显示:我们有4套副本集

Thu Jul 31 03:31:33.940 [conn2117994] getmore local.oplog.rs query: { ts: { $gte: Timestamp 1406791765000|9 } } cursorid:6285460755727107211 ntoreturn:0 keyUpdates:0 locks(micros) r:111 nreturned:0 reslen:20 5011ms
Thu Jul 31 03:31:33.976 [conn2117999] getmore local.oplog.rs query: { ts: { $gte: Timestamp 1406791765000|9 } } cursorid:6285462893114917907 ntoreturn:0 keyUpdates:0 locks(micros) r:111 nreturned:0 reslen:20 5011ms

Thu Jul 31 03:31:38.952 [conn2117994] getmore local.oplog.rs query: { ts: { $gte: Timestamp 1406791765000|9 } } cursorid:6285460755727107211 ntoreturn:0 keyUpdates:0 locks(micros) r:95 nreturned:0 reslen:20 5011ms

ecset01:PRIMARY> db.printReplicationInfo()
configured oplog size: 83927.3283203125MB
log length start to end: 2399486secs (666.52hrs)
oplog first event time: Tue Jun 24 2014 22:58:20 GMT-0400 (EDT)
oplog last event time: Tue Jul 22 2014 17:29:46 GMT-0400 (EDT)
now: Tue Jul 22 2014 17:29:46 GMT-0400 (EDT)
ecset01:PRIMARY>

如果这是一个问题或者我们需要减少oplogsize,请告诉我。

1 个答案:

答案 0 :(得分:1)

这是正常行为。复制使用tailable游标从oplog读取,使用awaitdata选项。这意味着如果没有满足查询的数据(例如,没有大于传入时间戳的ts的文档),它将等待几秒钟 - 大约5秒,这就是为什么您看到查询时间为5011毫秒的原因。这不是一个令人担忧的原因 - 这意味着您没有最近的更新。如果您要添加/修改/删除文档,您会看到getmore条目返回的速度要快得多。

有关线协议层的tailable游标和awaitdata选项的详细信息:

http://docs.mongodb.org/meta-driver/latest/legacy/mongodb-wire-protocol/?pageVersion=106#op-query

您可能会发现此讨论很有趣:

https://groups.google.com/forum/#!topic/mongodb-user/E7BSv624nBg