メインコンテンツへスキップ

Kinesis Data Stream の IeratorAgeMilliseconds がスパイク状の異常値を報告する

· loading · loading ·
kiitosu
著者
kiitosu
画像処理やデバイスドライバ、データ基盤構築からWebバックエンドまで、多様な領域に携わってきました。地図解析や地図アプリケーションの仕組みにも経験があり、幅広い技術を活かした開発に取り組んでいます。休日は草野球とランニングを楽しんでいます。
目次

まとめ
#

  • データが長い期間届かないShardはスパイク状のIteratorAgeを通知することがあるけど期待する動作
  • 警告をするなど開発者への通知をしたい場合は適切なwindow区間の設定が必要

概要
#

Kinesis Data Streamを使ってIotデバイスからの位置情報の収集システムを作成した。 その際、GetRecords.IteratorAgeMillisecondsでスパイク状の異常値が観測された

どうやら以下と類似の症状らしい。 AWSに問い合わせた結果を記載しておく。

AWSの見解
#

シャードがデータを受け取っていない時に、GetRecords.IteratorAgeMilliseconds がスパイク状の大きな値を示すのは期待される動作。 とのこと。 ※前提として、ConsumerとしてKinesis KCLを使っている場合の話っぽい。

もうちょっと長く書くと以下。

最近データを受信していないシャードでIteratorAgeがスパイク状の値を持つのは期待された動作です。
これが起こる原因は以下です。
・コンシューマーはデータを受信するまでチェックポイントを作れません。
・つまり、leaseがシャッフルされたときなどに前回のチェックポイントが随分前になってしまうということです。
・これはShardで保持する期間 TRIM_HORIZON(24時間) よりも前の場合があります。
・これによりコンシューマーは処理の開始が過去であることを認識し、高い IteratorAge を通知しますが、開始シーケンス番号とシャードデータの先頭(TIP)との間にデータがないため、すぐに先頭に追いつきます。
Reply by Email

関連記事

AWS認定DAS勉強:KinesisClientLibrary(KCL) vs KinesisConnectorLibrary
· loading · loading
CDKでNatGatewayのIPアドレスをOutputsに出力する
· loading · loading
anroidアプリでawsのパッケージが出力するログを抑制したい
· loading · loading