MongoDB udostępnia szereg narzędzi do zarządzania długotrwałymi operacjami w systemie. Niezwykle ważne jest śledzenie operacji wykonywanych na serwerze produkcyjnym w dowolnym momencie, ponieważ w niektórych przypadkach możesz mieć fałszywe zapytania lub kompilacje indeksów, które obniżają wydajność Twojego serwera.
Polecenie MongoDB, które podaje te informacje, to „db.currentOp()”. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją MongoDB dotyczącą db.currentOp(). Polecenie pobiera parametry, aby ograniczyć dane wyjściowe przez db, operację, czas wykonania itp.
Oto przykładowe wyjście:
{
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 }
}
Najciekawsze pola to:
- opid - Identyfikator operacji.
- op - Operacja, która jest wykonywana.
- ns - Baza danych i kolekcja, na których wykonywana jest operacja.
- secs_running — Liczba sekund działania operacji.
Po zidentyfikowaniu długotrwałych operacji, w niektórych przypadkach możesz chcieć je zakończyć. Operacja, której chcesz użyć to:
db.killOp(<opid>)
Nie trzeba dodawać, że chcesz używać tego polecenia bardzo ostrożnie. Nie przerywaj operacji, o których nie wiesz. Osobiście czuję się komfortowo tylko kończenie długotrwałych zapytań.
Jeśli masz operacje, które konsekwentnie zajmują dużo czasu, MongoDB zapewnia inną opcję – maxTimeMS:
E.g. db.find(...).maxTimeMS(30)
Jeśli wiesz, że masz długotrwałe operacje, które chcesz zatrzymać po przekroczeniu określonego czasu wykonania, użyj opcji maxTimeMS, aby ustawić limit czasu wykonania tej operacji.
W ScaleGrid rozumiemy znaczenie tego przepływu pracy — dlatego wbudowaliśmy go w naszą konsolę administracyjną. Konsola administracyjna na stronie szczegółów klastra zapewnia dostęp do listy operacji na serwerze MongoDB:

Możesz także wybrać konkretną operację i zakończyć ją. Jak zawsze korzystaj z tej opcji dyskretnie:
