

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 来自 Kinesis 数据流的上游或源限制
<a name="troubleshooting-source-throttling"></a>

**症状**：应用程序遇到 `LimitExceededExceptions` 来自其上游源 Kinesis 数据流的问题。

**潜在原因**：Apache Flink 库 Kinesis 连接器的默认设置为从 Kinesis 数据流源读取，对于每次 `GetRecords` 调用获取的最大记录数，默认设置非常激进。默认情况下，Apache Flink 配置为每次 `GetRecords` 调用获取 10,000 条记录（默认情况下，此调用每 200 毫秒进行一次），尽管每个分片的限制只有 1,000 条记录。

当尝试从 Kinesis 数据流中使用时，此默认行为可能会导致限制，从而影响应用程序的性能和稳定性。

您可以通过检查 CloudWatch `ReadProvisionedThroughputExceeded`指标并查看该指标大于零的长期或持续时间来确认这一点。

通过观察持续`LimitExceededException`存在的错误，您还可以在适用于 Apache Flink 的亚马逊托管服务 Flink 应用程序的 CloudWatch 日志中看到这一点。

**解决方案**：您可以采取以下两项措施之一来解决这种情况：
+ 降低每次 `GetRecords` 调用提取的记录数的默认限制
+ 在 Amazon Managed Service for Apache Flink 应用程序中启用自适应读取。有关自适应读取功能的更多信息，请参阅 [SHARD\$1USE\$1ADAPTIVE\$1READS](https://nightlies.apache.org/flink/flink-docs-release-1.10/api/java/org/apache/flink/streaming/connectors/kinesis/config/ConsumerConfigConstants.html#SHARD_USE_ADAPTIVE_READS)