ITPub博客

首页 > 数据库 > > MongoDB当前操作db.currentOp()示例

MongoDB当前操作db.currentOp()示例

作者:浪花小雨滴 时间:2020-05-08 18:36:44 0 删除 编辑

停止某个操作:



$ mongo --port 17380

MongoDB shell version: 2.4.5

connecting to: 127.0.0.1:17380/test

mongos> db.currentOp()

{ "inprog" : [ ...] }



mongos> db.killOp("shard0001:163415563")





批量停止:

db.currentOp().inprog.forEach(function(item){db.killOp(item.opid)})



当查询超过1000秒的,停止:

db.currentOp().inprog.forEach(function(item){if(item.secs_running > 1000 )db.killOp(item.opid)})

停止某个数据源的查询:

db.currentOp().inprog.forEach(function(item){if(item.ns == "cswuyg.cswuyg")db.killOp(item.opid)})



把所有在等待锁的操作显示出来:

db.currentOp().inprog.forEach(function(item){if(item.waitingForLock)print(JSON.stringify(item))})



把处于等待中的分片显示出来:

db.currentOp().inprog.forEach(function(item){if(item.waitingForLock){print(item.opid.substr(0,9));print(item.op);}})



把非等待的分片显示出来:

db.currentOp().inprog.forEach(function(item){if(!item.waitingForLock){var lock_info = item["opid"];print(lock_info.substr(0,9));print(item["op"]);}})



查找所有的查询任务:

db.currentOp().inprog.forEach(function(item){if(item.op=="query"){print(item.opid);}})



查找所有的非查询任务:

db.currentOp().inprog.forEach(function(item){if(item.op!="query"){print(item.opid);}})



查找所有的操作:

db.currentOp().inprog.forEach(function(item){print(item.op, item.opid);});



常用js脚本,可直接复制到mongo-shell下使用:



显示当前所有的任务状态:



print("##########");db.currentOp().inprog.forEach(function(item){if(item.waitingForLock){var lock_info = item["opid"];print("waiting:",lock_info,item.op,item.ns);}});print

("----");db.currentOp().inprog.forEach(function(item){if(!item.waitingForLock){var lock_info = item["opid"];print("doing",lock_info,item.op,item.ns);}});print("##########");





杀掉某些特定任务:

(1)

db.currentOp().inprog.forEach(function(item){if(item.waitingForLock){var lock_info = item["opid"];if(item.op=="query" && item.secs_running >60 && item.ns=="cswuyg.cswuyg")

{db.killOp(item.opid)}}})

(2)

db.currentOp().inprog.forEach(function(item) {

var lock_info = item["opid"];

if (item.op == "query" && item.secs_running > 1000) {

print("kill", item.opid);

db.killOp(item.opid)

}

})



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15498/viewspace-2659852/,如需转载,请注明出处,否则将追究法律责任。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3162997/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    39921