1

2 時間以上実行される遅いクエリを強制終了したい。

Spring Data mongo db で遅いクエリを強制終了するために、MongoOptions クラスで socket-timeout を使用できますか?

助けてください。

4

1 に答える 1

2

ソケット タイムアウトは、クライアントの観点からは接続を閉じますが、進行中の作業 (データのバッチのフェッチなど) がある場合、サーバーは引き続きクエリを処理します。

2.6 より前のバージョンの MongoDB サーバーを使用している場合は、db.killOp()コマンド .. を使用して長時間実行されている操作を強制終了できますが、内部サーバー スレッドではなく、予想されるクライアント操作を強制終了していることを確認する必要があります。$commentを介して識別できるように、実行時間の長いクエリに固有の を追加すると役立つ場合がありますdb.currentOp(true)

MongoDB 2.6+ ではmaxTimeMS、一定の累積処理時間 (ミリ秒単位) が経過した後にサーバーがカーソルを強制終了するようにする新しいカーソル オプションが追加されました。MongoDB Java ドライバーの 2.12 (またはそれ以降) バージョンを使用する必要があります ( pom.xmlwithで設定できます<mongodb.driver.version>)。

背景maxTimeMSとソケット タイムアウトの詳細については、maxTimeMS() および Query Optimizer Introspection in MongoDB 2.6 を参照してください。

于 2014-08-17T14:10:54.400 に答える