MongoDB - 大量更新时CPU利用率超过70%

时间:2017-09-19 14:49:52

标签: mongodb mongodb-query

我有一个mongodb集合test。每30秒对此集合执行一次更新操作。有时cpu利用率超过80%并且连接超时。此外,当我启用分析并检查/var/log/mongodb/mongod.log时,更新操作完成所需的时间超过40秒。更新查询非常大,看起来像这样。

更新查询

test.update({_id: xxxxxxxx},{ $set: { 
c_id: "5803a892b6646ad17b2b7a67", s_id: "58f29ee1d6ee0610543f152e", 
c_id: "58f29a38c91379637619605c", m: "78a3512ad29c", 
date: new Date(1505520000000), l.0.h.0.t: 0, l.0.m.0.0.t: 0, 
l.0.h.0.t: 0, l.0.m.0.0.t: 0, l.0.h.0.r: 0, l.0.m.0.0.r: 0, 
l.0.h.0.r: 0, l.0.m.0.0.r: 0, l.1.h.0.t: 0, l.1.m.0.0.t: 0, 
l.1.h.0.t: 0, l.1.m.0.0.t: 0, l.1.h.0.r: 0, l.1.m.0.0.r: 0, 
l.1.h.0.r: 0, l.1.m.0.0.r: 0, l.0.m.0.1.t: 0, l.0.m.0.1.t: 0,
l.0.m.0.1.rxb: 0, l.0.m.0.1.r: 0, 
l.1.m.0.1.t: 0, l.1.m.0.1.t: 0, l.1.m.0.1.r: 0, l.1.m.0.1.r: 0, 
l.0.m.0.2.t: 0, 
.....................
.....................
.....................
.....................
.....................
}})

查询非常大,我只发布了一部分查询,并且模式也非常复杂。我们如何才能提高此更新查询的性能?我应该优化架构以减少嵌套文档的数量吗?

我想知道我可以采取哪些步骤来改进此更新查询。

更新查询的

.explain()输出

{
"queryPlanner" : {
    "plannerVersion" : 1,
    "namespace" : "test.stats",
    "indexFilterSet" : false,
    "winningPlan" : {
        "stage" : "UPDATE",
        "inputStage" : {
            "stage" : "IDHACK"
        }
    },
    "rejectedPlans" : []
},
"serverInfo" : {
    "host" : "abcxyz",
    "port" : 27017,
    "version" : "3.4.4",
    "gitVersion" : "988390515874a9debd1b6c5d36559ca86b4babj"
},
"ok" : 1.0
}

0 个答案:

没有答案