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

Amazon Managed Service for Apache Flink(Amazon MSF)之前称为 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 错误,您还可以在 Amazon Managed Service for Apache Flink 应用程序的 CloudWatch 日志中看到这一点。

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

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

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