यह थोड़ा मुश्किल हो सकता है, लेकिन तथ्य यह है कि MongoDB खोल मूल रूप से एक जावास्क्रिप्ट दुभाषिया है जो हमें छानने के मामले में सभ्य विकल्प देता है। यहाँ इस कार्य को पूरा करने के लिए उपयोग किया जाता है:
// 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);
}
}
};
यह maxSecsRunning
थ्रेशोल्ड के ऊपर के प्रश्नों को केवल मार देगा और local
डेटाबेस के खिलाफ चलने वाली किसी भी चीज़ को नहीं छूएगा , जहाँ oplog
जीवन है (और इसलिए वह डेटाबेस है जो लंबे समय तक चलने वाले ऑप्सन ऑप्स में शामिल है। आंतरिक if
सशर्त मानदंड को जोड़ना अपेक्षाकृत आसान है। विशिष्ट आवश्यकताओं के आधार पर आवश्यकतानुसार अधिक सटीक लक्ष्य संचालन।
कोड एक जिस्ट के रूप में भी उपलब्ध है (जहां मैं इसे निरंतर आधार पर अपडेट करना याद रखूंगा)।