来自 Kinesis 数据流的上游或源限制 - Amazon Kinesis Data Analytics
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

来自 Kinesis 数据流的上游或源限制

症状:应用程序遇到LimitExceededExceptions来自其上游源 Kinesis 数据流的情况。

潜在原因:Apache Flink 库 Kinesis 连接器的默认设置设置为从 Kinesis 数据流源读取,而每次GetRecords调用获取的最大记录数的默认设置非常激进。Apache Flink 默认配置为每次 GetRecords 调用 10,000 条记录(默认情况下,此调用每 200 ms 进行一次),尽管每个分片的限制只有 1,000 条记录。

在尝试从 Kinesis 数据流中消耗数据时,这种默认行为可能会导致节流,这将影响应用程序的性能和稳定性。

可以通过检查 CloudWatch ReadProvisionedThroughputExceeded指标并查看该指标长期或持续大于零的时间段来确认这一点。

客户还可以在其 Kinesis Analytics Flink 应用程序 CloudWatch 的日志中看到持续的LimitExceededException错误。

解决方案:客户可以采取以下两项措施之一来解决此情况:

  • 降低每次 GetRecords 调用获取的记录数的默认限制

  • 客户可以在其 Kinesis Analytics Flink 应用程序中启用自适应读取。有关自适应读取功能的更多信息,请参阅 SHARD_USE_ADAPTIVE_RE ADS