スロットリングポリシーは、トークン消費量、リクエスト数、同時実行数に基づいて LLM API へのトラフィックを制御します。ルールは、コンシューマー、リクエストヘッダー、クエリパラメーター、クッキー、クライアント IP、またはモデル名によって設定できます。グローバル制限は、フォールバックとして API 全体を過負荷や不正使用から保護します。
機能
リソースの過負荷防止:コンシューマー、ヘッダー、クエリパラメーター、Cookie、クライアント IP、またはモデル名ごとにリクエストを制限して、過負荷を防止します。パフォーマンスを向上させるには、キャッシング ポリシーと組み合わせます。
動的トラフィック制御:スロットリングを秒、分、時間、または日単位で適用し、高い同時実行性の下でも安定性を維持します。
複数のマッチングルール:ルールのターゲットを柔軟に指定できるよう、完全一致、前方一致、正規表現一致、任意一致をサポートします。
複数のスロットリングモード:トークン消費、リクエスト数、または同時実行数に基づいてスロットリングします。
きめ細かいモデル制御:高コストのリソースを保護するため、モデル名ごとに異なるしきい値を設定します。
グローバル制限:トークン消費、リクエスト数、同時実行数の合計に対して、API 全体のフォールバック制限を適用します。
悪意のある攻撃の防止:特定のコンシューマー、ヘッダー、クエリパラメーター、Cookie、またはクライアント IP をスロットリングして、クローラーと自動化された不正使用をブロックします。
ユースケース
高同時実行シナリオ:E コマースのプロモーション期間中に、単位時間あたりのトークン消費量を制限して、悪意のある高頻度な呼び出しを防ぎ、安定性と公平性を確保します。
AI サービスの呼び出し:LLM API への呼び出しをスロットリングして、トラフィックバーストによるサービスの低下やシステムクラッシュを防ぎます。
マルチテナントシステム:テナントごとに個別のクォータを割り当てて、公平性とリソースの隔離を確保します。
きめ細かいモデル制御:モデルごとの使用制限 (例:
qwen-maxとqwen-plusに異なるクォータ) を設定して、高コストのリソースを保護します。グローバルなトラフィック保護:API 全体の合計トークン消費量、リクエスト数、および同時実行数を制限します。
悪意のある攻撃からの保護:クローラー、DDoS 攻撃、API の不正使用から防御します。
手順
AI Gateway コンソール の [インスタンス] ページに移動します。トップメニューバーで、ターゲットインスタンスが所在するリージョンを選択し、ターゲットの [インスタンス ID] をクリックします。
左側メニューで [Model API] をクリックし、ターゲットの [API 名] をクリックして [API 詳細] ページに移動します。
[ポリシーとプラグイン] をクリックし、[スロットリング] スイッチをオンにして関連パラメーターを設定します。
注意 1 つのリクエストは、同時に最大 10 個のルールに一致することがあります。
スロットリングポリシー
各ルールは、[条件]、[スロットリングルール]、[タイムウィンドウ]、[制限]、および [制限単位] で構成されます。ルールはドラッグして並べ替えることができます。[追加] をクリックして新しいルールを作成します。
パラメーター | 説明 |
スロットリング | スロットリングポリシーをオンまたはオフにします。デフォルトではオフです。 |
条件 | スロットリングのディメンション。オプション:コンシューマー別、リクエストヘッダー別、リクエストクエリ別、リクエスト Cookie 別、クライアント IP 別、モデル別。 |
スロットリングルール | 選択した条件に応じて、マッチングルール、パラメーター名、および一致する内容を入力します。各ディメンションについては、以下で説明します。 |
時間枠 | スロットリングの時間枠:毎秒、毎分、毎時、または毎日。 |
制限 | スロットリングのしきい値。 |
制限単位 | 測定単位:トークン、リクエスト数、または 同時実行数。 |
コンシューマー別
コンシューマー ID に基づいてリクエストをスロットリングします。マルチテナントシステムに最適です。
フォーム項目:条件 (コンシューマー別) → マッチングルール (完全一致/前方一致/正規表現/任意の一致) → コンシューマー選択 → 時間枠 → 制限 + 制限単位
コンシューマー選択:既存のコンシューマーから選択するか、[コンシューマーの作成] をクリックして追加します。
任意の一致を選択した場合、特定のコンシューマーは必要ありません。例:任意のコンシューマーを 1 分あたり 1,000 トークンに制限します。
重要 コンシューマー別のスロットリングを設定するには、まず コンシューマー認証 を有効にする必要があります。
リクエストヘッダー別
リクエストヘッダーの指定のフィールドに基づいてリクエストをスロットリングします。
フォーム項目:条件 (リクエストヘッダー別) → パラメーター名 (ヘッダーフィールド名) → マッチングルール (完全一致/前方一致/正規表現/任意の一致) → 一致する内容 → 時間枠 → 制限 + 制限単位
パラメーター名:必須。一致させるヘッダーフィールド名を入力します。
一致する内容:
任意の一致を選択した場合、このフィールドは必須ではありません。例:ヘッダー
x-user-levelの値がbetaであるリクエストに対して、1 分あたり 100 トークンの制限を設定します。
リクエストクエリ別
リクエスト URL のクエリパラメーターに基づいてリクエストをスロットリングします。
フォーム項目:条件 (リクエストクエリ別) → パラメーター名 (クエリパラメーター名) → マッチングルール (完全一致/前方一致/正規表現/任意の一致) → 一致する内容 → 時間枠 → 制限 + 制限単位
パラメーター名:必須。一致させるクエリパラメーター名を入力します。
一致する内容:
任意の一致を選択した場合、このフィールドは必須ではありません。例:クエリパラメーターが
user_id=1のリクエストに対して、1 分あたり 100 トークンの制限を設定します。
リクエスト Cookie 別
リクエスト Cookie の指定のフィールドに基づいてリクエストをスロットリングします。
フォーム項目:条件 (リクエスト Cookie 別) → パラメーター名 (Cookie フィールド名) → マッチングルール (完全一致/前方一致/正規表現/任意の一致) → 一致する内容 → 時間枠 → 制限 + 制限単位
パラメーター名:必須。一致させる Cookie フィールド名を入力します。
一致する内容:
任意の一致を選択した場合、このフィールドは必須ではありません。例:特定の識別子を持つ Cookie を含むリクエストに対して、1 分あたり 100 トークンの制限を設定します。
クライアント IP 別
クライアント IP に基づいてリクエストをスロットリングします。個別の IP と IP 範囲の両方をサポートします。
フォーム項目:条件 (クライアント IP 別) → IP アドレス → 制限 + 制限単位
IP アドレス:IP アドレス (例:
192.168.1.1) または CIDR ブロック (例:192.168.1.0/24) を入力します。すべてのクライアント IP に一致させるには、0.0.0.0/0を入力します。例:各クライアント IP の最大同時実行数を 50 に設定します。
注意 クライアント IP 別のスロットリングは設定が簡素化されており、マッチングルールや時間枠を選択する必要はありません。
モデル別
特定のモデル名に対して個別のスロットリングしきい値を設定します。複数のモデルを使用するサービスに適しています。
フォーム項目:条件 (モデル別) → マッチングルール (完全一致に固定) → モデル名 → 制限 + 制限単位
モデル名:必須。スロットリング対象のモデルの名前を入力します。
制限単位:トークン、リクエスト数、および 同時実行数 をサポートします。
例:
qwen-maxモデルに対して、1 分あたり 500 トークンの制限と最大同時実行数 10 の制限を設定します。
注意 モデル別のスロットリングは常に完全一致を使用します。前方一致や正規表現など、より柔軟なモデルマッチングが必要な場合は、「リクエストヘッダー別」条件を使用し、パラメーター名を手動で x-higress-llm-model として指定します。グローバル制限
グローバル制限は、条件に基づくルールとは独立して API 全体に適用される フォールバックポリシー です。
有効にするには:[グローバル制限] セクションで、[有効化] チェックボックスを選択します。
フォーム項目:時間枠 (毎秒/毎分/毎時/毎日) → 制限 + 制限単位 (トークン/リクエスト数/同時実行数)
複数のルールを追加:[追加] をクリックして、スロットリングモードが異なる複数のグローバル制限ルールを作成します。
例:API 全体に対して、1 分あたり最大 10,000 トークン、1 分あたり 100 リクエスト、および最大同時実行数 20 を設定します。
注意 グローバル制限は、標準ルールを補完するフォールバックポリシーであり、それらと同時に使用できます。トラフィックがいずれかのルールに一致した場合にスロットリングがトリガーされます。
設定を確認し、[保存] をクリックします。
マッチングルール
コンシューマー別、リクエストヘッダー別、リクエストクエリ別、およびリクエスト Cookie 別の条件は、以下の 4 つの マッチングルール に対応しています。優先度: 完全一致 > 前方一致 > 正規表現マッチ > 任意マッチ。
マッチングルール | 説明 | 例 |
完全一致 | 値が完全に一致する必要があります。 | ヘッダー |
前方一致 | 値が指定されたプレフィックスで始まる必要があります。 | ヘッダー |
正規表現マッチ | 値が指定された正規表現と一致する必要があります。 | ヘッダー |
任意マッチ | 指定されたディメンションの任意の値と一致します。一致する内容の指定は不要です。 | 任意のコンシューマーに適用されます。 |
注意 複数のルールを設定した場合、リクエストがいずれかのルールに一致すると、スロットリングが適用されます。クライアント IP 別およびモデル別の条件は、固定のマッチング方法を使用するため、手動でルールを選択する必要はありません。
制限単位とモード
各スロットリングルールについて、異なるメータリング方式に対応する 制限単位 を選択します:
制限単位 | 説明 | 適用条件 |
トークン | 消費されたインバウンドおよびアウトバウンドのトークンの合計を測定します。 | すべての条件 |
リクエスト数 | リクエストの総数を測定します。 | すべての条件 |
同時実行数 | 同時リクエストの数を測定します。 | すべての条件 |
スロットリングポリシーは、制限単位と組み合わせて使用する、以下の タイムウィンドウ をサポートします:
タイムウィンドウ | トークンスロットリング | リクエスト数スロットリング | 同時実行数スロットリング |
毎秒 | 1 秒あたりの最大トークン数。 | 1 秒あたりの最大リクエスト数。 | — |
毎分 | 1 分あたりの最大トークン数。 | 1 分あたりの最大リクエスト数。 | — |
毎時 | 1 時間あたりの最大トークン数。 | 1 時間あたりの最大リクエスト数。 | — |
毎日 | 1 日あたりの最大トークン数。 | 1 日あたりの最大リクエスト数。 | — |
(タイムウィンドウなし) | — | — | 最大同時実行数。 |
タイムウィンドウのレート制限では、カウントのために特定の有効期間 (TTL) を持つ固定タイムウィンドウを使用します。この方式では、レート制限ディメンションと一致する値の各組み合わせが、独立したレート制限キーに対応します。ウィンドウのタイマーは、そのキーに対して最初の有効なデータが記録されたときに開始します。このウィンドウは、1:00 から 2:00 のような自然な時間境界に基づいて分割されるものではなく、スライディングウィンドウでもありません。ウィンドウは、有効期限が切れると自動的にリセットされます。後続のリクエストは、現在のウィンドウの有効期限を更新しません。例えば、1 時間ごとのレート制限を持つキーの最初のデータが 01:23:10 に記録された場合、そのウィンドウは 02:00:00 ではなく、およそ 02:23:10 にリセットされます。
注意 同時実行数スロットリングにはタイムウィンドウは必要ありません。最大同時実行数を直接設定できます。
設定例
例 1:コンシューマーのトークンと IP の同時実行数によるスロットリング
2 つのルールを設定します。任意のコンシューマーを 1 分あたり 1,000 トークンに制限し、各クライアント IP の最大同時実行数を 50 に設定します。
番号 | 条件 | マッチングルール | パラメーター名/一致する内容 | タイムウィンドウ | 制限値 | 制限単位 |
1 | コンシューマー単位 | 任意一致 | — | 毎分 | 1000 | トークン |
2 | クライアント IP 単位 | — | 0.0.0.0/0 | — | 50 | 同時実行数 |
例 2:リクエストヘッダーによるスロットリング
ヘッダーの値ごとに異なるスロットリングルールを設定します。
番号 | 条件 | パラメーター名 | マッチングルール | 一致する内容 | タイムウィンドウ | 制限値 | 制限単位 |
1 | リクエストヘッダー単位 | x-user-level | 完全一致 | beta | 毎分 | 100 | トークン |
2 | リクエストヘッダー単位 | x-user-level | 前方一致 | vip | 毎時 | 5000 | トークン |
3 | リクエストヘッダー単位 | x-app-id | 任意一致 | — | 毎分 | 50 | リクエスト数 |
例 3:モデル名による制限
モデルごとに異なる制限を設定します。Qwen-Max を 1 分あたり 500 トークン、最大同時実行数を 10 に制限し、Qwen-Plus を 1 分あたり 2,000 トークンに制限します。
番号 | 条件 | マッチングルール | モデル名 | タイムウィンドウ | 制限値 | 制限単位 |
1 | モデル単位 | 完全一致 | Qwen-Max | 毎分 | 500 | トークン |
2 | モデル単位 | 完全一致 | Qwen-Plus | 毎分 | 2000 | トークン |
3 | モデル単位 | 完全一致 | Qwen-Max | — | 10 | 同時実行数 |
例 4:グローバル制限とコンシューマー制限の組み合わせ
コンシューマー単位の制限に加えて、フォールバックポリシーとしてグローバル制限を有効にします。
スロットリングポリシー (標準ルール):
番号 | 条件 | マッチングルール | タイムウィンドウ | 制限値 | 制限単位 |
1 | コンシューマー単位 | 任意一致 | 毎分 | 1000 | トークン |
グローバル制限 (有効化されている場合):
番号 | タイムウィンドウ | 制限値 | 制限単位 |
1 | 毎分 | 10000 | トークン |
2 | 毎分 | 100 | リクエスト数 |
3 | — | 20 | 同時実行数 |
注意 グローバル制限は、標準ルールを補完するフォールバックポリシーです。個別に有効化して設定する必要があります。
例 5:混合多次元ルール
さまざまな条件に基づいてスロットリングルールを同時に設定します。
番号 | 条件 | パラメーター名 | マッチングルール | 一致する内容/IP/モデル名 | タイムウィンドウ | 制限値 | 制限単位 |
1 | コンシューマー単位 | — | 完全一致 | consumer-001 | 毎分 | 500 | トークン |
2 | リクエストヘッダー単位 | x-user-level | 前方一致 | vip | 毎時 | 10000 | トークン |
3 | リクエストクエリ単位 | user_id | 正規表現一致 | ^[0-9]+$ | 毎分 | 200 | リクエスト数 |
4 | リクエスト Cookie 単位 | セッション | 任意一致 | — | 毎分 | 100 | リクエスト数 |
5 | クライアント IP 単位 | — | — | 192.168.1.0/24 | — | 30 | 同時実行数 |
6 | モデル単位 | — | 完全一致 | Qwen-Max | 毎分 | 500 | トークン |
よくある質問
Q:スロットリングルールは最大でいくつ設定できますか?
A:1 つのリクエストが同時に一致できるルールは最大 10 個です。必要に応じてディメンション間でルールを組み合わせることができますが、ルールが少ないほどパフォーマンスが向上します。
Q:複数のルールはどのように相互作用しますか?
A:ルールでは OR ロジックが使用され、いずれかのルールに一致するとスロットリングがトリガーされます。同じ条件と一致キーを持つルールは、1 つのルールグループにマージされます。
Q:グローバル制限と標準スロットリングルールを同時に使用できますか?
A:はい。グローバル制限は、キーを区別せずに API 全体に適用されるフォールバックとして機能し、標準ルールはディメンションごとにきめ細かい制御を実現します。いずれかの制限を超えると、スロットリングがトリガーされます。
Q:モデルによるスロットリングとリクエストヘッダーによるスロットリングの違いは何ですか?
A: モデルによるスロットリングは、x-higress-llm-model ヘッダーでの完全一致に自動的に変換されます。前方一致または正規表現マッチングの場合は、「リクエストヘッダーによる」を使用し、パラメーター名に x-higress-llm-model を指定します。
Q:トークン、リクエスト数、同時実行数の各制限を組み合わせることはできますか?
A:はい。同じ条件に対して、異なる制限単位を持つ複数のルールを追加できます (例:1 つのモデルに対して毎分トークン制限と最大同時実行数制限を設定)。これらは独立してカウントされ、いずれかの制限に達するとスロットリングがトリガーされます。
Q:クライアント IP によるスロットリングでは、一致ルールとタイムウィンドウのオプションがないのはなぜですか?
A: クライアント IP のスロットリングは簡素化されています。IP アドレスまたは範囲を入力すると、システムが自動的に照合を行います。すべてのクライアント IP に制限を適用するには、0.0.0.0/0 を入力します。
Q:ルールの順序はスロットリングの動作に影響しますか?
A: ルールは、ドラッグアンドドロップでの並べ替えに対応しています。ただし、ルールは OR ロジック (いずれかのルールに一致するとスロットリングが作動する) を使用するため、順序は動作に影響しません。
Q:スロットリング設定の更新が反映されるまでにどのくらい時間がかかりますか?
A:システムが新しいルールをゲートウェイデータプレーンにプッシュした後、通常は数秒以内に変更が反映されます。
Q:分散アーキテクチャでのスロットリングの精度はどの程度ですか?
A:分散システムでは、スロットリングのカウントにわずかな偏差が生じる可能性があります。実際に許可されるリクエスト数は、リクエストの量、レート、バックエンドレイテンシーに応じて、設定された制限値と異なる場合があります。