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

chenfeng發表於2019-10-14

停止某個操作:


$ 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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章