sql >> Base de Datos >  >> NoSQL >> MongoDB

Gestión de operaciones de larga duración en MongoDB

MongoDB le brinda una serie de herramientas para administrar operaciones de larga duración en el sistema. Es extremadamente importante realizar un seguimiento de las operaciones que se ejecutan en su servidor de producción en cualquier momento, ya que, en algunos casos, es posible que tenga consultas falsas o compilaciones de índices que están afectando el rendimiento de su servidor.

El comando MongoDB que le brinda esta información es "db.currentOp()". Para obtener más información, consulte la documentación de MongoDB para db.currentOp(). El comando toma parámetros para restringir la salida por base de datos, operación, tiempo de ejecución, etc.

Aquí hay una salida de ejemplo:

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

Los campos más interesantes son:

  1. opid - ID de la operación.
  2. op - La operación que se está ejecutando.
  3. ns- La base de datos y la colección en la que se ejecuta la operación.
  4. segundos_corriendo - El número de segundos que la operación se ha estado ejecutando.

Una vez que identifique las operaciones de ejecución prolongada, es posible que desee finalizarlas en algunos casos. La operación que desea utilizar es:

db.killOp(<opid>)

No hace falta decir que desea usar este comando con mucho cuidado. No finalice operaciones de las que no tenga conocimiento. Personalmente, solo me siento cómodo finalizando consultas de larga duración.

Si tiene operaciones que toman mucho tiempo constantemente, MongoDB ofrece otra opción:maxTimeMS:

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

Si sabe que tiene operaciones de ejecución prolongada que desea detener después de que se haya excedido una cierta cantidad de tiempo de ejecución, use la opción maxTimeMS para establecer un límite en el tiempo de ejecución de esta operación.

En ScaleGrid, entendemos la importancia de este flujo de trabajo, por lo que lo hemos integrado en nuestra consola de administración. La consola de "administración" en la página de detalles del clúster brinda acceso a la lista de operaciones en su servidor MongoDB:

También puede seleccionar una operación en particular y optar por terminarla. Como siempre ejerza esta opción con discreción: