Atlas がクラスターのプライマリノードが書込みブロック ポリシーしきい値 を超えていることを識別した場合、ディスク使用率がアンブロッキングしきい値を下回るまで、Atlas はクラスターへの書込みをブロックします。MongoDB はクラスターへの書込み (write) を受け取ると、データを一括でディスクにフラッシュするため、ディスク使用率が大幅に上昇する可能性があります。プライマリノードのディスク容量が不足すると、特にディスクの枯渇がすべてのレプリカセットノードで累積する場合、クラスターのダウンタイムが発生する可能性があります。
このシナリオを防ぐために、Atlas はクラスターのプライマリノードのディスクがクリティカルな書込みブロックポリシーのしきい値を超えていることを確認すると、Atlas はクラスターのプライマリノードへの書込みをブロックします。Atlas は、ディスク使用率が非ブロッキングしきい値を下回るまで、書込みをブロックし続けます。
プライマリノードで書込み (write) ブロック動作を有効にすることで、Atlas は次の処理を実行します。
プライマリノードのディスク容量が不足し、クラスターが使用できなくなるのを防ぎます。
書込み (write) 量が急増した場合に、最大ストレージ使用率に近い状態で動作するクラスターが読み取りの可用性を維持できるようにします。
書込みブロックとインテリジェントなワークロード管理
クラスターの書込みブロック動作は、 MongoDB Atlasの インテリジェント ワークロード マネジメント(IWM) の構成要素であり、IWM は、リアルタイムのワークロードモニタリングと自動予防手段を有効にして、負荷下で高可用性を維持する 動的リソースマネージャー です。
書込み (write) ブロックに関する考慮事項
書込み (write) ブロックの動作には、次の考慮事項があります。
Atlas は現在、 MongoDB 8.0+を実行中専用クラスター上のレプリカセット(シャーディングされていないクラスター)のプライマリノードへの書込みをブロックしています。
Atlas は、 無料クラスターと Flex クラスターへの書込みをブロックしません。
Atlas はプライマリノードのみのディスク使用率を監視します。
Atlas は、セカンダリ、読み取り専用、検索、または分析ノード上のディスク使用率を監視しません。
Atlas によるプライマリ ノードへの書込みのブロック方法
書込みをブロックするために、Atlas は次のプロセスを使用します。
プライマリ ノードの空きディスク容量が 書込みブロック ポリシーのしきい値 を超えると、Atlas は プライマリノードへの書込みをブロックします。
MongoDBデータベース が書き込みを受け入れていない場合でも、クラスターは引き続き読み取りを利用できます。プライマリ ノードと セカンダリ ノードから通常どおり読み取りができます。
Atlas が書込みをブロックすると、次のアラートが送信されます :
Writes have been blocked on your cluster due to critically low disk space
。アクティビティフィードはこのアラートを反映します。Atlas UIのクラスター ページの上部には、次の内容を含むバナーが表示されます。
"To maintain read availability during critically high disk utilization, Atlas has blocked writes to the following clusters: <clusterName>. Increase disk space or enable storage auto-scaling to unblock writes."
ディスクの空き容量が 50% を超えてブロッキングしきい値を超えると、Atlas は プライマリノードへの書込みのブロックを解除します。Atlas が書込みのブロックを解除すると、次のアラートが届きます :
Writes have been unblocked on your cluster
。次に、アクティビティフィードにこのアラートを反映します。これ以上のアクションは必要ありません。将来書込みブロック動作を回避するには、クラスターストレージを増やすことを検討してください。
クラスターのディスク サイズを手動で増やすか、ストレージのオートスケーリングを有効にする場合、Atlas は新しいディスク サイズに基づいて書込み (write) ブロックのしきい値を自動的に調整します。
書込み (write) ブロックの防止
書込みブロック動作の発生を防ぎ、クラスターを Atlas 書込みブロック ポリシーのしきい値 を下回るようにするには、次の操作を実行することをお勧めします。
ストレージのオートスケーリング を有効にすることで、ディスク使用率が 90% を超えるとクラスターストレージが自動的にスケーリングされ、一貫したワークロードの可用性とパフォーマンスが確保されます。
Atlas UIでストレージのオートスケーリングを有効にするには、Cluster Tier メニューに移動し、Auto-scale セクションの Storage Scaling チェックボックスをオンにします。
Atlas UIで作成するすべての新しいクラスターに対して、Atlas はデフォルトでストレージのオートスケーリングを有効にします。
If you APIを使用してクラスターを作成する と、クラスターのオートスケーリングはデフォルトでは選択されず、 1 つのプロジェクトで 1 つのクラスターを更新 エンドポイントの
autoScaling
オブジェクトのオプションを使用して、明示的に有効にする必要があります。
ストレージのオートスケーリングをオプトアウトすることを選択し、ディスク使用率が 90% に近い場合は、Atlas がクラスターで書込みブロック動作を有効にする前に、既存のディスク領域を解放できます。
未使用のデータを排除してディスク領域を解放します。インデックスを削除する か、 コレクション または 個々の ドキュメントを削除します。
書込み (write) ブロック ポリシーのしきい値パラメーター
Atlas は、書込み量が多いディスク使用率のシナリオに対応するために、次の書込みブロックしきい値を使用します。
ディスクサイズ < 20 GB | Atlas は、空きディスク容量が 600 MB を下回ると、書込みをブロックします。Atlas は、ディスク容量が 900 MB を超えると書込みのブロックを解除します。 |
ディスク サイズ < 1.25TB | Atlas は、空きディスク容量が合計ディスク サイズの 4% を下回ると、書込みをブロックします。Atlas は、ディスク容量が合計ディスク サイズの 6% を超えると書込みのブロックを解除します。 |
ディスク サイズ > 1.25TB | Atlas は、空きディスク容量が 50 GBを下回ると、書込みをブロックします。Atlas は、空きディスク容量が 75 GBを超えると書込みのブロックを解除します。 |
しきい値は構成できません。オートスケーリングによってディスク サイズが増加した場合、またはディスク サイズを手動で増やした場合、Atlas はクラスターのディスク サイズに基づいてしきい値を自動的に調整します。
クラスターで書込みブロック動作がアクティブになると、次の操作を行います。
書込みブロックとストレージのオートスケーリング
Atlas は、プライマリノードの空きディスク容量が合計ディスク サイズの約 96% に達した場合に書き込みをブロックし、書込みブロック ポリシーのしきい値に小ディスクと大容量のディスクの警告を発します。
比較すると、ディスク使用率が合計ディスク サイズの 90% に達したときにオートスケーリングがトリガーされます。つまり、次のことを意味します。
オートスケーリングを有効にすると、 書込みブロック動作 が有効になる前にクラスターが増やすアップされる可能性があります。
オートスケーリングを無効にする場合は、ディスク使用率を監視し、書込みブロック動作が有効にならないようにアクションを実行する必要があります。
書込み (write) ブロックのトラブルシューティング
Atlas がクラスターへの書込みをブロックすると、次のアクションが発生します。
Atlas UIのクラスター ページの上部には、書込みがブロックされたことを示すバナーが表示されます。「 Atlas がプライマリ ノードへの書込みをブロックする方法 」を参照してください。
Atlas は クラスターストレージを増やす ことで解決できる書込みブロック アラートを発行します。「 ストレージの問題の修正 」も参照してください。
プロジェクトのアクティビティ フィードは、これらのアラートを反映します。
Atlas ログでは、次のような
MongoServerError
が返されます:User writes blocked, reason: DiskUseThresholdExceeded
serverStatus コマンドの
userWriteBlockMode
パラメータは、クラスターの現在の書込みブロック ステータスを反映します。
ブロック解除書込み
Atlas は、空きディスク容量がブロッキングしきい値を超えて 50% 増加すると、書込みのブロックを解除します。書込み (write) のブロックを解除するための追加のバッファにより、次のことが保証されます。
Atlas では、書込みブロック動作が連続して有効化および無効化されることはありません。
クラスターは、書込み (write) を再び開始しても、正常な状態を維持します。
正確なパラメータについては、書込み (write) ブロック ポリシーのしきい値を参照してください。