コンカレンシーを制限する
適用対象: すべての API Management レベル
limit-concurrency
ポリシーは、含まれているポリシーがいずれかの時点で指定された数を超える要求によって実行されないようにします。 その数を超えると、新しい要求は 429
Too Many Requests (要求が多すぎます) のステータス コードですぐに失敗します。
注意事項
スロットリングのアーキテクチャは分散型の性質のため、レートの制限は完全に正確ではありません。 許可される要求の構成された数と実際の数の差異は、要求のボリュームとレート、バックエンドの待ち時間、およびその他の要因によって異なります。
Note
ポリシーの要素と子要素を、ポリシー ステートメントで指定された順序で設定します。 API Management ポリシーを設定または編集する方法について説明します。
ポリシー ステートメント
<limit-concurrency key="expression" max-count="number">
<!— nested policy statements -->
</limit-concurrency>
属性
属性 | 説明 | 必要 | Default |
---|---|---|---|
key | 文字列。 コンカレンシー スコープを指定します。 複数のポリシーで共有できます。 ポリシー式を使用できます。 | はい | 該当なし |
max-count | 整数。 ポリシーに入力できる要求の最大数を指定します。 ポリシー式は使用できません。 | はい | 該当なし |
使用法
- ポリシー セクション: inbound、outbound、backend、on-error
- ポリシー スコープ: グローバル、ワークスペース、製品、API、操作
- ゲートウェイ: クラシック、v2、従量課金、セルフホステッド、ワークスペース
使用上の注意
- リージョンに複数の容量ユニットがデプロイされている場合、API Management によって適用される要求の最大数は少なくなります。
例
次の例は、コンテキスト変数の値に基づいてバックエンドに転送される要求の数を制限する方法を示しています。
<policies>
<inbound>…</inbound>
<backend>
<limit-concurrency key="@((string)context.Variables["connectionId"])" max-count="3">
<forward-request timeout="120"/>
</limit-concurrency>
</backend>
<outbound>…</outbound>
</policies>
関連ポリシー
関連するコンテンツ
ポリシーに対する処理の詳細については、次のトピックを参照してください。
- チュートリアル:API を変換および保護する
- ポリシー ステートメントとその設定の一覧に関するポリシー リファレンス
- ポリシー式
- ポリシーの設定または編集
- ポリシー構成を再利用する
- ポリシー スニペットのリポジトリ
- Azure で Microsoft Copilot を使用してポリシーを作成する