Mongodb findAndModify不一致且通常很慢

时间:2015-09-22 00:01:12

标签: performance mongodb wiredtiger

我在大约2.4MM记录的集合上运行findAndModify查询,查询中的所有字段都被编入索引,但是命令运行非常不一致,日志显示这需要从<执行0.1到5秒。在过去的4个月中,这种情况运行得相当快,在过去的一周里真的成了一个问题。我正在运行MongoDB 3.0.4

更多细节,这是一个3成员replicaSet,1个主要和2个辅助。 Primary正在运行具有大量可用磁盘空间的wiredTiger,MMAPv1上的辅助磁盘空间。这是写入此集合的唯一进程,并且此数据源的所有客户端都将其读取首选项设置为secondaryPreferred,因此我非常确定这不是流量/负载问题。

html,body {
height:100%;
width:95%;
margin:0 auto;
border: 2px solid red;
}

编辑:getIndexes()

的输出
{  
   "op":"command",
   "ns":"stats.$cmd",
   "command":{  
      "findandmodify":"MailingStat",
      "query":{  
         "endTime":{  
            "$date":"2015-09-17T08:59:59.999+0000"
         },
         "startTime":{  
            "$date":"2015-09-17T08:00:00.000+0000"
         },
         "outlet_id":{  
            "$oid":"#########"
         },
         "mailing_id":{  
            "$oid":"#########"
         }
      },
      "new":false,
      "remove":false,
      "upsert":true,
      "update":{  
         "$inc":{  
            "totalSent":1
         },
         "$set":{  
            "endTime":{  
               "$date":"2015-09-17T08:59:59.999+0000"
            },
            "startTime":{  
               "$date":"2015-09-17T08:00:00.000+0000"
            },
            "outlet_id":{  
               "$oid":"#########"
            },
            "mailing_id":{  
               "$oid":"#########"
            }
         },
         "$setOnInsert":{  
            "__v":0
         }
      }
   },
   "updateobj":{  
      "$inc":{  
         "totalSent":1
      },
      "$set":{  
         "endTime":{  
            "$date":"2015-09-17T08:59:59.999+0000"
         },
         "startTime":{  
            "$date":"2015-09-17T08:00:00.000+0000"
         },
         "outlet_id":{  
            "$oid":"#########"
         },
         "mailing_id":{  
            "$oid":"#########"
         }
      },
      "$setOnInsert":{  
         "__v":0
      }
   },
   "nscanned":1,
   "nscannedObjects":1,
   "nMatched":1,
   "nModified":1,
   "keyUpdates":0,
   "writeConflicts":0,
   "numYield":420,
   "locks":{  
      "Global":{  
         "acquireCount":{  
            "w":{  
               "$numberLong":"422"
            }
         }
      },
      "Database":{  
         "acquireCount":{  
            "w":{  
               "$numberLong":"422"
            }
         }
      },
      "Collection":{  
         "acquireCount":{  
            "w":{  
               "$numberLong":"421"
            }
         }
      },
      "oplog":{  
         "acquireCount":{  
            "w":{  
               "$numberLong":"1"
            }
         }
      }
   },
   "responseLength":308,
   "millis":2851,
   "execStats":{  

   },
   "ts":{  
      "$date":"2015-09-21T23:18:30.793+0000"
   },
   "client":"####",
   "allUsers":[  
      {  
         "user":"####",
         "db":"###"
      }
   ],
   "user":"####@$###"
}

编辑:添加了解释(' queryPlanner')

的输出
[
    {
        "v" : NumberInt(1), 
        "key" : {
            "_id" : NumberInt(1)
        }, 
        "name" : "_id_", 
        "ns" : "stats.MailingStat"
    }, 
    {
        "v" : NumberInt(1), 
        "key" : {
            "mailing_id" : NumberInt(1)
        }, 
        "name" : "mailing_id_i", 
        "ns" : "stats.MailingStat", 
        "background" : true
    }, 
    {
        "v" : NumberInt(1), 
        "key" : {
            "outlet_id" : NumberInt(1)
        }, 
        "name" : "outlet_id", 
        "ns" : "stats.MailingStat", 
        "background" : true
    }, 
    {
        "v" : NumberInt(1), 
        "key" : {
            "startTime" : NumberInt(1)
        }, 
        "name" : "startTime", 
        "ns" : "stats.MailingStat", 
        "background" : true
    }, 
    {
        "v" : NumberInt(1), 
        "key" : {
            "endTime" : NumberInt(1)
        }, 
        "name" : "endTime", 
        "ns" : "stats.MailingStat", 
        "background" : true
    }
]

0 个答案:

没有答案