Simple Message Queue (formerly MNS) は、スロットリングのしきい値を超えたリクエストに対してスロットリングポリシーを適用し、基盤リソースへの過度な負荷を防ぎます。スロットリングポリシーを理解することで、メッセージの送受信頻度を適切に計画し、スロットリング発生時に適切な対応を取ることができます。
スロットリングの挙動
トラフィックがスロットリングのしきい値に近づくか、または達した場合、サーバーはリアルタイムのリソース使用状況に基づいて、スロットリングのしきい値を弾力的に自動調整します。ほとんどのシナリオでは、これによりユーザーが気づくことなく、より高い同時リクエストに動的に対応します。一時的なスロットリングがトリガーされた場合 (例:トラフィックの急増やクラスターリソースのボトルネック) 、システムは自動スケールアウトの完了後、トラフィック処理能力を回復し、同時にスロットリングのしきい値を引き上げます。
スロットリングがトリガーされると、システムはバックプレッシャーメカニズムを起動します。しきい値を超えたリクエストをサーバー上で一時的に保持し、その後 429 (TooManyRequests) エラーを返します。保持時間はサーバーがリアルタイムの負荷に基づいて動的に調整し、通常は 10~500 ミリ秒、最大で 5 秒です。これにより、システムが過負荷になることを防ぎ、全体的なパフォーマンスと安定性への影響を回避します。
エラーコード
スロットリングポリシーがトリガーされると、Simple Message Queue (formerly MNS) サーバーは次のエラーコード情報を返します。
|
HTTPS ステータスコード |
エラーコード |
エラーメッセージ |
|
429 |
TooManyRequests |
The request is denied by cluster flow limiter for too many requests. |
スロットリングのしきい値
キュー消費モードにおける異常な消費のスロットリングポリシー
スタンダードキューの消費パターンでは、クライアントはメッセージを正常に処理した後、サーバーにメッセージ削除リクエストを送信する必要があります。クライアントが 「メッセージを受信しても削除リクエストを送信しない」 という非標準的な動作を繰り返し示す場合、システムはこれを異常な消費と判断し、システムの安定性を確保するためにスロットリングメカニズムをトリガーします。スロットリングが適用されると、クライアントが新しいメッセージを受信する速度は大幅に低下します。
次の条件の いずれか を満たすと、スロットリングがトリガーされます。
-
期間:異常な消費が 30 分以上継続する場合。
-
メッセージ数:受信されたが削除されていないメッセージの累積数が 5,000 に達する場合。
-
トラフィックレート:受信されたが削除されていないメッセージの瞬間レートが 1,000 TPS を超える場合。
高トラフィックリクエストのスロットリングポリシー
Alibaba Cloud アカウントごと、リージョンごとのデフォルトのスロットリングのしきい値は 20,000 TPS です。トラフィックが 20,000 TPS を超える場合は、Quota Center コンソール にログインして、リージョンごとの最大 TPS の引き上げを申請してください。詳細な手順については、「クォータの引き上げ申請を送信する」をご参照ください。
リクエスト数のルール:
-
各 API 呼び出しを 1 つのリクエストとしてカウントします。
-
バッチ送信シナリオにおける TPS の計算:キューに対して BatchSendMessage API を呼び出す場合、BatchSendMessage TPS = 1 秒あたりの実際の BatchSendMessage リクエスト数 × リクエストあたりのメッセージ数となります。たとえば、BatchSendMessage が 1 秒あたり 100 回呼び出され、各呼び出しに 10 個のメッセージが含まれている場合、単一キューにおける TPS は 100 × 10 = 1,000 となります。
-
バッチ消費シナリオにおける TPS の計算:キューに対して BatchReceiveMessage API を呼び出す場合、BatchReceiveMessage TPS = 1 秒あたりの実際の BatchReceiveMessage リクエスト数 (バッチあたりのメッセージ数とは無関係) となります。たとえば、BatchReceiveMessage が 1 秒あたり 100 回呼び出され、各呼び出しに 10 個のメッセージが含まれている場合、単一キューにおける TPS は 100 となります。
スロットリングの影響の回避
スロットリングポリシーがビジネスに与える影響を回避するには、次の 2 点にご注意ください。
-
トラフィックを慎重に計画し、ピークトラフィックを事前に連絡する:大規模なトラフィック増加が予想され、TPS が Quota Center コンソール で申請可能な最大値を超える場合は、チケットを送信 してテクニカルサポートに連絡し、より多くのリソースを予約してスロットリングを回避してください。
-
モニタリングとアラート:Simple Message Queue (formerly MNS) と連携してアラートルールを作成することを推奨します。CloudMonitor コンソール ([CloudMonitor コンソール] > [クラウドサービス監視] > [Message Service MNS]) で各キューまたはトピックのリアルタイム TPS 使用状況を確認し、スロットリングのしきい値に近づいていないか監視してください。