jericho0702 发表于 2018-10-26 08:31:58

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

  MongoDB当前操作db.currentOp()示例
  停止某个操作:
  $ 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)
  
}
  
})


页: [1]
查看完整版本: MongoDB当前操作db.currentOp()示例