DescribeMetricLast API または DescribeMetricList API を呼び出す際に Throttling.User または Request was denied due to user flow control エラーが発生した場合は、リクエストがスロットリングされています。ここでは、スロットリングが発生する原因とその解決方法について説明します。
スロットリングの原因
DescribeMetricLast API と DescribeMetricList API には、1 秒あたりのクエリ数 (QPS) が 50 というレート制限があります。この制限を超えたリクエストはスロットリングされます。
ピーク QPS のクエリ
-
API レート制限を確認するには、「API Rate Limits」をご参照ください。
[API Rate Limits] リストでは、DescribeMetricLast と DescribeMetricList のクォータとピーク値を確認できます。
-
API レート制限の使用状況を確認し、ピーク値を評価するには、「API Rate Limit Usage」をご参照ください。
[API Rate Limit Usage (%)] のモニタリングチャートでピーク値を見つけ、ピーク QPS を計算します。たとえば、API レート制限が 50 で、ピーク使用率が 5% の場合、ピーク QPS は 50 × 0.05 = 2.5 となります。
ソリューション
-
メトリクスをバッチでクエリします。
たとえば、50 の ECS インスタンスをクエリする場合、
Dimensionsリクエストパラメーターを[{"instanceId":"InstanceA"},{"instanceId":"InstanceB"}, ...]のように設定することで、1 回のリクエストで複数のインスタンスをまとめてクエリできます。説明1 回のリクエストで、バッチで最大 50 インスタンスまでクエリできます。
-
ピークシフトを使用して API 呼び出しを時間的に分散させ、ピーク QPS を削減します。
たとえば、10 のクラウド製品があり、それぞれに 10 のメトリクスがあり、10 秒ごとにクエリするとします。すべてのメトリクスを一度にクエリすると、QPS は 100 になります。10 秒間にクエリを均等に分散させることで、QPS は 10 に削減されます。
-
リアルタイムデータエクスポート機能を使用して、モニタリングデータをエクスポートします。
この機能は、費用対効果が高く、低レイテンシーで、高い信頼性を備えています。BatchExport API は、1 秒あたり最大 1,000 クエリをサポートします。
-
これらのソリューションのいずれでも問題が解決しない場合は、チケットを送信してください。