面对mongo服务器性能下降,所以为了调试它,我们尝试了
db.currentOp({ "active" : true, "secs_running" : { "$gt" : 1 }})
检查当前操作超过1秒,发现有超过2个查询运行超过500秒。截至目前,我们无法控制查询的来源。所以我们所做的是使用。
杀死那些操作db.killOp()
现在有没有一种方法可以自动删除所有那些超过x秒的查询,一旦执行了x秒并带有响应?
注意: - 无法编辑查询,希望它在mongod配置文件中。
答案 0 :(得分:0)
您可以在mongod级别设置,以便它适用于所有查询。默认值为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}}