Kinesis データストリームからのアップストリームまたはソーススロットリング - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink (Amazon MSF) は、以前は Amazon Kinesis Data Analytics for Apache Flink と呼ばれていました。

Kinesis データストリームからのアップストリームまたはソーススロットリング

症状: アプリケーションがアップストリームのソース Kinesis データストリームから LimitExceededExceptions を受信しています。

考えられる原因: Apache Flink ライブラリ Kinesis コネクタのデフォルト設定は、Kinesis データストリームソースから読み込むように設定されており、GetRecords 呼び出しごとにフェッチされるレコードの最大数は非常にアグレッシブなデフォルト設定になっています。Apache Flink はデフォルトで、GetRecords 呼び出しごとに 10,000 レコードを取得するように設定されています (この呼び出しはデフォルトで 200 ミリ秒ごとに行われます)。ただし、シャードごとの上限は 1,000 レコードのみです。

このデフォルトの動作により、Kinesis データストリームからデータを使用しようとするとスロットリングが発生することがあり、アプリケーションのパフォーマンスと安定性に影響が及びます。

これは、CloudWatch ReadProvisionedThroughputExceeded メトリクスをチェックし、このメトリックスがゼロより大きい期間持続していることで確認できます。

これは、Amazon Managed Service for Apache Flink アプリケーションの CloudWatch Logs でも、LimitExceededException エラーが続いているのを把握することで確認できます。

解決策: このシナリオを解決するために、次の 2 つの方法のいずれかを実行できます。

  • GetRecords 呼び出しごとに取得されるレコード数のデフォルト制限を下げる

  • Amazon Managed Service for Apache Flink アプリケーションでアダプティブリードを有効にします。アダプティブリード機能の詳細については、「SHARD_USE_ADAPTIVE_READS」を参照してください。