本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
来自 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