Kinesis データストリームがスロットリングされているのはなぜですか?

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

Amazon Kinesis データストリームがスロットリングされているのはなぜですか?

簡単な説明

メトリクスが Kinesis データストリームのクォータの範囲内であっても、次の理由でストリームがスロットリングされることがあります。

  • WriteThroughputExceeded エラーおよび Rate Exceeded エラーが発生したため。
  • 拡張 Kinesis ストリームモニタリングが無効になっているため。
  • CloudWatch メトリクスでマイクロスパイクが表示されなくなっているため。
  • CloudWatch メトリクスは成功したオペレーションについてのみ報告し、失敗したオペレーションは除外するため。

解決方法

Amazon Kinesis データストリームは、以下の理由でスロットリングされることがあります。

WriteThroughputExceeded エラーおよび Rate Exceeded エラー

ストリームでは、次の理由で WriteThroughputExceeded および Rate Exceeded というスロットリングエラーが発生することがあります。

  • Kinesis データストリームに書き込まれたレコードの数がストリームのクォータを超過したため。
  • レコード (パーティションキーを含む) のサイズが 1 MB を超過したため。
  • 合計スループット (バイト) が Kinesis ストリームの制限を超過したため。
  • プロデューサーが実行している高速リクエストが多すぎてストリームに書き込むことができないため (通常「Slow down」または「Rate exceeded」というエラーが発生)。

無効になっている拡張 Kinesis ストリームモニタリング

Kinesis データストリームの一部のシャードは、他のシャードよりも多くのレコードを受信する場合があります。これにより、ストリームでスロットリングエラーが発生し、ホットシャード (データが集中してしまったシャード) が発生することがあります。ホットシャードが発生するということは、PUT オペレーションで使用されているパーティションキーが、Kinesis ストリームのシャードに均等にレコードを分散していないということです。

disable-enhanced-monitoring 機能がオンになっていると、ホットシャードがメトリクスに表示されません。これは、ストリームレベルのメトリクスが、存在するシャードすべての集約値であることが理由です。ストリームの拡張モニタリングが無効になっていると、ストリームを個別に調べることができません。シャードごとにストリームを調べるには、enable-enhanced-monitoring コマンドを使用します。

CloudWatch メトリクスにおけるマイクロスパイクの非表示

Kinesis ストリームのクォータは、シャードごと、および 1 秒ごとに決定されます。CloudWatch で 60 秒の制限時間を超過して値が集約されると、Kinesis の時間クォータに違反するマイクロスパイクが発生することがあります。また、メトリクスは 60 秒間で集約されるため、1 分内のレコードの総数が少なく見える場合があります。しかし、その 1 分内におけるある 1 秒時点のレコード 1 つを見てみると、実際にはより大きな数を表します。トラフィックがストリームのクォータを下回っていることを示す場合がありますが、その 1 秒にスロットリングされたシャードはストリームのスロットリングとして表示されます。

成功したオペレーションについてのみ報告し、失敗したオペレーションは除外する CloudWatch メトリクス

Kinesis メトリクスは、ストリームの成功したオペレーションのみを記録します。したがって、スロットリングされたオペレーションの中には Kinesis データストリームに取り込まれないものもあります。結果として、ストリームの制限に対する違反や、メトリクスに表れないスロットリングが発生することがあります。

Kinesis データストリームに入力できない失敗のレコードが発生すると、ストリームがスロットリングされます。プロデューサーに再試行メカニズムがある場合、失敗のレコードが再試行されます。これにより、処理に遅延が発生することがあります。

Kinesis データストリームに送信されているレコードが多すぎるかどうかを確認するには、送信されたレコードの合計数を算出します。具体的には、受信レコードの合計数に、スロットリングされたレコードの数を加算します。こうすることで、スロットリングイベントにおける受信レコードの数を概算できます。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合