AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

ロードシェディングによる過負荷エラーの取り扱い

クラスターがリソースの処理能力を超える受信操作を受信すると、過負荷が発生します。これにより、クラスターに完全な停止時またはほぼ完全な停止時が発生する可能性があります。インテリジェント ワークロード マネジメント (IWM) の機能であるロードシェッディングは、Atlas が長時間の過負荷時に操作を拒否できるようにします。クラスターのロードシェディングを設定するには、インテリジェント ワークロード マネジメントの設定を参照してください。

Load Sheddingが操作を拒否すると、アプリケーションでその操作に対してSystemOverloadedErrorラベルが付いた新しいエラーが表示される場合があります。このエラーは、クラスターが過負荷状態で、操作を破棄していることを示しています。

If you use a backpressure-aware client library, the client library recognizes these errors and retries the ones that are safe to retry. Your application still controls how long to keep retrying and when to shed load. To learn more, see Handle Overload Errors.

SystemOverloadedError ラベル単独では、操作を安全に再試行できるという意味ではありません。オーバーロードエラーが再試行可能かどうかを判定するには、次のラベルを確認します。

  • RetryableError -操作は実行されず、安全に再試行できます

  • NoWritesPerformed - サーバーが書き込み (write) を実行する前に操作を拒否しました

次の例は、Load Sheddingが操作を拒否したときにAtlasが返す過負荷エラーを示しています。

{
"ok": 0.0,
"errmsg": "Request rejected: ingress operation rate limit exceeded",
"code": 463,
"codeName": "IngressOperationRateLimitExceeded",
"errorLabels": ["SystemOverloadedError", "RetryableError", "NoWritesPerformed"]
}

重要

過負荷エラーに RetryableError ラベルが含まれていない場合は、操作が冪等であることを確認し、過負荷を助長しないように待機してから再試行してください。再試行ロジックには、指数バックオフとジッターを使用してください。

バックプレッシャー対応ドライバーとその他のクライアントライブラリは、SystemOverloadedError ラベルで過負荷エラーを自動的に認識し、過負荷のシグナルとして扱います。エラーに RetryableError ラベルなど、再試行を伴う ラベル がある場合、バックプレッシャー対応クライアントライブラリは指数バックオフとジャーナルを使用して操作を自動的に再試行します。

次の表は、バックプレッシャーに対応するクライアントライブラリの初期バージョンを示しています。

クライアント ライブラリ
バックプレッシャーに対応する以前のバージョン

C ドライバー

2.5

C++ ドライバー

4.6

.NET/C# ドライバー

3.11

Go Driver

2.9

Java Sync Driver

5.12

Java Reactive Streams ドライバー

5.12

Kotlin コルーチン ドライバー

5.12

Kotlin Sync ドライバー

5.12

Node.js ドライバー

7.6

PHP ライブラリ

2.5; mongodb PHP 拡張機能 (PHPC) 2.5.0+ が必要です

PyMongo

4.18

Scala ドライバー

5.12

Ruby

2.26

Rust

3.9

Handle overload errors in your application even if you use a backpressure-aware client library. Backpressure-aware client libraries retry operations labeled as retryable, but your application decides how long to keep retrying and when to shed load by abandoning operations that the cluster continues to reject. If you are not using a backpressure-aware client library, also implement the error detection and retry logic yourself.

再試行可能とラベル付けされた過負荷エラーを取り扱うために、指数バックオフを使用したエラー検出と再試行ロジックを実装する例については、次の手順を参照してください。

過負荷エラーを検出し、指数バックオフで再試行するためのユーティリティを実装するには、次の手順に従います。

過負荷エラーが原因で失敗した操作を再試行する場合は、過負荷を助長せず、再試行を成功させる可能性を高めるために、次のガイドラインに従ってください。

  • 再試行回数の制限: 1回の操作につき最大2回まで再試行してください。制限を高くするとエラー率は低下しますが、過負荷時のサーバー負荷は増加します。一方、再試行回数を減らすとサーバー負荷は軽減されますが、エラー率は増加します。

  • 選択的に適用します: このパターンは、レイテンシの影響を受けやすい操作またはビジネスに重要な操作でのみ使用してください。バックグラウンド ワークロードの場合、エラーをログ、より高いレベルで再試行し、遅延を増やします。