すべてのプロダクト
Search
ドキュメントセンター

Serverless App Engine:トラフィック保護

最終更新日:Apr 01, 2026

トラフィックスパイクや応答が遅い下流依存関係により、アプリケーション全体に障害が波及する可能性があります。SAE は Microservices Engine (MSE) のトラフィック保護機能を統合しており、マイクロサービスアプリケーションに対して、速度制限、同時実行数隔離、サーキットブレーカー、ホットスポットパラメーター保護の各ルールを SAE コンソールから一元的に適用できます。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

コストに関する考慮事項

MSE は SAE とは別途課金されます。料金の詳細については、「マイクロサービスガバナンスの課金概要」をご参照ください。

制限事項

トラフィック保護は、2023 年 11 月 8 日以降に作成されたマイクロサービスアプリケーションのみに適用されます。

トラフィック保護タブを開く

  1. SAE コンソールにログインします。左側のナビゲーションウィンドウで、[アプリケーション] > [アプリケーション] を選択します。

  2. 上部のナビゲーションバーでリージョンを選択します。[名前空間] のドロップダウンリストから名前空間を選択し、アプリケーション名をクリックします。

  3. 左側のナビゲーションウィンドウで、[マイクロサービスガバナンス] > [トラフィックガバナンス] を選択し、[トラフィック保護] タブをクリックします。

ルールの構成

すべてのルールタイプは、同一の 3 ステップ式ダイアログワークフローを共有します。

  1. [保護シナリオの選択] — API の種類、トラフィックの方向、およびインターフェイス名を指定します。

  2. [保護ルールの構成] — しきい値と動作を設定します。

  3. [保護動作の構成] — ルールに関連付ける動作(フォールバック応答)を指定します。

ルールを作成した後は、対応するタブから編集または削除できます。

速度制限ルールの作成

速度制限ルールは、秒間クエリ数 (QPS) を監視します。QPS がしきい値に達すると、システムは着信トラフィックを遮断または遅延させることで、トラフィックスパイク時のアプリケーションの安定性を確保します。

  1. [インターフェイスのフロー制御] タブで、[速度制限ルールの追加] をクリックします。

  2. [速度制限保護ルールの追加] ダイアログボックスで、3 つのステップをすべて完了します。

[保護ルールの構成] ステップで、以下のパラメーターを設定します。

パラメーター説明デフォルト
開くかどうかON に切り替えると、ルールが作成直後に即時有効化されます。無効
[スタンドアロン QPS しきい値]ルールをトリガーする QPS 値です。
フロー制御効果ブロックされたリクエストの処理方法です。詳細については、「フロー制御効果の選択」をご参照ください。

フロー制御効果の選択

効果動作使用する場合
即時失敗QPS しきい値を超えたリクエストは即時に拒否されます。応答コンテンツは適応モジュールの構成によって決定されます。バックエンドのキャパシティ保護のために厳格なカットオフが必要な場合。
キュー待ちリクエストは一定のレートで処理され、超過分はキューに積まれます。タイムアウト期間を超えてキューに滞留したリクエストは失敗します。キューのタイムアウトを必ず設定してください。ピークシフト(バーストを破棄せず、遅延させる)を実現したい場合。

同時実行数隔離ルールの作成

同時実行数隔離ルールは、インターフェイスまたは依存関係に対する同時実行スレッド数の上限を設定します。上限に達すると、超過分のリクエストは拒否され、アクティブスレッド数がしきい値を下回るまで待機します。これにより、スレッド枯渇による障害のカスケードを防止できます。

  1. [同時実行数隔離] タブで、[隔離ルールの追加] をクリックします。

  2. [隔離保護ルールの追加] ダイアログボックスで、3 つのステップをすべて完了します。

[保護ルールの構成] ステップで、以下のパラメーターを設定します。

パラメーター説明デフォルト
開くかどうかON に切り替えると、ルールが作成直後に即時有効化されます。無効
同時実行数のしきい値リクエスト処理に許可される最大同時実行スレッド数です。

サーキットブレーカールールの作成

サーキットブレーカールールは、下流依存関係のレスポンスタイム (RT) または異常リクエスト比率を監視します。しきい値を超えると、システムは依存先の下流アプリケーションの優先度を即座に低下させ、サーキットブレーカーの持続時間中は呼び出しません。持続時間が経過した後、サーキットブレーカーは構成済みポリシーに基づいて回復をテストします。

サーキットブレーカールールの作成手順:

  1. [サーキットブレークルール] タブで、[サーキットブレークルールを追加] をクリックします。

  2. [サーキットブレーキングルールの追加] ダイアログボックスで、3 つのステップをすべて完了します。

[保護ルールの構成] ステップで、以下のパラメーターを設定します。

パラメーター説明デフォルト
[統計ウィンドウの持続時間]しきい値評価に使用される時間ウィンドウです。有効範囲:1 秒~120 分。
最小リクエスト数サーキットブレーキングをトリガーするためにウィンドウ内で必要な最小リクエスト数です。この数に満たない場合、しきい値を満たしていてもルールはトリガーされません。
しきい値の種類ルール評価に使用されるメトリックです:遅延呼び出し比率 (%) または 異常比率 (%)
低速呼び出し RT(遅延呼び出し比率のみ)ミリ秒単位の応答時間しきい値です。この値を超えるリクエストは遅延呼び出しとしてカウントされます。
サーキットブレーク比率しきい値サーキットブレーキングをトリガーする遅延または異常呼び出しの割合です。
[サーキットブレーキング持続時間 (秒)][詳細オプションの表示] をクリック)サーキットが開いたままとなる時間です。この期間中、該当リソースへのすべての呼び出しは失敗します。
サーキットブレーカー ポリシー[詳細オプションの表示] をクリック)持続時間が経過した後の回復テスト方法です。詳細については、「サーキットブレーキングポリシーの選択」をご参照ください。単一検出による回復

サーキットブレーキングポリシーの選択

ポリシー動作使用する場合
単一検出による回復サーキットブレーキング持続時間が経過した後、次のリクエストがテストされます。そのリクエストが成功(遅延または異常でない)すれば、サーキットは閉じられます。失敗した場合は、再びサーキットが開きます。依存関係は迅速かつ予測可能に回復します。
段階的回復トラフィックは N 段階の回復フェーズを通じて徐々に再導入されます。各フェーズでは、より大きな割合のリクエスト(T%、2T%、…、100%。ただし T = 100/N)が許可されます。いずれかのフェーズでしきい値を超えると、再びサーキットブレーキングがトリガーされます。[回復フェーズ数] および [各ステップでの最小通過数] を設定します。インシデント発生後に依存関係が不安定であり、徐々にウォームアップする必要がある場合。

段階的回復の例: 回復フェーズ数が 3、各フェーズでの最小通過数が 5 の場合、トラフィックは 33%、67%、100% の割合で導入されます。各フェーズでリクエスト数が 5 に達すると、しきい値チェックが実行されます。いずれかのフェーズで失敗した場合、サーキットは再び開きます。

RPC 向けホットスポットパラメーター保護ルールの作成

RPC 向けホットスポットパラメーター保護は、リソース呼び出し中に最も頻繁にアクセスされるパラメーターを特定し、パラメーター単位で速度制限を適用します。これにより、少数のホットパラメーターが不釣り合いなリソースを消費することを防ぎます。

パラメーターのインデックスは、SphU.entry(xxx, args) 内の位置に対応します。たとえば、SphU.entry(resourceName, EntryType.IN, 1, paramA, paramB) の場合、paramA のインデックスは 0、paramB のインデックスは 1 です。

  1. [ホットスポットパラメーター保護 (RPC)] タブで、[ホットスポットパラメーター保護 (RPC) ルールの追加] をクリックします。

  2. [ホットスポットパラメーター保護 (RPC) ルールの追加] ダイアログボックスで、3 つのステップをすべて完了します。

[保護ルールの構成] ステップで、以下のパラメーターを設定します。

パラメーター説明デフォルト値
パラメーター位置インデックスSphU.entry(xxx, args) 内のホットパラメーターのインデックスです。
統計ディメンションリクエスト数:指定期間内のリクエスト数を制限します。同時実行数:同時実行可能な最大リクエスト数を制限します。
統計サイクル時間測定期間(単位:秒)です。例:サイクル = 10 秒、しきい値 = 5 の場合、各ホットパラメーターに対して 10 秒間に最大 5 回のアクセスが許容されます。
単一マシンしきい値各ホットパラメーターに対する QPS しきい値です。
フローコントロール効果※「統計ディメンション = リクエスト数」の場合に利用可能です※即時失敗 または キュー待ち を選択できます。即時失敗 モードでは、バースト発生時に追加のリクエストを許容するため、バッファリングされたリクエスト数 を設定してください。キュー待ち モードでは、しきい値を超えたリクエストがキューに格納されます。キュー内で待機中のリクエストがタイムアウトした場合、そのリクエストは拒否されますので、適切なタイムアウト値を設定してください。
有効化の切り替えON に設定すると、ルール作成直後に即座に有効化されます。無効

HTTP リクエスト向けホットスポットパラメーター保護ルールの作成

HTTP リクエスト向けホットスポットパラメーター保護は、クライアント IP、ホスト名、HTTP ヘッダー、URL パラメーターなどのリクエスト属性に基づき、値単位で速度制限を適用します。Web サービスに対する細かい制御に使用します。

  1. [ホットスポットパラメーター保護 (HTTP リクエスト)] タブで、[新しいホットスポットパラメーター保護 (HTTP リクエスト)] をクリックします。

  2. [新しいホットスポットパラメーター保護 (HTTP リクエスト)] ダイアログボックスで、3 つのステップをすべて完了します。

[保護ルールの構成] ステップで、以下のパラメーターを設定します。

パラメーター説明デフォルト
[パラメーター属性]追跡対象のリクエスト属性です:[クライアント IP](プロキシ経由時は X-Forwarded-For を使用)、[リモートホスト][ヘッダー](ヘッダー名を指定。マッチングモードをサポート)、[URL パラメーター](パラメーター名を指定。マッチングモードをサポート)。
しきい値の種類ルール評価に使用されるメトリックです。リクエスト数
しきい値QPS しきい値です。サポートされる単位:秒、分、時、日。例:「1 分あたり 10 回」は、各パラメーター値あたり 1 分間に最大 10 回のリクエストを意味します。
開くかどうかON に切り替えると、ルールが作成直後に即時有効化されます。無効
[フロー制御方式][詳細オプションの表示] をクリック)即時失敗:しきい値を超えたリクエストはブロックされ、カスタム動作応答またはデフォルトの HTTP 429 が返されます。キュー待ち:リクエストは一定のレートでキューに積まれ、タイムアウトを超えてキューに滞留したリクエストは即時に拒否されます。このモードを使用する場合は、QPS を 1,000 回/秒以下に設定してください。
バーストサイズ[詳細オプションの表示] をクリック、即時失敗 のみ)トラフィックバースト時に許可される追加リクエスト数です。
[タイムアウト期間][詳細オプションの表示] をクリック、キュー待ち のみ)ミリ秒単位の最大キュー滞留時間です。この時間を超えてキューに滞留したリクエストは拒否されます。

動作の管理

動作とは、ルールがトリガーされた際に返されるフォールバック応答を定義するものです。たとえば、Web インターフェイスが速度制限の上限に達した場合、システムは汎用エラーではなくカスタム HTTP 応答を返すことができます。

動作の作成

  1. [動作管理] タブで、[新しい動作] をクリックします。

  2. [新しい動作] ダイアログボックスでパラメーターを構成し、[新規作成] をクリックします。

Web リソース

パラメーター説明
[動作名]アプリケーション内での固有の名前です。最大 128 文字。テスト動作
[リソースタイプ][Web] を選択します。Web
ウェブスロットリングポリシーデフォルト:[カスタム返却]。HTTP ステータスコード、コンテンツタイプ、応答ボディをカスタマイズできます。カスタム返却
[HTTP ステータスコード]Web 速度制限ポリシー = カスタム返却 の場合に必須です。429
[返却される Content-Type]プレーンテキスト または JSONJSON
返された HTTP テキストルールがトリガーされた際に返される応答ボディです。{"message": "blocked oops"}

RPC リソース

パラメーター説明
動作名アプリケーション内で一意の名前。最大 128 文字。テスト動作
リソースタイプRpc を選択します。Rpc
Rpc 流量制限の処理方法カスタム戻り値:カスタムの応答オブジェクト (JSON) を返します。 カスタム例外:カスタム例外をスローします。
Apache Dubbo バージョン 2.7.0~2.7.3 ではカスタム動作がサポートされていません。これらのバージョンでは、速度制限がトリガーされた際に、java.lang.RuntimeExceptionSentinelBlockedException を含む)が返されます。

戦略 = カスタム返却 の場合:

パラメーター説明
カスタムレスポンスクラス名完全なクラスパス。 Map<K, V>List<T> などのジェネリック型はサポートされていません。com.alibaba.demo.OrderService:getOrder(long)
カスタムレスポンスコンテンツ (JSON 形式)ルールがトリガーされたときに返される JSON レスポンスボディです。{"id": "123", "name": "test"}

戦略 = カスタム例外 の場合:

パラメーター説明
[例外クラス名]例外クラスの完全修飾パスです。java.lang.RuntimeException
例外メッセージテキストルールがトリガーされた際に返される例外メッセージです。"Operation failed"

動作をルールに関連付ける

  1. [トラフィック保護] タブで、対象のルールタイプのタブを開きます。目的のルールを見つけ、[操作] 列の [編集] をクリックします。

  2. [保護シナリオの選択]」および「[保護ルールの設定]」のステップを完了してください。

  3. [保護動作の構成] ステップで、[関連付け動作] のドロップダウンリストから動作を選択するか、[新しい動作] をクリックして新規作成します。

  4. [保存] をクリックします。

デフォルトのフォールバックを使用するには、[デフォルト動作] を選択し、[API タイプ] を未指定のままにしてください。
既に動作が関連付けられているインターフェイスに新しい動作を関連付けると、既存の動作は上書きされます。
[保護シナリオの選択] ステップでAPI タイプが指定されていない場合、デフォルトの動作が自動的に関連付けられます。
[API タイプ] を設定して動作を関連付けた後は、タイプを変更できません。

ユースケース

以下に、一般的なシナリオにおける各ルールタイプの構成例を示します。

シナリオ 1:速度制限によるピークシフト

目的: トラフィックスパイク時にリクエストを破棄せず、一定のレートで処理します。

[速度制限保護ルールの追加] ダイアログボックスで、以下の設定を行います。

  • [スタンドアロン QPS しきい値]:5

  • [フロー制御効果]:キュー待ち

  • [タイムアウト]:5,000 ミリ秒

結果: システムは 200 ミリ秒ごとに 1 件のリクエストを処理し、超過分をキューに積みます。キューに 5,000 ミリ秒以上滞留したリクエストは、デフォルトの速度制限応答で即時に失敗します。

シナリオ 2:同時実行数隔離によるスレッド枯渇の防止

目的: 応答が遅いデータベースクエリを隔離し、アプリケーションのスレッドプールを枯渇させないようにします。

例:SQL クエリは通常 20 ミリ秒で実行され、想定 QPS は 20 です。

[隔離保護ルールの追加] ダイアログボックスで、以下の設定を行います。

  • [インターフェイス名]:SQL クエリを呼び出すインターフェイス

  • [同時実行数しきい値]:10

結果: SQL クエリがデッドロックしたり応答が遅くなったりした場合、Application High Availability Service は超過分のリクエストを拒否し、リクエスト数に関係なく常に 10 スレッドのみが占有されます。クエリが正常化すると、スレッドが解放され、同時実行数がしきい値を下回って自動的にフルキャパシティが復元されます。

シナリオ 3:応答時間が遅い下流呼び出しに対するサーキットブレーカー

目的: 下流のサードパーティサービスの応答時間が劣化した場合、その呼び出しを停止します。

[サーキットブレーキングルールの追加] ダイアログボックスで、以下の設定を行います。

パラメーター
[インターフェイス名]test
[統計ウィンドウの持続時間]1 秒
[最小リクエスト数]10
しきい値タイプ遅延呼び出し比率 (%)
遅い呼び出し応答時間1,000 ミリ秒
サーキットブレイク率のしきい値80%
[サーキットブレーキング持続時間 (秒)]10
回路遮断ポリシー単一検出による回復

結果: 1 秒間のウィンドウ内で、1,000 ミリ秒を超えるリクエストが 80% を超え、かつ少なくとも 10 件のリクエストが行われた場合、サーキットは 10 秒間開きます。10 秒経過後、次のリクエストがテストされます。その応答時間が 1,000 ミリ秒未満であればサーキットは閉じられ、それ以外の場合は再び開きます。

シナリオ 4:高エラー率に対するサーキットブレーカー

目的: 依存関係のエラー率が急増した場合、その呼び出しを停止します。

[サーキットブレーキングルールの追加] ダイアログボックスで、以下の設定を行います。

パラメーター
[インターフェイス名]test
[統計ウィンドウの持続時間]1 秒
最小リクエスト数10
しきい値種別異常比率 (%)
サーキットブレーク率のしきい値80%
[サーキットブレーキング持続時間 (秒)]10
サーキットブレーキングポリシー単一検出による回復

結果: 1 秒間のウィンドウ内で、異常なリクエストが 80% を超え、かつ少なくとも 10 件のリクエストが行われた場合、サーキットは 10 秒間開きます。

シナリオ 5:タイムセール — ホット商品の RPC リクエストをキューに積む

目的: タイムセール時に購入リクエストを破棄せず、キューに積みます。

[ホットスポットパラメーター保護 (RPC) ルールの追加] ダイアログボックスで、以下の設定を行います。

  • [インターフェイス名]:購入 API

  • [統計ディメンション]:リクエスト数

  • [統計サイクル時間]:1 秒;[単一マシンしきい値]:100

  • [フロー制御効果]:キュー待ち

  • [タイムアウト]:30 ミリ秒

結果: この API が 1 秒間に 100 回を超えて呼び出された場合、超過分のリクエストはキューに積まれます。キューに 30 ミリ秒以上滞留したリクエストは即時に失敗します。

シナリオ 6:タイムセール — 注文変更リクエストの同時実行数を制限

目的: 高同時実行の注文変更がデータベースを飽和させることを防ぎます。

[ホットスポットパラメーター保護 (RPC) ルールの追加] ダイアログボックスで、以下の設定を行います。

  • [インターフェイス名]:住所更新 API

  • [統計ディメンション]:同時実行数

  • 統計周期: 1 秒; 単一マシンのしきい値: 100

  • [フロー制御効果]:即時失敗

結果: システムは最大 100 件の同時実行リクエストを許可します。超過分は即時に失敗します。

シナリオ 7:タイムセール — 製品単位で HTTP リクエストを制限

目的: 各製品ページが 1 秒間に受信できるリクエスト数を制限します。

[新しいホットスポットパラメーター保護 (HTTP リクエスト)] ダイアログボックスで、以下の設定を行います。

  • [パラメーター属性]:URL パラメーター;[URL パラメーター名] フィールドに stockId を入力

  • [しきい値]:1 秒あたり 100 回

  • [フロー制御方式]:即時失敗

製品を識別する URL パラメーターを選択します。この例では、stockId が製品 ID パラメーターです。

結果: 各一意の製品 ID(stockId の値)は、1 秒間に最大 100 回のリクエストを受信できます。超過分はカスタム動作応答で拒否されます。

シナリオ 8:悪意あるリクエストの防止

目的: プロモーション期間中のスクレイピングや乱用から保護するために、ソース IP 単位でリクエストをレート制限します。

[新しいホットスポットパラメーター保護 (HTTP リクエスト)] ダイアログボックスで、以下の設定を行います。

  • [パラメーター属性]:クライアント IP

  • [しきい値タイプ]:リクエスト数(デフォルト)

  • [しきい値]:1 秒あたり 100 回

  • [フロー制御方式]:キュー待ち

  • [タイムアウト期間]:30 ミリ秒

  • [有効化]:ON

結果: 各 IP アドレスは 10 ミリ秒ごとに 1 回のリクエストを許可されます。超過分はキューに積まれます。キューに 30 ミリ秒以上滞留したリクエストは即時に失敗します。