有没有类似“maxQueryTime”的东西?如果是,则如何设置mongo maxQueryTime?

时间:2016-02-15 12:35:09

标签: mongodb

面对mongo服务器性能下降,所以为了调试它,我们尝试了

db.currentOp({ "active" : true, "secs_running" : { "$gt" : 1 }})

检查当前操作超过1秒,发现有超过2个查询运行超过500秒。截至目前,我们无法控制查询的来源。所以我们所做的是使用。

杀死那些操作
db.killOp()

现在有没有一种方法可以自动删除所有那些超过x秒的查询,一旦执行了x秒并带有响应?

注意: - 无法编辑查询,希望它在mongod配置文件中。

1 个答案:

答案 0 :(得分:0)

您可以在mongod级别设置enter image description here,以便它适用于所有查询。默认值为10分钟(!)。

与此同时,您可以运行脚本自动终止查询。

为便于阅读而格式化:

while(true) { var data = db.currentOp({ "active" : true, "secs_running" : { "$gt" : 1 }})["inprog"]; for(var i = 0; i < data.length; i ++) { var operation = data[i]; print("Killing " + operation.opid); db.killOp(operation.opid); }  sleep(500); }

为shell格式化:

{{1}}