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")


批量停止:

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

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

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

停止某个数据源的查询:

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

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

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

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

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

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

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

查找所有的查询任务:

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

查找所有的非查询任务:

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

查找所有的操作:

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

 

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

 

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

1
2
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)

1
2
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)

1
2
3
4
5
6
7
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)    
  }    
})

















本文转自UltraSQL51CTO博客,原文链接:http://blog.51cto.com/ultrasql/1706903  ,如需转载请自行联系原作者







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值