Mongodb增加了db.currentOp()问题

时间:2012-02-17 03:35:25

标签: node.js mongodb sharding

我的网站使用mongodb进行聊天应用。 Mongodb查询正在超时,所以我检查了db.currentOp()。下面是currentOp()和Mongodb的详细信息,

637个有效的操作 750个非活动操作

有关mongodb的其他详细信息:

  1. Mongo db正在运行分片
  2. 我有两个数据库

  3. a)第一个数据库只有两个表 b)第二个数据库有5个表

  4. 我的问题是,为什么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"
            },
    
            ...
            ...
            ...
    

1 个答案:

答案 0 :(得分:0)

从有限的信息量中,我可以看到您的查询只运行了很长时间:"secs_running" : 231231,表示231秒。您可能没有足够的资源可用于您正在运行的查询类型。这可能是因为您没有足够的内存,或者获取锁定的查询太多。如果您尚未使用MongoDB 2.0.x,那么您可能也希望升级到它,因为它大大改善了锁定:http://blog.pythonisito.com/2011/12/mongodbs-write-lock.html

我建议检查mongodb.log文件以查看哪些查询速度慢,然后使用explain来确定是否对列进行索引然后添加索引,或者查看如何重新设计架构,如果这看起来像是一个更好的解决方案。