停止某个操作:
$ 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
,如需转载请自行联系原作者