对亚马逊 Kinesis Data Streams 制作者进行故障排除 - Amazon Kinesis Data Streams

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

对亚马逊 Kinesis Data Streams 制作者进行故障排除

我的生产者应用程序的写入速度比预期的要慢

写入吞吐量比预期慢的最常见原因是:

已超出服务限制

要了解是否超过了服务限制,请检查您的生产者是否抛出了服务中的吞吐量异常,并验证哪些API操作受到限制。请记住,根据调用会有不同的限制,具体请参阅限额和限制。例如,除了最广为人知的对读写操作的分片级别限制之外,还存在以下流级别的限制:

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

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

提示

使用单记录操作时,请记住四舍五入到最接近的千字节以进行吞吐量限制计算 PutRecord,而多记录操作则按每次调用中记录的累积总和进行PutRecords四舍五入。例如,带有 600 个 1.1 KB 大小记录的 PutRecords 请求不会受到限制。

我想优化我的制作人

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

大型创建器

大型生产者通常在本地服务器或 Amazon EC2 实例上运行。需要由大型创建器提供较高吞吐量的客户通常会关注每记录延迟。处理延迟的策略包括以下内容:如果客户可以对记录进行微批处理/缓冲,请在使用单记录操作之前使用 K inesis Producer 库(具有高级聚合逻辑)PutRecords、多记录操作或将记录聚合到更大的文件中。PutRecord如果无法批处理/缓冲,则使用多个线程来同时写入到 Kinesis Data Streams 服务。 AWS SDK for Java 和其他SDKs包括异步客户端,它们只需很少的代码即可完成此操作。

小型创建器

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

我收到了未经授权KMS的主密钥权限错误

当生产者应用程序在没有KMS主密钥权限的情况下写入加密流时,就会发生此错误。要向应用程序分配访问KMS密钥的权限,请参阅中的使用密钥策略 AWS KMS使用IAM策略 AWS KMS

为制作人解决其他常见问题