这篇文章给大家介绍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)
}
})
关于MongoDB中db.currentOp()方法如何使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
分享名称:MongoDB中db.currentOp()方法如何使用
标题URL:http://lswzjz.com/article/ieeihs.html