首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongodb:高获取数据库锁

Mongodb:高获取数据库锁
EN

Stack Overflow用户
提问于 2016-06-23 07:43:51
回答 1查看 2K关注 0票数 7

我面临一个与MongoDb性能相关的问题。查询时间是几十秒,通过命令db.currentOp(),我可以看到我的所有查询都在等待数据库锁定。例如:

只是简单的查询

代码语言:javascript
复制
"desc" : "conn36316",
"threadId" : "7420",
"connectionId" : 36316,
"client" : "127.0.0.1:34538",
"active" : true,
"opid" : 197242270,
"secs_running" : 190,
"microsecs_running" : NumberLong(190574655),
"op" : "query",
"ns" : "db.items",
"query" : {
    "find" : "items",
    "filter" : {
        "$msg" : "query not recording (too large)"
    }
},
"numYields" : 92,
"locks" : {
    "Global" : "r",
    "Database" : "r"
},
"waitingForLock" : true,
"lockStats" : {
    "Global" : {
        "acquireCount" : {
            "r" : NumberLong(186)
        },
        "acquireWaitCount" : {
            "r" : NumberLong(1)
        },
        "timeAcquiringMicros" : {
            "r" : NumberLong(24392)
        }
    },
    "Database" : {
        "acquireCount" : {
            "r" : NumberLong(93)
        },
        "acquireWaitCount" : {
            "r" : NumberLong(53)
        },
        "timeAcquiringMicros" : {
            "r" : NumberLong(60099891)
        }
    },
    "Collection" : {
        "acquireCount" : {
            "r" : NumberLong(92)
        }
    }
}

构建索引查询

代码语言:javascript
复制
 "desc" : "TTLMonitor",
 "threadId" : "12592",
 "active" : true,
 "opid" : 958,
 "op" : "none",
 "ns" : "",
 "query" : {

 },
 "numYields" : 0,
 "locks" : {
         "Global" : "r",
         "Database" : "r"
 },
 "waitingForLock" : true,
 "lockStats" : {
         "Global" : {
                 "acquireCount" : {
                         "r" : NumberLong(4)
                 }
         },
         "Database" : {
                 "acquireCount" : {
                         "r" : NumberLong(2)
                 },
                 "acquireWaitCount" : {
                         "r" : NumberLong(1)
                 },
                 "timeAcquiringMicros" : {
                         "r" : NumberLong("3571165481")
                 }
         },
         "Collection" : {
                 "acquireCount" : {
                         "r" : NumberLong(3)
                 }
         }
 }

正如您所看到的,等待获取锁需要大量时间。对于普通查询,它等于60秒,对于索引,它等于3571秒。

我的工作计算机可以创建类似的索引,比在服务器上创建索引快得多。

我的服务器是虚拟机,10核,40 My内存和磁盘是raid1阵列。

我使用的是MongoDb版本3.2.6 (WiredTiger)。

有什么问题吗?我如何诊断这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-07 09:16:20

我的问题是低速磁盘子系统,根据官方文件替换ssd解决了问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37985209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档