MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Verwalten lang andauernder Vorgänge in MongoDB

MongoDB bietet Ihnen eine Reihe von Tools zum Verwalten lang andauernder Vorgänge im System. Es ist äußerst wichtig, die auf Ihrem Produktionsserver ausgeführten Vorgänge jederzeit im Auge zu behalten, da Sie in einigen Fällen möglicherweise gefälschte Abfragen oder Indexerstellungen haben, die die Leistung Ihres Servers beeinträchtigen.

Der MongoDB-Befehl, der Ihnen diese Informationen liefert, ist „db.currentOp()“. Weitere Informationen finden Sie in der MongoDB-Dokumentation für db.currentOp(). Der Befehl nimmt Parameter, um die Ausgabe entweder durch db, Operation, Ausführungszeit usw. einzuschränken.

Hier ist eine Beispielausgabe:

{
  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 }
}

Die interessantesten Felder sind:

  1. opid - ID des Vorgangs.
  2. op - Der Vorgang, der ausgeführt wird.
  3. ns - Die Datenbank und Sammlung, auf der der Vorgang ausgeführt wird.
  4. secs_running - Die Anzahl der Sekunden, die der Vorgang ausgeführt wurde.

Sobald Sie die Vorgänge mit langer Laufzeit identifiziert haben, möchten Sie sie möglicherweise in einigen Fällen beenden. Die Operation, die Sie verwenden möchten, ist:

db.killOp(<opid>)

Es versteht sich von selbst, dass Sie diesen Befehl sehr vorsichtig verwenden möchten. Beenden Sie keine Vorgänge, von denen Sie nichts wissen. Ich persönlich fühle mich nur wohl dabei, lange laufende Abfragen zu beenden.

Wenn Sie Vorgänge haben, die konstant lange dauern, bietet MongoDB eine weitere Option – maxTimeMS:

E.g. db.find(...).maxTimeMS(30)

Wenn Sie wissen, dass Sie lang andauernde Operationen haben, die Sie nach Überschreiten einer bestimmten Ausführungszeit stoppen möchten, verwenden Sie die Option maxTimeMS, um die Ausführungszeit dieser Operation zu begrenzen.

Wir bei ScaleGrid verstehen die Bedeutung dieses Workflows – deshalb haben wir ihn in unsere Verwaltungskonsole integriert. Die „Admin“-Konsole auf der Cluster-Detailseite bietet Zugriff auf die Betriebsliste auf Ihrem MongoDB-Server:

Sie können auch einen bestimmten Vorgang auswählen und ihn beenden. Nutzen Sie diese Option wie immer mit Bedacht: