注意
このページは、Atlas InfiniteとAtlas Coreの両方に適用されます。
Overview
最新のアプリケーションは、トラフィックが急増したり、負荷の高いクエリが予想以上のリソースを消費したりしても、可用性を維持する必要があります。Intelligent ワークロード マネジメント (IWM) は、MongoDB Atlas マネージド可用性機能であり、過負荷状態でもクラスターの応答性と予測可能性を維持します。
クラスターがリソースで処理できる以上の操作を受け取ると、過負荷が発生します。過負荷は、インフラストラクチャが増やすよりも速く発生する可能性があります。オートスケーリングを有効にしても、Atlasが追加のキャパシティーをプロビジョニングするには時間がかかります。これにより、すべての操作を同じように扱うとクラスターが不安定になる可能性があるウィンドウが開かれます。IWMは、ワークロードの急増とリソースの負荷をリアルタイムでモニタリングして対応することで、そのウィンドウを閉じます。
IWMは、MongoDB 9.0以降を実行するすべての専有クラスターにAtlasが適用する過負荷保護システムです。IWMには、以下の保護機能が含まれています。
常時稼働の保護機能は、操作をキューに入れ、速度を低下させ、優先順位を付けることで、操作がクラスターに過負荷をかけるのを防ぎます。これらの保護機能は、過負荷に対する防御のベースラインを形成します。詳細については、常時稼働の保護機能を参照してください。
Load Sheddingは、持続的な過負荷に応じて受信したデータベース操作を拒否する任意の保護機能です。さらに学ぶには、「Load Shedding」を参照してください。
Atlasは、クラスターの階層、トポロジー、MongoDBのバージョン、および負荷分散設定に基づいて、これらの保護のサブセットを各クラスターに適用します。詳細については、クラスターとバージョンの要件を参照してください。
常時稼働の保護
Always-on protectionsは、Atlasが過負荷を吸収し、可用性を維持するために適用するIWM保護のベースラインセットです。これらの保護は、Load Sheddingが無効になっている場合でも常に実行されており、オフにすることはできません。どの保護がクラスターに適用されるかを学ぶには、クラスターとバージョンの要件を参照してください。
イングレスキューイング: Atlasは、クラスター内の各
mongodプロセスでイングレスリクエストレートリミッターを実行します。これにより、各プロセスが実行のために操作を許可する速度が決まります。トラフィックの急増がクラスターの予約済みキャパシティーを超えると、レートリミッターは、過剰な受信操作を実行中の操作とリソースを競合させるのではなく、イングレスキューに追加します。リソースの使用率が高い状態が続くと、レートリミッターは操作の受け入れ速度を低下させるため、より多くの操作がキューで待機することになります。レートリミッターが操作を拒否するのは、クラスターで ロードシェディング を有効にした場合のみです。クラスターでリアクティブなオートスケーリングが有効になっている場合、Atlasはキューに入れられた操作の割合を使用して、クラスターを増やすタイミングを決定します。Atlasは、このレートをAtlasメトリクスの操作 Rate Limiting: Queued 操作として報告します。詳細については、「Atlas がクラスター階層をスケーリングする方法」を参照してください。
実行制御の優先順位付け: オーバーロード時には、Atlas は、バックグラウンドタスクと長時間の操作の優先順位を下げることで、短時間の読み取りと書き込み (write)が引き続き進行するようにサポポートします。長時間クエリは、その業務上の重要度にかかわらず、完了までにより時間がかかる可能性があります。負荷が高い状況では、Atlas はまず、コストの高い操作、実行時間の長い操作、または優先順位の低い操作を制限します。
キャッシュの削除とメモリのチューニング: Atlasは、クラスターがメモリを使用し、キャッシュされたデータを削除する方法を調整します。メモリが不足すると、クラスターはメモリ不足になったり、最も必要なデータを繰り返しクリアしたりする代わりに、制御された方法で速度を低下させます。
接続レート制限: 接続ストーム中、Atlas は既存の接続を維持しながら、新しいクライアント接続を安全なレートで認め、過剰な接続リクエストを拒否します。詳細については、接続レート制限を参照してください。
書き込み (write)のブロック: Atlas Coreクラスターでは、プライマリノードの空きディスク容量が極端に少なくなると、Atlasはレプリカセットへの書き込み (write)操作をブロックします。書き込み (write)がブロックされている間も、Atlasは読み取りを継続します。ブロックされる書き込み (write)操作には削除する操作が含まれます。これは、ドキュメントを削除すると一時的に使用ディスク容量が増加する可能性があるためです。シャーディングされたクラスターでは、Atlasは影響を受けるシャードにルーティングされた書き込み (write)のみをブロックします。
Atlas Coreクラスターでは、ノードの合計ディスクサイズによって、Atlasが適用するしきい値が決まります。次の表は、各ディスクサイズ範囲のしきい値を示しています。
合計ディスクサイズ閾値8 GiB ~ 20 GiB
Atlas は、空きディスク容量が 600 MiB を下回った場合、書き込み (write)をブロックします。Atlas は、ディスクの空き容量が 900 MiB を超えた場合に書き込み (write)のブロックを解除します。
20 GiB から 1.25 TiB まで
Atlasは、空きディスク容量が合計ディスクサイズの4%を下回ると、書き込み (write)をブロックします。Atlasは、空きディスク容量が合計ディスクサイズの6%を超えると、書き込み (write)のブロックを解除します。
1.257600 TiB 以上
Atlasは、空きディスク容量が50 GiBを下回ると書き込み (write)をブロックします。Atlasは、空きディスク容量が75 GiBを超えると書き込み (write)のブロックを解除します。
ディスク容量を回復するには、クラスターのストレージを増やすか、ストレージのオートスケーリングを有効にしてください。
Atlasが書き込み (write)をブロックすると、Atlasのログは書き込み (write)がブロックされていることを示す
MongoServerErrorを返します。エラーコードと理由は、クラスターの機能の互換性バージョン(機能の互換性バージョン)によって異なります。機能の互換性バージョン 9.0以降のクラスターの場合、ログは次のような
MongoServerErrorを返します:Replica set writes blocked, reason: InsufficientDiskSpace。機能の互換性バージョンが9.0より前のクラスターの場合、ログは次のような
MongoServerErrorを返します:User writes blocked, reason: DiskUseThresholdExceeded。
Atlas Infiniteクラスターでは、レプリカセットの論理データサイズがクラスターの最大ストレージ制限に近づくと、Atlasは書き込み (write)をブロックしますが、読み取りは引き続き提供します。Atlas Infiniteクラスターのストレージ制限の詳細については、「Atlas Infiniteクラスターのストレージを管理する」を参照してください。
ロード シェディング
Load Sheddingは、クラスターへの影響を制限するために、受信したデータベース操作を可能な限り早期に拒否するIWM保護です。IWMの常時有効な保護とは異なり、Load Sheddingは任意であるため、Atlasがクラスターに適用するかどうかを制御できます。有効にすると、Load Sheddingは、他の保護機能では十分な負荷を軽減できない場合に、持続的な過負荷の間のみ作動します。
IWM の常時稼働保護の一環として、Atlas はクラスター内の各 mongod プロセスでイングレスリクエストレートリミッターを実行します。このレートリミッターは、制御されたレートで操作をプロセスに許可し、このレートよりも速く到着する操作リクエストをそのプロセスのイングレスキューに追加します。
Load Sheddingが有効な場合、Atlasはクラスター内の各mongodプロセスのイングレスキューのサイズを制限します。プロセスのキューがいっぱいになっている間に操作が到着した場合、Atlasはその操作を過負荷エラーで拒否します。これにより、持続的な過負荷時にキューが大きくなりすぎるのを防ぎます。
Load Sheddingが無効の場合、Atlasはクラスター内のどのmongodプロセスでもイングレスキューのサイズを制限せず、レートリミッターの許容レートよりも速く到着する操作を拒否することもありません。持続的な過負荷の間、各mongodプロセスは無制限の数の操作をキューに追加し続けるため、操作の完了に時間がかかります。
クラスターでリアクティブなオートスケーリングが有効になっている場合、Atlas は Load Shedding が拒否した操作の割合を使用して、クラスターをいつ増やすかを決定します。Atlas は、この割合を Atlas メトリクスの 操作レート制限の下で Rejected Operations として報告します。詳細については、「Atlas がクラスター階層をスケーリングする方法」を参照してください。
注意
ロードシェディングは、Search Load Sheddingとは異なります。ロードシェディングは、mongodプロセスでデータベース操作を拒否します。Search Load Sheddingは、mongotプロセスでMongoDB SearchおよびMongoDB Vector Search検索クエリを拒否します。これら2つの保護は独立しているため、一方を構成しても他方には影響しません。より多くを学ぶには、以下を参照してください。
ロードシェディングの設定
Load Shedding は、MongoDB 9.0 以降を実行している M30+ レプリカセットクラスターでのみ利用可能です。デフォルトでは、Atlas は Load Shedding 設定の値を Atlas
Managed に設定します。これにより、Atlas はクラスターの Load Shedding の有効な状態を制御できます。MongoDB 9.0 では、その状態は Disabled です。
重要
有効にすると、Load Sheddingによってクラスターで過負荷エラーが発生する回数が増える可能性があります。これらのエラーの取り扱い方法を学ぶには、Load Sheddingによる過負荷エラーの取り扱いを参照してください。
クラスターで Load Shedding を構成するには、Atlas UI または Atlas Administration API を使用します。
クラスターとバージョンの要件
Intelligent ワークロード マネジメント (IWM) は、MongoDB 9.0 以降を実行しているすべての専有クラスターで有効です。IWM は、無料クラスターまたはフレックス クラスターでは利用できません。
クラスターでIWMが有効な場合、Atlasはクラスターの階層、トポロジー、MongoDBのバージョン、および負荷分散設定に基づいて、IWM保護のサブセットを適用します。次の表は、MongoDB 9.0以降で、Atlasがクラスター階層とトポロジーの各組み合わせに適用する保護を一覧にしたものです。
IWM保護 | M10 および M20 クラスター | M30+ レプリカセットクラスター | M30+ シャーディングされたクラスター |
|---|---|---|---|
イングレスキューイング | No | はい | No |
実行制御の優先順位付け | No | はい | No |
キャッシュの削除とメモリのチューニング | はい | はい | はい |
接続レート制限 | はい | はい | はい |
書き込みブロッキング | はい | はい | はい |
ロード シェディング | No | はい、有効にすると | No |
注意
MongoDB 9.0 の例外バージョンの要件
次の IWM 保護は、バージョン 9.0 以前の MongoDB が実行されているクラスター上で有効です:
書き込み (write) ブロックは、MongoDB 8.0 以降を実行している
M10+クラスターでアクティブになります。MongoDB 8.0 以降のバージョンを実行している
M10+クラスターでは、メモリチューニングが有効です。キャッシュの削除は、以降の MongoDB 8.3.3 または、以降の MongoDB 8.0.28 が実行されている
M10+クラスターで有効です。接続レート制限は、次のMongoDBバージョンを実行している
M10およびM20クラスターでアクティブになります。7.0.237.06800以降および7900.xリリース
8.0.128.06800以降および7900.xリリース
8.1.28.16800以降および7900.xリリース
IWMをモニターする
Atlasには、IWMがクラスターを保護しているタイミングや、Atlasが遅延または拒否した操作を確認できるいくつかのオブザーバビリティサーフェスが用意されています。
IWM関連のアラートを設定および検討するには、アラート条件のドキュメントにあるIntelligent ワークロード マネジメントを参照してください。
Load Sheddingの変更など、IWM関連のイベントを検討するには、「アクティビティフィードを表示する」を参照してください。