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

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