スキップしてコンテンツを表示

Timestream for LiveAnalytics の ThrottlingException エラーを解決する方法を教えてください。

所要時間2分
0

Amazon Timestream for LiveAnalytics テーブルに大量のデータを書き込むときに発生する ThrottlingException エラーを解決したいと考えています。

簡単な説明

特定の期間内に次のリクエストがクォータを超えると、"ThrottlingException" エラーが発生します。

  • クエリ
  • AWS Systems Manager の機能である Parameter Store、API コール
  • アクティブなマグネットストアの書き込み

解決策

クエリリクエストが多すぎる

クエリリクエストレートクォータを超えると、次のエラーメッセージが表示されます。

"An error occurred (ThrottlingException) when calling the QueryOperation (reached max retries: 4): Request rate limit exceeded".

注: リクエストレートクォータは動的で、サービスレベルでの全体的なリソース使用量によって異なります。

クエリで必要以上のデータがスキャンされ、複数のページ分割呼び出しが発生する場合は、メジャー名またはお客様定義のパーティションキーを使用して不要なデータを除外します。例えば、クエリでテーブルデータ全体をスキャンする場合は、時間述語を追加して、クエリエンジンが不要なデータスキャンを削除するようにします。Timestream for LiveAnalytics が内部パーティショニングを効率的に管理できるように、頻繁にアクセスされるキーコレクションをテーブルのパーティションキーとして設定するのがベストプラクティスです。

基礎となるデータモデルを最適化するには、「Data modeling」(データモデリング) を参照してください。パフォーマンスを向上させ、レイテンシーを減らすには、「Queries」(クエリ) を参照してください。

Parameter Store API リクエストが多すぎる

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

各 AWS アカウントと AWS リージョンの Parameter Store API リクエストクォータを超えると、次のいずれかのエラーメッセージが表示されます。

  • "An error occurred (ThrottlingException) when calling the GetParameters operation (reached max retries: 4): Rate exceeded."
  • "An error occurred (ThrottlingException) when calling the GetParametersByPath operation (reached max retries: 4): Rate exceeded."
  • "An error occurred (ThrottlingException) when calling the DescribeParameters operation (reached max retries: 2): Rate exceeded."

Parameter Store API コールの頻度を減らすには、次の操作を行います。

  • API コールを間隔をずらしてスケジュールする。
  • 1 回の呼び出しで複数の値を返すことができる API を使用する。例えば、GetParametersGetParametersByPath は、1 回の API コールで最大 10 個のパラメータを取得できます。
  • API コールにエラーリトライとエクスポネンシャルバックオフを実装する。API コールの同時実行を防ぐには、再試行ロジックにジッターを組み込みます。リクエストの急増を一定の割合でより均等に分散し、スロットリングインシデントを減らすには、ランダムな間隔をバックオフに追加します。

呼び出し間に 1 秒間の一時停止を含めるようにコードを変更できます。AWS CLI には、変更可能な再試行設定が含まれています。例えば、最初の再試行の前に 50 ミリ秒、2 回目の再試行の前に 100 ミリ秒、3 回目の再試行の前に 200 ミリ秒といったように設定を調整できます。

AWS Lambda を使用して Parameter Store への API コールを行う場合は、パラメータキャッシュを実装します。

バッチ処理を実装するには、大規模な履歴データセットを管理しやすい小さなバッチに分割します。書き込み要求クォータに従ってデータをチャンク単位で処理します。

アクティブなマグネティックストアの書き込みリクエストが多すぎる

アクティブなマグネティックストアの書き込みリクエストがクォータの 250 を超えると、次のエラーメッセージが表示されます。

"An error occurred (ThrottlingException) when calling the WriteRecords operation (reached max retries: 5): Your magnetic store writes to Timestream for LiveAnalytics are throttled for this database."

注: パーティションがデータを受信すると、取り込み処理後最大 6 時間、パーティションがアクティブな状態のままになることがあります。

250 のクォータを増やすことはできません。

ActiveMagneticStorePartitions メトリクスが 250 を超える場合は、次のアクションを実行します。

  • アプリケーションが同時に書き込むさまざまなデータ系列の数を減らす。
  • アクティブなマグネティックパーティションが同時にデータを取り込む時間を短縮する。例えば、パーティションが 1 回の操作で 24 時間分のデータを取り込む場合は、データをより小さな時間単位に分割します。
  • バッチ書き込みを使用すると、発生する可能性のあるスロットリング動作を減らすことができます。

注: データが大量にある場合は、バッチロードジョブを作成するのがベストプラクティスです。

それでもマグネティックスロットリングエラーが発生し、デッドレターキュー (DLQ) に多くのレコードが受信される場合は、マグネティックスロットリングが発生しているテーブルを探してください。高スループットの取り込みワークロードにはメモリストアを使用します。詳細については、「Handling WriteRecords throttles」(WriteRecords スロットルを処理する) を参照してください。

AWS公式更新しました 9ヶ月前
コメントはありません

関連するコンテンツ