LinuxサーバーでMongoDb/PHPを使用しています。問題は、クエリの実行に時間がかかりすぎると、mongoサーバーが停止することです(Apacheは実行を続けます)。だから、クエリを実行する時間を制限し、php-max実行時間のようにプロセスを自動的に強制終了できるようにする方法はありますか?
今まで私は見つけました:
socketTimeoutMS
ですが、プロセスを強制終了しない場所がいくつか見つかりました。だから誰も私が従うべきアプローチを提案してください
MongoDB 3.4と同様に、$maxTimeMS
値は、要求を行うクライアント/ドライバーが設定する必要があるカーソルオプションです。
現在、同等のサーバー構成ディレクティブはありませんが、MongoDBの課題追跡で監視/投票する関連機能のリクエストがあります: SERVER-13775:インスタンス/データベースレベルのmaxTimeMS 。
サーバーレベルのデフォルト$maxTimeMS
について検討する必要があるいくつかの潜在的な注意事項があります。
mongodump
などのバックアップツールは、明示的にno-MaxTimeMSオプションを設定するか、予期しない早期終了を処理するように更新する必要があります。$maxTimeMS
はクエリ実行の累積時間(同じカーソルの結果の複数のバッチを含む)に適用されるため、このオプションは、より多くの数/サイズの結果を返すクエリで予期しない結果になる可能性があります。一般に、アプリケーションにはクエリを終了できるコンテキストが多くなるため、より厳密に適合させるには、認証されたユーザー/ロールごとにデフォルト$maxTimeMS
を設定する機能を追加することになると思います。最も近い関連機能の提案は現在 SERVER-15072:特定のユーザーのリソース使用を制限する です。