来自 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错误,客户还可以在其 Managed Service for Apache Flink 应用程序的 CloudWatch 日志中看到这一点。

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

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

  • 客户可以在其 Managed Service for Apache Flink 应用程序中启用自适应读取。有关自适应读取功能的更多信息,请参阅SHARD_USE_ADAPTIVE_READS