Elastic Load Balancing API のリクエストスロットリング - エラスティックロードバランシング

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Elastic Load Balancing API のリクエストスロットリング

Elastic Load Balancing は、リージョンごとに各 AWS アカウントの API リクエストを調整します。これは、サービスのパフォーマンスと可用性を支援するために行われます。スロットリングにより、Elastic Load Balancing API へのリクエストが API リクエストの最大許容上限を超えないことが保証されます。API リクエストは、リクエストを呼び出すか、ユーザーに代わって呼び出されるか ( AWS マネジメントコンソール やサードパーティーアプリケーションなど) にかかわらず、リクエスト制限の対象となります。

Elastic Load Balancing API スロットリング制限を超えると、ThrottlingException エラーコードと Rate exceeded エラーメッセージが表示されます。

スロットリングを適切に処理する準備をすることをお勧めします。詳細については、「タイムアウト、リトライ、ジッターによるバックオフ」を参照してください。高いレベルのスロットリングが発生した場合は、 AWS サポート に連絡して API の使用状況と潜在的なソリューションの評価に役立ててください。各ケースは個別に評価されます。高可用性と予測可能なパフォーマンスを維持するために、システムの安全制限内で制限を引き上げる サポート 可能性があります。

スロットリングの適用方法

Elastic Load Balancing はトークンバケットアルゴリズムを使用して、API スロットリングを実装します。このアルゴリズムでは、アカウントには、特定の数のトークンを保持するバケットがあります。バケット内のトークンの数は、特定の秒におけるスロットリング制限を表します。

Elastic Load Balancing には、2 セットの API アクションが用意されています。ELB API バージョン 2ではロードバランサーとして、Application Load Balancer、Network Load Balancer および Gateway Load Balancer をサポートしています。ELB API バージョン 1 は Classic Load Balancer をサポートしています。各 ELB API バージョンには、独自のバケットとトークンがあります。

Amazon EC2、Amazon ECS、Amazon EC2 Auto Scaling など、ユーザーに代わって Elastic Load Balancing API を呼び出し、独自のアカウントレベルのバケット AWS CloudFormation を持つサービス。これらのサービスは、バケットのトークンを消費しません。

リクエストレート制限

リクエストレートを制限すると、実行する API リクエストの数がスロットリングされます。各リクエストは、バケットから 1 つのトークンが削除されます。たとえば、非変更 API アクションのトークンバケットサイズは 40 トークンです。1 秒あたり最大 40 個の Describe* リクエストを行うことができます。1 秒で 40 個の Describe* リクエストを超えると、スロットルされ、その秒以内の残りのリクエストは失敗します。

バケットは設定されたレートで自動的に補充されます。バケットが最大容量に達していない場合、最大容量に達するまで、設定した数のトークンが毎秒追加されます。リフィルトークンが到着したときにバケットが満杯である場合、リフィルトークンは破棄されます。バケットは最大数を超えてトークンを保持することはできません。例えば、 (非変化 API アクション) のバケットサイズが 40 トークンで、リフィルレートが 1 秒あたり 10 トークンであるとします。1 秒間に 40 個の DescribeLoadBalancers リクエストを行うと、バケットはゼロ (0) トークンまで減らされます。バケットは、最大容量の 40 トークンに達するまで、毎秒 10 トークンが補充されます。つまり、その間にリクエストが行われなかった場合、空のバケットが最大容量に達するまでに 4 秒かかります。

API リクエストを行う前に、バケットが完全にいっぱいになるまで待つ必要はありません。トークンはバケットに追加されるとすぐに使用できます。リフィルトークンをすぐに使用しても、バケットが最大容量に達することはありません。

すべての Elastic Load Balancing API アクションで共有されるアカウントレベルのスロットリング制限があります。アカウントレベルのバケットの容量は 40 トークンで、補充レートは 1 秒あたり 10 リクエストトークンです。

リクエストトークンバケットのサイズとリフィルレート

リクエストレート制限の目的で、API アクションはカテゴリにグループ化されます。各カテゴリには独自の制限があります。

カテゴリ
  • 変異アクション – リソースを作成、変更、または削除する API アクション。このカテゴリには、通常、非変異アクションとして分類されていないすべての API アクションが含まれます。これらのアクションは、非変異 API アクションよりもスロットリング上限が低くなります。

  • 非変異アクション — リソースに関するデータを取得する API アクション。これらの API アクションは通常、API スロットリング上限が最も高くなります。

  • リソース集約型アクション — 完了するのに最も時間がかかり、最も多くのリソースを消費する API アクション。これらのアクションのスロットリング上限は、変異アクションよりもさらに低くなります。これらのアクションは、他の変異アクションとは別にスロットリングされます。

  • 登録アクション — ターゲットを登録または登録解除する API アクション。これらの API アクションは、他の変異アクションとは別にスロットリングされます。

  • 未分類アクション — これらの API アクションは、他のカテゴリのいずれかに該当していても、独自のトークンバケットサイズと補充レートを受け取ります。

次の表は、分類されたリクエストトークンバケットのデフォルトの容量と補充レートを示しています。

Category ELBv2 アクション ELBv1 アクション バケットキャパシティ 補充レート/秒
リソース集約型 CreateLoadBalancer, SetSubnets CreateLoadBalancer, AttachLoadBalancerToSubnets, DetachLoadBalancerFromSubnets, EnableAvailabilityZonesForLoadBalancer, DisableAvailabilityZonesForLoadBalancer 10 0.2
Registration (登録) RegisterTargets, DeregisterTargets RegisterInstancesWithLoadBalancer, DeregisterInstancesFromLoadBalancer 20 4
非変更 DescribeAccountLimits, DescribeCapacityReservation, DescribeListenerAttributes, DescribeListenerCertificates, DescribeListeners, DescribeLoadBalancerAttributes, DescribeLoadBalancers, DescribeRules, DescribeSSLPolicies, DescribeTags, DescribeTargetGroupAttributes, DescribeTargetGroups, DescribeTargetHealth Describe* 40 10
ミューテーション AddListenerCertificates, AddTags, CreateListener, CreateRule, CreateTargetGroup, DeleteListener, DeleteLoadBalancer, DeleteRule, DeleteTargetGroup, ModifyCapacityReservation, ModifyIpPools, ModifyListener, ModifyListenerAttributes, ModifyLoadBalancerAttributes, ModifyRule, ModifyTargetGroup, ModifyTargetGroupAttributes, RemoveListenerCertificates, RemoveTags, SetIpAddressType, SetRulePriorities, SetSecurityGroups AddTags, ApplySecurityGroupsToLoadBalancer, ConfigureHealthCheck, CreateAppCookieStickinessPolicy, CreateLbCookieStickinessPolicy, CreateLoadBalancerListener, CreateLoadBalancerPolicy, Delete*, ModifyLoadBalancerAttributes, RemoveTags, SetLoadBalancer* 20 3

次の表は、ELBv2 の未分類リクエストトークンバケットのデフォルトの容量と補充レートを示しています。

ELBv2 アクション バケットキャパシティ 補充レート/秒
CreateTrustStore 10 0.2
AddTrustStoreRevocations, DeleteSharedTrustStoreAssociation, DeleteTrustStore, ModifyTrustStore, RemoveTrustStoreRevocations 10 0.2
GetResourcePolicy, GetTrustStoreCaCertificatesBundle, GetTrustStoreRevocationContent 20 4
DescribeTrustStoreAssociations, DescribeTrustStoreRevocations, DescribeTrustStores 40 10

小数補充レートは、1 つの完全なトークンを生成するのに数秒かかります。

API リクエストのモニタリング

AWS CloudTrail を使用して、Elastic Load Balancing API リクエストをモニタリングできます。詳細については、「を使用して Elastic Load Balancing の API コールをログに記録する AWS CloudTrail」を参照してください。