MongoDB ви предоставя редица инструменти за управление на продължителни операции в системата. Изключително важно е да следите операциите, които се изпълняват на вашия производствен сървър по всяко време, тъй като в някои случаи може да имате руужни заявки или изграждане на индекси, които убиват производителността на сървъра ви.
Командата MongoDB, която ви дава тази информация, е „db.currentOp()“. За повече информация вижте документацията на MongoDB за db.currentOp(). Командата приема параметри за ограничаване на изхода по db, операция, време на изпълнение и т.н.
Ето примерен изход:
{ opid: 294, active: false, op: "query", ns: "admin", query: { "query": {}, orderby: { "$natural": -1 } }, client: "0.0.0.0:0", desc: "rsMgr", threadId: "0x7f3e6af3f700", waitingForLock: false, numYields: 0, lockStats: { timeLockedMicros: { R: 1, W: 1 }, timeAcquiringMicros: { r: 1, w: 1 } }
Най-интересните полета са:
- opid - Идент. № на операцията.
- оп - Операцията, която се изпълнява.
- ns - Базата данни и колекцията, върху която се изпълнява операцията.
- secs_running - Броят секунди, през които операцията е била изпълнена.
След като идентифицирате дългосрочните операции, може да искате да ги прекратите в някои случаи. Операцията, която искате да използвате, е:
db.killOp(<opid>)
От само себе си се разбира, че искате да използвате тази команда много внимателно. Не прекратявайте операции, за които не знаете. Аз лично се чувствам комфортно само да прекратявам дълготрайни заявки.
Ако имате операции, които постоянно отнемат много време, MongoDB предоставя друга опция – maxTimeMS:
E.g. db.find(...).maxTimeMS(30)
Ако знаете, че имате продължителни операции, които искате да спрете след превишаване на определено време за изпълнение, използвайте опцията maxTimeMS, за да зададете ограничение за времето за изпълнение на тази операция.
В ScaleGrid разбираме важността на този работен процес – затова го вградихме в нашата администраторска конзола. „Администраторската“ конзола на страницата с подробности за клъстера предоставя достъп до списъка с операции на вашия сървър MongoDB:
Можете също да изберете конкретна операция и да изберете да я прекратите. Както винаги използвайте тази опция с преценка: