Amazon Kinesis Data Streams
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

Amazon Kinesis Data Streams 创建器故障排除

下列章节提供使用 Amazon Kinesis Data Streams 创建器时可能发现的一些常见问题的解决方案。

创建器应用程序的写入速率比预期的慢

写入吞吐量低于预期的最常见原因如下所示。

超过服务限制

要查明是否超过了服务限制,请检查您的创建器是否从服务引发了吞吐量异常,并验证哪些 API 操作受限制。请记住,根据调用会有不同的限制,具体请参阅Amazon Kinesis Data Streams 限制。例如,除了最广为人知的对读写操作的分片级别限制之外,还存在以下流级别的限制:

操作 CreateStreamDeleteStreamListStreamsGetShardIteratorMergeShards 限制为每秒 5 个调用。DescribeStream 操作限制为每秒 10 个调用。DescribeStreamSummary 操作限制为每秒 20 个调用。

如果这些调用不存在问题,请确保您选择了允许在所有分片之间均匀分配 put 操作的分区键,并且没有某个特殊分区键无意中达到了服务限制而其他分区键则未达到限制。这要求您衡量高峰吞吐量并考虑流中的分片数量。有关管理流的详细信息,请参阅使用 Java 管理 Kinesis Stream

提示

请记住,在使用单记录操作 PutRecord 时,吞吐量限制计算会向上舍入到最接近的 KB 值,而多记录操作 PutRecords 对各个调用中记录的累加和进行舍入。例如,带有 600 个 1.1 KB 大小记录的 PutRecords 请求不会受到限制。

创建器优化

在您开始优化创建器之前,有一些关键任务需要完成。首先,根据记录大小和每秒记录数,确定您需要的高峰吞吐量。接下来,排除流容量作为限制因素 (超过服务限制) 的可能性。如果您已排除了流容量,对于两种常见类型的创建器,请使用以下故障排除提示和优化指南。

大型创建器

大型创建器通常从本地服务器或 Amazon EC2 实例运行。需要由大型创建器提供较高吞吐量的客户通常会关注每记录延迟。处理延迟的策略如下:如果客户可以微量批处理/缓冲记录,则使用 Kinesis Producer Library(具有高级聚合逻辑)、多记录操作 PutRecords 或者先将记录聚合到较大的文件中,然后再使用单记录操作 PutRecord。如果无法批处理/缓冲,则使用多个线程来同时写入到 Kinesis Data Streams 服务。AWS SDK for Java 和其他开发工具包中包括异步客户端,可以用非常少的代码完成此任务。

小型创建器

小型创建器通常是移动应用程序、IoT 设备或 Web 客户端。如果是移动应用程序,我们建议使用 PutRecords 操作或 AWS 移动软件开发工具包中的 Kinesis 记录器。有关更多信息,请参阅 适用于 Android 的 AWS 移动软件开发工具包 入门指南 和 AWS Mobile SDK for iOS Getting Started Guide。移动应用程序自身必须处理断续连接,并且需要某种类型的批量 put,例如 PutRecords。如果由于某些原因而无法批处理,请参阅上面的大型创建器信息。如果您的创建器是浏览器,则生成的数据量通常非常小。不过,您将 put 操作放在了应用程序的关键路径上,我们建议不要这样做。

未授权的 KMS 主密钥权限错误

当创建者应用程序在 KMS 主密钥上写入加密流但没有权限时,会发生此错误。要为应用程序分配权限以访问 KMS 密钥,请参阅在 AWS KMS 中使用密钥策略在 AWS KMS 中使用 IAM 策略