我的网站使用mongodb进行聊天应用。 Mongodb查询正在超时,所以我检查了db.currentOp()。下面是currentOp()和Mongodb的详细信息,
637个有效的操作 750个非活动操作
有关mongodb的其他详细信息:
我有两个数据库
a)第一个数据库只有两个表 b)第二个数据库有5个表
我的问题是,为什么current.Op()计数突然增加,以及如果currentOp()计数增加我们必须注意的原因是什么。请帮帮我,为我糟糕的英语道歉。
以下是我的currentOp()
的示例输出MongoDB shell version: 1.8.2
> db.currentOp()
{
"inprog" : [
{
"opid" : "msdata1:234234234",
"active" : true,
"lockType" : "read",
"waitingForLock" : false,
"secs_running" : 43534,
"op" : "getmore",
"ns" : "local.oplog.rs",
"query" : {
},
"client_s" : "70.52.078.123:12345",
"desc" : "conn"
},
{
"opid" : "msdata1:2342323423",
"active" : true,
"lockType" : "read",
"waitingForLock" : false,
"secs_running" : 231231,
"op" : "query",
"ns" : "ichat.chatmemberlist",
"query" : {
"count" : "chatmemberlist",
"query" : {
"Mid" : "23423",
"bmid" : "23423"
}
},
"client_s" : "70.52.078.123:12345",
"desc" : "conn"
},
{
"opid" : "msdata1:2342323423",
"active" : false,
"lockType" : "write",
"waitingForLock" : true,
"op" : "update",
"ns" : "?ichat.useravail",
"query" : {
"Mid" : "23423"
},
"client_s" : "70.512.078234.423:12345",
"desc" : "conn"
},
...
...
...
答案 0 :(得分:0)
从有限的信息量中,我可以看到您的查询只运行了很长时间:"secs_running" : 231231,
表示231秒。您可能没有足够的资源可用于您正在运行的查询类型。这可能是因为您没有足够的内存,或者获取锁定的查询太多。如果您尚未使用MongoDB 2.0.x,那么您可能也希望升级到它,因为它大大改善了锁定:http://blog.pythonisito.com/2011/12/mongodbs-write-lock.html
我建议检查mongodb.log文件以查看哪些查询速度慢,然后使用explain来确定是否对列进行索引然后添加索引,或者查看如何重新设计架构,如果这看起来像是一个更好的解决方案。