2 時間以上実行される遅いクエリを強制終了したい。
Spring Data mongo db で遅いクエリを強制終了するために、MongoOptions クラスで socket-timeout を使用できますか?
助けてください。
2 時間以上実行される遅いクエリを強制終了したい。
Spring Data mongo db で遅いクエリを強制終了するために、MongoOptions クラスで socket-timeout を使用できますか?
助けてください。
ソケット タイムアウトは、クライアントの観点からは接続を閉じますが、進行中の作業 (データのバッチのフェッチなど) がある場合、サーバーは引き続きクエリを処理します。
2.6 より前のバージョンの MongoDB サーバーを使用している場合は、db.killOp()
コマンド .. を使用して長時間実行されている操作を強制終了できますが、内部サーバー スレッドではなく、予想されるクライアント操作を強制終了していることを確認する必要があります。$comment
を介して識別できるように、実行時間の長いクエリに固有の を追加すると役立つ場合がありますdb.currentOp(true)
。
MongoDB 2.6+ ではmaxTimeMS
、一定の累積処理時間 (ミリ秒単位) が経過した後にサーバーがカーソルを強制終了するようにする新しいカーソル オプションが追加されました。MongoDB Java ドライバーの 2.12 (またはそれ以降) バージョンを使用する必要があります ( pom.xml
withで設定できます<mongodb.driver.version>
)。
背景maxTimeMS
とソケット タイムアウトの詳細については、maxTimeMS() および Query Optimizer Introspection in MongoDB 2.6 を参照してください。