クエリ区別は、クラスターが過負荷になったときに、 ノードで非効率的で長時間実行されるクエリ操作を自動的に終了する Atlas の 論理ワークロード管理(IWM)ポリシーです。最もコストがあり、効率が低いクエリ操作のみを対象とすることで、Querymongod Centinel は停止時のリスクを軽減し、負荷を迅速に解放して全体的なワークロードへの影響を最小限に抑えます。
MongoDB、受信操作の数が十分に多く、完全な停止またはほぼ完全な停止時が発生する場合に、ノードが過負荷になっていると見なされます。 MongoDB は、CPU 使用率、キューの深さ、1 秒あたりの操作数、レイテンシなどのメトリクスから過負荷を計算します。
重要
このポリシーは、負荷分散ポリシーです。このポリシーが Atlas クラスターでアクティブになっており、クラスターが過負荷になっている場合は、関連する過負荷エラーが表示される可能性があります。
実行時間が長いクエリは、トラフィックが多いときに過剰なリソースを消費するため、クラスターのパフォーマンスを低下させ、停止のリスクを高める可能性があります。クエリ可能性は、次の方法でクラスターの可用性を保護します。
過負荷時に長時間実行クエリ操作を検出して終了する
成功する短い操作の可用性を維持
ワークロード全体をシャットダウンせずに停止時リスクを軽減
Considerations
このポリシーを使用するには、Atlas クラスターでMongoDB8.3 以降を実行中いる必要があります。 MongoDB8.3 では、このポリシーはデフォルトで無効になっています。 IWM ポリシーを有効または無効にするには、 IWM 設定 を参照してください。
このポリシーは、
M10+Atlasレプリカセットクラスターでのみ使用できます。クエリセグメントは、メモリを消費するがアクティブに実行されていないアイドルカーソルなど、メモリ消費に基づいて操作を終了しません。
クエリについては、操作を一時停止したりキューに入れたりしません。
動作
Atlas がクラスターでクエリ区別値ポリシーを実行すると、次のアクションが実行されます。
過負荷のモニター
Atlas は、各ノードの過負荷のインジケーターを継続的に評価します。
Atlas が過負荷状態を検出すると、クエリ区別値ポリシーが有効化されます。 Atlas は次のアラート条件でアラートをトリガーします。
プロジェクトのアラート設定を変更するには、「 アラートの構成 」を参照してください。
実行時間が長いクエリを識別します
クエリ区別 は、現在実行中の操作のセットをモニターし、クエリの実行時間、クエリプランの概要などを含む、事前定義された効率基準に対して各操作を評価します。
一致する操作を終了します
クエリセグメントは、ポリシー条件に一致する操作を終了するために
killOpコマンドを発行します。条件に一致する操作のみが停止されます。残りのワークロードは影響を受けません。操作が終了すると、サーバーは
InterruptedDueToOverloadエラー コードを返します。エラー処理の詳細については、「 過負荷エラー 」を参照してください。
通常の操作を再開します
ポリシーがアクティブな場合、アプリケーション内で長時間実行される操作はInterruptedDueToOverload エラーで失敗します。短縮操作は引き続き成功します。過負荷エラーの処理の詳細については、「 過負荷エラー 」を参照してください。
観察可能性
クエリ区別がワークロードにどのように影響しているかを追跡するには、次の方法を使用します。
アラートの構成
クラスターの過負荷条件により、インテリジェント ワークロード管理アラート条件のデフォルトのアラートがトリガーされます。アラートを管理する方法については、「 アラート設定の構成 」を参照してください。
クラスターの過負荷状態が解決されると、Atlas は、IWM ポリシーの解決を示す情報イベントをアクティビティフィードに書込みます。詳しくは、「 IWMアクティビティフィードイベント 」を参照してください。