Gelegentlich geraten Vorgänge in MongoDB außer Kontrolle und werden möglicherweise Hunderte von Sekunden lang ausgeführt. Dies wirkt sich auf die Leistung aus, bis sie beendet oder abgeschlossen werden.
Wenn das passiert, weiß ich, dass ich zur killOp()
Verfügung habe, aber wie kann ich nur gezielte Langzeitoperationen beenden, ohne (zum Beispiel) auch die Langzeitoperationen zu beenden, die an der Replikation beteiligt sind (was gefährlich sein kann)?
quelle
db.currentOp()
in unserer Sharded-Datenbank gibt Operationen im Namespace "" (auch bekannt als ns: "") zurück, die sehr lange mit einem Desc von "Repl Writer Worker n" (wobei n eine Ganzzahl ist) ausgeführt werden. Ich würde vorschlagen, die Namespaces mit Abfragen, die Sie möglicherweise beenden möchten, in Ihre tatsächlichen Datenbanken aufzunehmen. So etwas wie&& (['users', 'analytics'].indexOf(op.ns) != -1)
anstelle der!op.ns.startsWith
Bedingung.