MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Gestione di operazioni di lunga durata in MongoDB

MongoDB offre una serie di strumenti per gestire le operazioni di lunga durata nel sistema. È estremamente importante tenere traccia delle operazioni in esecuzione sul server di produzione in qualsiasi momento, poiché in alcuni casi potresti avere query rouge o build di indici che riducono le prestazioni del tuo server.

Il comando MongoDB che fornisce queste informazioni è "db.currentOp()". Per ulteriori informazioni, fare riferimento alla documentazione di MongoDB per db.currentOp(). Il comando accetta parametri per limitare l'output in base a db, operazione, tempo di esecuzione ecc.

Ecco un esempio di output:

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

I campi più interessanti sono:

  1. opide - ID dell'operazione.
  2. op - L'operazione in esecuzione.
  3. ns - Il database e la raccolta su cui è in esecuzione l'operazione.
  4. sec_running - Il numero di secondi in cui l'operazione è stata eseguita.

Una volta identificate le operazioni di lunga durata, in alcuni casi potresti volerle terminare. L'operazione che vuoi usare è:

db.killOp(<opid>)

Inutile dire che si desidera utilizzare questo comando con molta attenzione. Non terminare operazioni di cui non sei a conoscenza. Personalmente mi sento a mio agio solo nel terminare le query di lunga durata.

Se hai operazioni che richiedono costantemente molto tempo, MongoDB offre un'altra opzione:maxTimeMS:

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

Se sai di avere operazioni di lunga durata che vuoi interrompere dopo che è stato superato un certo periodo di tempo di esecuzione, usa l'opzione maxTimeMS per impostare un limite al tempo di esecuzione di questa operazione.

In ScaleGrid, comprendiamo l'importanza di questo flusso di lavoro, quindi lo abbiamo integrato nella nostra console di amministrazione. La console "admin" nella pagina dei dettagli del cluster fornisce l'accesso all'elenco delle operazioni sul tuo server MongoDB:

Puoi anche selezionare un'operazione particolare e scegliere di terminarla. Come sempre esercita questa opzione con discrezione: