这是我尝试过的,但似乎没有用,只能杀死1次。
function s() {
t = db.currentOp()['inprog'];
k= new Array();
for(i=0;i< t.length;i++)
{
if(t[i]["ns"].indexOf("my_namespace") != -1) //fetch all required current Operations
k.push(t[i]);
}
for(j=0;j<k.length;k++)
{
db.killOp(k[j]['opid']); // kill them by opid , works only once
}
答案 0 :(得分:3)
由于您使用的是v1.6,因此以下JIRA可能与您的问题有关,并已在1.7.2中得到解决:https://jira.mongodb.org/browse/SERVER-1816
因此,如果这是问题,请尝试升级到1.8。或者您可以尝试以下方法:
for(each operation op identified in first loop)
{
if(op still exists) { // op could have finished
kill op;
while(op still there) // May not be possible to kill op
{ // if another is being killed
wait 1 sec;
}
}
}
答案 1 :(得分:0)
for(j=0;j<k.length;k++)
{
db.killOp(k[j]['opid']); // kill them by opid , works only once
}
纠正我,如果我错了,但不应该......(j ++不是k ++,因为你只是无限增加k的长度)。因此j只会永远= 0并且只会杀死k中的第一个值。
for(j=0;j<k.length;j++)
{
db.killOp(k[j]['opid']); // kill them by opid , works only once
}