実行中の操作の終了
Overview
MongoDB は実行中の操作を終了するための 2 つの方法 maxTimeMS()
とdb.killOp()
を提供します。 必要に応じてこれらの操作を使用して、MongoDB の配置に関する操作の動作を制御します。
利用可能な手順
maxTimeMS
maxTimeMS()
メソッドは、操作の時間制限を設定します。操作が指定された時間制限に達すると、MongoDB は次の 割り込みポイントで操作を中断します。
クエリの終了
mongosh
から、次のメソッドを使用して、このクエリに30ミリ秒の時間制限を設定します。
db.location.find( { "town": { "$regex": "(Pine Lumber)", "$options": 'i' } } ).maxTimeMS(30)
コマンドの終了
distinct
を使用して、city
キーを持つ collection
フィールドを個別に返すという、実行が長時間におよぶ操作を検討します。
db.runCommand( { distinct: "collection", key: "city" } )
コマンド ドキュメントに maxTimeMS
フィールドを追加して、操作に 45 ミリ秒の時間制限を設定できます。
db.runCommand( { distinct: "collection", key: "city", maxTimeMS: 45 } )
maxTimeMS
に達する操作は、MaxTimeMSExpired
エラーを返します。
killOp
db.killOp()
メソッドは、次の割り込みポイントで実行中の操作を中断します。db.killOp()
は、操作 ID によって対象となる操作を識別します。
db.killOp(<opId>)
警告
実行中の操作は、細心の注意を払って終了します。 クライアントによって開始された操作を終了するにはdb.killOp()
のみを使用し、内部データベース操作は終了しません。
シャーディングされたクラスター
killOp
コマンドはmongos
で実行でき、クエリを強制終了できます(例:クラスタ内のシャードにまたがる読み取り操作)。強制終了する操作が書込み操作の場合、mongos
からのkillOp
コマンドはシャードに伝達されません。
シャーディングされたクラスターでの操作の強制終了の詳細については、以下を参照してください。
mongos
でアクティブなシャーディング操作を一覧表示する方法の詳細については、$currentOp
の localOps
パラメーターを参照してください。