Kinesis Data Streams のスロットリングエラーのトラブルシューティング方法を教えてください。

最終更新日: 2020 年 3 月 30 日

Amazon Kinesis Data Streams がスロットリングしています。ただし、ストリームはデータ制限を超えていませんでした。「速度を超過しました」または「WriteProvisionedThroughputExceeded」エラーを検出する方法を教えてください。 

簡単な説明

Kinesis Data Streams のスロットリングエラーを検出しトラブルシューティングするには、次の操作を行います。

  • 拡張モニタリングを有効にし、IncomingBytes 値を比較する。
  • レコード全体をログ記録し、ストリームの数とサイズのチェックを実行する。
  • ランダムなパーティションキーを使用する。
  • Amazon CloudWatch メトリクスで、不明瞭なメトリクスまたはマイクロスパイクがないかを確認する。

解決方法

Kinesis データストリームで「速度を超過しました」または「WriteProvisionedThroughputExceeded」エラーを防ぐには、以下を試してください。

拡張モニタリングを有効にし、IncomingBytes 値を比較する

ホットシャードがあるかどうかを確認するには、Kinesis データストリームの拡張モニタリングを有効にします 。Kinesis Data Streams でシャードレベルのモニタリングを有効にすると、シャードを個別に調べることができます。シャードごとにストリームを調べて、どのシャードがより多くのトラフィックを受信しているか、あるいはサービスの制限に違反しているかを特定できます。

: ホットシャードは、拡張モニタリング設定が無効になっている場合、Kinesis Data Streams のメトリクスから除外されることがよくあります。ホットシャードの詳細については、「リシャーディングのための戦略」をご参照ください。

また、IncomingBytes の平均値と最大値を比較し、ストリームにホットシャードがあるかどうかを確認することもできます。拡張モニタリングが有効になっている場合、どのシャードが平均から逸脱しているかを確認することも可能です。

レコード全体をログ記録し、ストリームの数とサイズのチェックを実行する

ストリーム制限に違反するマイクロスパイクや不明瞭なメトリクスを識別するには、ストリームの数とサイズのチェックを実行するレコード全体またはカスタムコードをログ記録します。次に、Kinesis Data Streams に送信されるレコードの数とサイズを評価します。これで、データ制限に違反するスパイクを特定できます。

さらに、1 分のデータポイントからの値を 60 で割ることもできます。この結果、1 秒あたりの平均値が得られ、指定した期間内にスロットリングが存在するかどうかを判断しやすくなります。成功数が制限を超えない場合、IncomingRecords メトリクスを WriteProvisionedThroughputExceeded メトリクスに追加し、計算をもう一度行います。IncomingRecords メトリクスは成功したレコードまたは受け入れられたレコードを通知し、WriteProvisionedThroughputExceeded メトリクスはスロットリングされたレコードの数を示します。

: プロデューサーから送信されるレコードのサイズと数を確認してください。受信レコードとスロットル済みレコードの合計がストリーム制限より大きい場合は、レコード数の変更を検討してください。

PutRecord.Success メトリクスは、失敗したオペレーションのよい指標にもなります。成功メトリクスにディップがある場合、データプロデューサーログを調べて、失敗の根本原因を見つけます。スロットリングが発生した場合は、データプロデューサー側でログ記録を確立し、送信されたレコードの数とサイズの合計を決定します。PutRecord.Success メトリクスのレコードの合計数がストリーム制限を超えると、Kinesis Data Streams がスロットルします。Kinesis ストリームの制限の詳細については、「Kinesis Data Streams のクォータ」をご参照ください。

ランダムなパーティションキーを使用する

Kinesis Data Streams にホットシャードがある場合、ランダムなパーティションキーを使用してレコードを取り込みます。オペレーションで既にランダムなパーティションキーを使用している場合は、キーを調整してディストリビューションを修正します。次に、IncomingBytesIncomingRecords などのメトリクスの変更を、キーでモニタリングします。最大パターンと平均パターンが近い場合、ホットシャードはありません。

Amazon CloudWatch メトリクスで、不明瞭なメトリクスまたはマイクロスパイクがないか確認する

データでの違反やマイクロスパイクを明確に示していない CloudWatch メトリクスがある場合には、次の解決策を試してください。

ストリームクォータの詳細については、「Kinesis Data Streams のクォータ」をご参照ください。