Bu biraz zor olabilir, ancak MongoDB kabuğunun temelde bir Javascript yorumlayıcısı olması, filtreleme açısından bize iyi seçenekler sunar. İşte bunu gerçekleştirmek için kullandığım işlev:
// kills long running ops in MongoDB (taking seconds as an arg to define "long")
// attempts to be a bit safer than killing all by excluding replication related operations
// and only targeting queries as opposed to commands etc.
killLongRunningOps = function(maxSecsRunning) {
currOp = db.currentOp();
for (oper in currOp.inprog) {
op = currOp.inprog[oper-0];
if (op.secs_running > maxSecsRunning && op.op == "query" && !op.ns.startsWith("local")) {
print("Killing opId: " + op.opid
+ " running over for secs: "
+ op.secs_running);
db.killOp(op.opid);
}
}
};
Bu, yalnızca maxSecsRunningeşiğin üzerindeki sorguları öldürür ve localveritabanına karşı çalışan hiçbir şeye dokunmaz , bu da oplogyaşamların olduğu yerdir (ve bu nedenle uzun süren çoğaltma işlemlerinde yer alan veritabanıdır. İç ifkoşullara kriter eklemek nispeten kolaydır. belirli ihtiyaçlara göre operasyonları gerektiği gibi daha hassas bir şekilde hedeflemek.
Kod aynı zamanda bir gist olarak da mevcuttur (burada sürekli olarak güncellemeyi hatırlayacağım).