Amazon Managed Service for Apache Flink 之前称为 Amazon Kinesis Data Analytics for Apache Flink。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
来自 Kinesis 数据流的上游或源限制
症状:应用程序遇到LimitExceededExceptions
来自其上游源 Kinesis 数据流的问题。
潜在原因:Apache Flink 库 Kinesis 连接器的默认设置设置为从 Kinesis 数据流源读取,对于每次调用获取的最大记录数,默认设置非常激进。GetRecords
默认情况下,Apache Flink 配置为每次GetRecords
调用获取 10,000 条记录(默认情况下,此调用每 200 毫秒进行一次),尽管每个分片的限制只有 1,000 条记录。
当尝试从 Kinesis 数据流中使用时,此默认行为可能会导致限制,从而影响应用程序的性能和稳定性。
您可以通过检查 CloudWatch ReadProvisionedThroughputExceeded
指标并查看该指标大于零的长期或持续时间来确认这一点。
通过观察持续LimitExceededException
存在的错误,您还可以在适用于 Apache Flink 的亚马逊托管服务 Flink 应用程序的 CloudWatch 日志中看到这一点。
解决方案:您可以执行以下两项操作之一来解决此情况:
降低每次
GetRecords
呼叫提取的记录数量的默认限制在适用于 Apache Flink 的亚马逊托管服务中启用自适应读取。有关自适应读取功能的更多信息,请参阅SHARD_USE_ADAPTIVE_READS