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

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

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

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

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

リクエストレート制限

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

バケットは設定されたレートで自動的に補充されます。バケットが最大容量を下回ると、バケットが最大容量に達するまで 1 秒ごとに設定された数のトークンが追加されます。リフィルトークンが到着したときにバケットがいっぱいになると、バケットは破棄されます。バケットは、トークンの最大数を超えて保持することはできません。たとえば、変更しない 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 アクションは、他のカテゴリのいずれかに該当していても、独自のトークンバケットサイズとリフィルレートを受け取ります。

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

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

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

ELBv2 アクション バケット容量 リフィルレート (1 秒あたり)
CreateTrustStore 10 0.2
AddTrustStoreRevocations, DeleteSharedTrustStoreAssociation, DeleteTrustStore, ModifyTrustStore, RemoveTrustStoreRevocations 10 0.2
GetTrustStoreCaCertificatesBundle, GetTrustStoreRevocationContent 20 4
DescribeTrustStoreAssociations, DescribeTrustStoreRevocations, DescribeTrustStores 40 10

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

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

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