MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Gestion des opérations de longue durée dans MongoDB

MongoDB vous offre un certain nombre d'outils pour gérer les opérations de longue durée dans le système. Il est extrêmement important de suivre à tout moment les opérations en cours d'exécution sur votre serveur de production, car dans certains cas, vous pouvez avoir des requêtes rouges ou des constructions d'index qui nuisent aux performances de votre serveur.

La commande MongoDB qui vous donne cette information est "db.currentOp()". Pour plus d'informations, reportez-vous à la documentation MongoDB pour db.currentOp(). La commande prend des paramètres pour restreindre la sortie par db, opération, temps d'exécution, etc.

Voici un exemple de sortie :

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

Les champs les plus intéressants sont :

  1. opid - ID de l'opération.
  2. op - L'opération en cours d'exécution.
  3. ns - La base de données et la collection sur lesquelles l'opération s'exécute.
  4. secs_running - Le nombre de secondes d'exécution de l'opération.

Une fois que vous avez identifié les opérations de longue durée, vous souhaiterez peut-être y mettre fin dans certains cas. L'opération que vous souhaitez utiliser est :

db.killOp(<opid>)

Il va sans dire que vous voulez utiliser cette commande avec beaucoup de prudence. Ne terminez pas les opérations dont vous n'êtes pas au courant. Personnellement, je ne me sens à l'aise que pour mettre fin aux requêtes de longue durée.

Si vous avez des opérations qui prennent constamment beaucoup de temps, MongoDB fournit une autre option - maxTimeMS :

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

Si vous savez que vous avez des opérations de longue durée que vous souhaitez arrêter après un certain temps d'exécution, utilisez l'option maxTimeMS pour définir une limite sur le temps d'exécution de cette opération.

Chez ScaleGrid, nous comprenons l'importance de ce flux de travail - nous l'avons donc intégré à notre console d'administration. La console "admin" sur la page des détails du cluster donne accès à la liste des opérations sur votre serveur MongoDB :

Vous pouvez également sélectionner une opération particulière et choisir de la terminer. Comme toujours, exercez cette option avec discrétion :