Docs Menu
Docs Home
/ /

db.killOp() (método mongosh)

db.killOp(opid)

Finaliza una operación según lo especificado por el ID de la operación. Para encontrar operaciones y sus ID correspondientes, consulte $currentOp o.db.currentOp()

El db.killOp() El método tiene el siguiente parámetro:

Parameter
Tipo
Descripción

op

Número

Un identificador de operación.

Advertencia

Finalice las operaciones en ejecución con extrema precaución. Utilice solo para finalizar operaciones db.killOp() iniciadas por clientes y no finalice operaciones internas de la base de datos.

Este método está disponible en implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

Importante

MongoDB Atlas limita el uso de este método al usuario de MongoDB que ejecutó la operación. Para obtener información sobre la compatibilidad de Atlas con todos los comandos, consulte Comandos no compatibles.

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

El db.killOp() método se puede ejecutar en un y puede eliminar consultas (operaciones mongos de lectura) que se ejecutan en más de un fragmento en un clúster.

Por ejemplo, para abortar una operación de consulta en un clúster:

  1. En el mismo mongos donde el cliente emitió la consulta, busque el opid de la operación de consulta que se va a eliminar ejecutando la canalización de agregación $currentOp con:localOps: true

    use admin
    db.aggregate( [
    { $currentOp : { allUsers: true, localOps: true } },
    { $match : <filter condition> } // Optional. Specify the condition to find the op.
    // e.g. { op: "getmore", "command.collection": "someCollection" }
    ] )

    Importante

    Debe emitir esta operación de agregación en el mismo mongos donde el cliente emitió la consulta.

  2. Una vez que encuentre la operación de consulta que desea eliminar, emita con el db.killOp() opid mongos en:

    db.killOp(<opid of the query to kill>)

Tip

El localOps parámetro $currentOp en.

Como alternativa, puede buscar y detener la operación de lectura desde un miembro del fragmento donde se esté ejecutando. MongoDB propaga la operación de finalización a los demás fragmentos y a las mongos instancias:

  1. En uno de los fragmentos donde se ejecuta la operación, busque el opid de la operación de consulta que se va a eliminar:

    use admin
    db.aggregate( [
    { $currentOp : { allUsers: true } },
    { $match : <filter condition> } // Optional. Specify the condition to find the op.
    // e.g. { op: "getmore", "command.collection": "someCollection" }
    ] )
  2. Una vez que encuentre la operación de consulta que desea eliminar, emita con el opid en el miembro del db.killOp() fragmento:

    db.killOp(<opid of the query to kill>)

    MongoDB propaga la operación de eliminación a las otras particiones e instancias mongos.

Dentro de una sesión

Los controladores MongoDB asocian todas las operaciones con una sesión de servidor, con la excepción de las escrituras no reconocidas.

Si la operación de escritura está asociada con una sesión, puede usar el killSessions comando en para finalizar la operación de escritura en todos mongos los fragmentos.

  1. Ejecute la canalización de agregación $currentOp en mongos para encontrar lsid (ID de sesión lógica).

    use admin
    db.aggregate( [
    { $currentOp : { allUsers: true, localOps: true } },
    { $match : <filter condition> } // Optional. Specify the condition to find the op.
    // e.g. { "op" : "update", "ns": "mydb.someCollection" }
    ] )
    1. Utilizando la lsid información devuelta, emita el killSessions comando en para finalizar la operación en los mongos fragmentos.

      db.adminCommand( { killSessions: [
      { "id" : UUID("80e48c5a-f7fb-4541-8ac0-9e3a1ed224a4"), "uid" : BinData(0,"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=") }
      ] } )
Sin sesión

Si la operación de escritura no está asociada a una sesión, debes encontrar y cancelar la operación en todas las particiones asociadas con el guardado.

  1. Desde un, ejecute mongos $currentOp la canalización de agregación para encontrar los opid de la operación de consulta en los fragmentos:

    use admin
    db.aggregate( [
    { $currentOp : { allUsers: true } },
    { $match : <filter condition> } // Optional. Specify the condition to find the op.
    ] )

    Cuando se ejecuta en un mongos, $currentOp devuelve los opids en el formato de "<shardName>:<opid on that shard>";, p. ej.,

    {
    "shard" : "shardB",
    ..
    "opid" : "shardB:79214",
    ...
    },
    {
    "shard" : "shardA",
    ..
    "opid" : "shardA:100913",
    ...
    },
  2. Usando la información del opid, ejecuta db.killOp() en el mongos para terminar la operación en las particiones.

    db.killOp("shardB:79014");
    db.killOp("shardA:100813");

En sistemas que se ejecutan con, para eliminar operaciones que no son propiedad del authorization killop usuario, el usuario debe tener acceso que incluya la acción de privilegio.

En instancias, los usuarios pueden eliminar mongod killop sus propias operaciones incluso sin la acción de privilegio.

Volver

db.hostInfo

En esta página