MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Zarządzanie długotrwałymi operacjami w MongoDB

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:

  1. opid - Identyfikator operacji.
  2. op - Operacja, która jest wykonywana.
  3. ns - Baza danych i kolekcja, na których wykonywana jest operacja.
  4. 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:


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak używać GridFS do przechowywania obrazów przy użyciu Node.js i Mongoose?

  2. Wypełnianie mangusty a zagnieżdżanie obiektów

  3. Użyj operatora $gte i <e mongo, jeśli data jest w formacie ciągu w mongodb

  4. Kiedy używać GridFS w MongoDB?

  5. heroku mongohq i mongoid Mongo::Błąd połączenia