当前位置: 首页 > 知识库问答 >
问题:

Kinesis consumer getRecords不一致地返回10000条记录

程磊
2023-03-14

我有一个动觉流(20个片段),大约有1天的数据延迟,这是由基于KCL的动觉消费者消费的。消费者部署了20个ECS实例,因此每个实例都有一个从每个shard提取数据的线程

根据文档,看起来一个getRecords调用最多可以获取10000条记录,或者最大负载大小为10 MB。然而,当我监视消费者日志时,并不是所有的碎片都达到了这个限制。使用单个getRecords调用获取的记录在消费者实例中非常不一致。有些调用获取大约100-400条记录,而有些调用获取大约4000-5000条记录。在极少数情况下,一些调用会获取9999条记录。因此,数据延迟没有得到减少。

消费者大约需要5分钟来处理10000条记录,因此也无法达到读取吞吐量。

是否有对此的解释或我可以研究的指标,以进一步调试此问题?

共有2个答案

芮博厚
2023-03-14

我不熟悉您的特定应用程序,因此可能与此无关,但KDS增强型扇形分叉可能会有帮助:

https://docs.aws.amazon.com/streams/latest/dev/enhanced-consumers.html

您可能还想考虑延长保留期。

请注意,这两项建议均需支付额外费用。

甄胡非
2023-03-14

根据您的记录大小,这可能是因为以下Kinesis服务限制:

通过GetRecords,每个碎片最多可支持每秒2 MB的最大总数据读取速率。如果对GetRecords的调用返回10 MB,则在接下来的5秒内进行的后续调用会引发异常。

如果这确实是您遇到的限制,那么您可能需要考虑添加更多碎片。

 类似资料:
  • 首先,我知道这个查询有点混乱,但它可以正常工作,直到至少有一条记录存在,并且设置为true,此时没有返回任何记录。如果有另一条记录的设置为false或两者的组合,则它可以正常工作,即返回的记录的所有票证总数都设置为0或适当的值。 我已将查询更新为,并将票证表联接更改为left(也尝试了full outer),但它仍然存在上述问题。 为什么会发生这种情况,我能做些什么来防止它?

  • 问题内容: 我有这样的一对一关系 父母 和孩子 } 我想创建返回具有孩子isNotNull的父母的条件,我尝试过像 但是没有用,请给我一个例子,能帮我吗?谢谢 问题答案: 首先,映射是错误的。在父类中,您是说该关联是由映射的,而在您说该关联是使用名为的连接列进行映射之后。下定决心 它是由属性映射的,应该删除。或者它是由JoinColumn映射的,您应该在子级中删除,并在Child实体中使用。 现在

  • 我们正在使用Spring Kafka 2.2.2版本从Kafka中检索记录,使用@KafkaListener和Con电流tKafkaListenerContainerFactory。我们已经配置了max-pore-记录为5,但是它总是在列表中只给消费者1条记录,而不是5条记录。 虽然配置相同,但它在Spring Kafka 2.1中也能工作。4.释放。 这是我们的申请表。yml配置: 以下是我们的

  • 我目前正在为H264视频流编写解码器。目标平台是Android,所以我使用的是MediaCodec API(Android OS>=6.0)。 我在4个设备上测试了我的代码(4个设备上都是相同的): 它在小米红米5 Plus上运行得很好(实际上速度相当快)。 在Nexus 7和三星Galaxy Tab A上运行速度非常慢 它在Samsung Galaxy Tab S2上失败,在(和返回正确的值()

  • 我试图创建一个函数,返回一个带有页面的对象列表(来自Spring数据)。 有10个元素,但totalElements=110,totalPages=2,当10个元素轻松进入一个包含100个元素的页面时 PS:我被迫使用的对象MongoTem板,其中没有查找功能,需要一个可分页。所以我被迫手动创建它。 我使用的代码是: 订单是我的结果列表(这是正确的),页面定义如下: 谢谢你所做的一切

  • 我目前正在为我的不和谐服务器开发一个discord.py重写(1.3.3)机器人。目前,我正试图让机器人在语音频道中播放音乐。根据discord.py留档,您将使用函数channel.connect()连接到语音通道,该通道将返回VoiceClient对象。 然而,我从未从通道中获得VoiceClient对象。连接()。机器人确实加入了我的频道,但它似乎陷入了一个无限循环。在“wait chann