db.killOp()
説明
db.killOp(opid)
操作 ID で指定された操作を終了します。操作とそれに対応する ID を見つけるには、
$currentOp
、またはdb.currentOp()
を参照してください。db.killOp()
メソッドには次のパラメータがあります。Parameterタイプ説明op
数値操作 ID。警告
実行中の操作は、細心の注意を払って終了します。 クライアントによって開始された操作を終了するには
db.killOp()
のみを使用し、内部データベース操作は終了しません。
互換性
このメソッドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
重要
このコマンドは、M 0 、M 2 、M 5 、および M 10 + クラスターでサポートが限定されています。 詳細については、「サポートされていないコマンド 」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
シャーディングされたクラスター
読み取り操作の強制終了
db.killOp()
メソッドはmongos
で実行でき、クラスター内の複数のシャードで実行されているクエリ(読み取り操作)を強制終了できます。
たとえば、シャーディングされたクラスターでクエリ操作を強制終了するには、次のようにします。
クライアントがクエリを発行したのと同じ
mongos
で、次のlocalOps: true
で集計パイプライン$currentOp
を実行し、強制終了するクエリ操作の opid を見つけます。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" } ] ) 重要
この集計操作は、クライアントがクエリを発行したのと同じ
mongos
で発行する必要があります。強制終了するクエリ操作が見つかったら、
mongos
上の opid を指定してdb.killOp()
を発行しますdb.killOp(<opid of the query to kill>)
または、操作を実行中のシャード ノードから読み取り操作を見つけて強制終了することもできます。MongoDB は、強制終了操作を他のシャードと mongos
インスタンスに伝達します。
操作が実行中のシャードの 1 つで、強制終了するクエリ操作の opid を見つけます。
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" } ] ) 強制終了するクエリ操作が見つかったら、シャード ノード上の opid を指定して
db.killOp()
を発行します。db.killOp(<opid of the query to kill>) MongoDB は、強制終了操作を他のシャードと
mongos
インスタンスに伝達します。
書き込み操作の強制終了
- セッション内
MongoDB ドライバーは、確認されていない書き込みを除くすべての操作をサーバー セッションに関連付けます。
書き込み操作がセッションに関連付けられている場合、
mongos
のkillSessions
コマンドを使用して、シャード全体の書き込み操作を強制終了できます。mongos
で集計パイプライン$currentOp
を実行して、lsid
(論理セッション ID)を見つけます。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" } ] ) 返された
lsid
情報を使用して、mongos
でkillSessions
コマンドを発行し、シャードに対する操作を強制終了します。db.adminCommand( { killSessions: [ { "id" : UUID("80e48c5a-f7fb-4541-8ac0-9e3a1ed224a4"), "uid" : BinData(0,"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=") } ] } )
- セッションなし
書き込み操作がセッションに関連付けられていない場合は、書き込みに関連するすべてのシャードで操作を見つけて強制終了する必要があります。
mongos
から、集計パイプライン$currentOp
を実行して、シャード上のクエリ操作の opid を見つけます。use admin db.aggregate( [ { $currentOp : { allUsers: true } }, { $match : <filter condition> } // Optional. Specify the condition to find the op. ] ) mongos
で実行すると、$currentOp
は opids を"<shardName>:<opid on that shard>"
の形式で返します。例:{ "shard" : "shardB", .. "opid" : "shardB:79214", ... }, { "shard" : "shardA", .. "opid" : "shardA:100913", ... }, opid 情報を使用して、 で
db.killOp()
mongos
を発行して、シャードでの操作を強制終了します。db.killOp("shardB:79014"); db.killOp("shardA:100813");
アクセス制御
authorization
で実行されているシステムでは、ユーザー自身のものでない操作を強制終了するには、ユーザーに killop
特権アクションを含むアクセス権が必要です。