首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使在有足够的碎片之后也是ProvisionedThroughputExceededException

即使在有足够的碎片之后也是ProvisionedThroughputExceededException
EN

Stack Overflow用户
提问于 2016-04-25 06:56:08
回答 3查看 5.8K关注 0票数 1

在动态流上写入数据时,我们面临着ProvisionedThroughputExceededException问题。

案例1:我们被使用单个m4.4xlarge (16核,64 us mem)实例在流上写入数据,传递来自Jmeter的3k请求,EC2实例为我们提供每秒1100个请求,因此我们选择了2个碎片流(即2000年的)。因此,我们能够成功地在流上写入数据,而不会造成任何损失。

案例2:为了进一步测试,我们已经创建了10个 m4.4xlarge (16核,64 so mem)集群和11个碎片流(基于对一个碎片的简单计算,我们创建了10个EC2 +1)。当我们测试EC2集群时,来自Jmeter的不同请求案例,比如3,10,3000万。我们收到日志文件上的ProvisionedThroughputExceededException错误。

在千分尺方面,EC2集群为我们提供了7500股,我相信7500股股的容量是11000便士,不应该返回这样的错误。

你能帮我理解一下这个问题背后的原因吗?

EN

回答 3

Stack Overflow用户

发布于 2016-07-08 06:55:24

这听起来像是Kinesis没有在你的碎片上平均地散列/分发你的数据--有些是“热”的(获取ProvisionedThroughputExceededException),而另一些则是“冷”的。

为了解决这个问题,我建议

  1. 使用ExplicitHashKey参数,以便控制数据到哪个碎片。PutRecords文档在这方面有一些基本的信息(但不像应该的那样多)。
  2. 此外,请确保您的碎片在散列空间中平均分配(适当的开始/结束散列键)。

最简单的模式是为每个碎片设置一个预定义的ExplicitHashKey,并让您的PutRecords逻辑对每个记录进行迭代--非常均匀的分发。在任何情况下,请确保记录哈希算法将记录均匀分布在各个碎片上。

另一个基于使用ExplicitHashKey的替代/扩展是将散列空间中的一个子集专门用于“溢出”碎片--在您的示例中,将一个特定的ExplicitHashKey值映射到一个碎片--当您开始在普通碎片上进行节流时,将记录发送到那里进行重试。

票数 2
EN

Stack Overflow用户

发布于 2016-04-26 08:43:57

检查您的生产者端,您确定您正在向不同的碎片插入数据吗?"PartitionKey“值在PutRecordRequest调用中可能对您有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2019-06-10 20:03:11

我认为您需要传递不同的“分区键”,以便在不同的“碎片”之间共享数据。即使您已经创建了多个碎片,并且您的所有记录都使用相同的分区键,那么您仍然在写入单个碎片,因为它们都具有相同的散列值。请在这里查看更多PartitionKey

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36833830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档