KCL不处理来自AWS kinesis流的三个分片中的两个的记录

时间:2017-05-10 18:18:29

标签: amazon-kinesis

我们有一个带有三个分片的kinesis流,我们的kinesis应用程序有三个实例。我们可以看到记录发布到我们的所有三个分片,但我们的kinesis应用程序只能处理来自一个分片的记录。听另外两个碎片的工人经常睡觉。

外部字节为零的一个分片的云观察指标 enter image description here

在4月28日之前,我们的kinesis应用程序能够处理来自所有三个分片的记录 enter image description here

知道可能导致它的原因吗?

1 个答案:

答案 0 :(得分:1)

Kinesis内部在读取其内部存储上的getRecords api调用上的记录时发生超时。当您的写入率很高时,可能会出现kinesis内部由于超时而无法获取所有新记录的情况。当您写入大量记录但读取速率低于默认的每秒1条时,通常会出现这种情况。 Kinesis 保证,它将能够返回所有记录,当您的读取速率> = 1 getRecord / second(最大速度为每秒5次)时,否则,分片迭代器的寿命将持续增加。 注意-如果阅读速度较慢,则可以获取所有记录,但是如果您的分片迭代器使用年限很长,那就是收费。您落后了,必须增加读取频率,这才可以控制分片迭代器的年龄

分片迭代器使用期限是一种指标,您可以在其中了解分片/流中的读取量落后于最新记录的数量。如果您的迭代器使用期限为10个小时,则表示您当前正在读取10个小时前写入分片的记录。

流也不是队列。您不能像在SQS(visibilityTimeout)中那样等待处理完成到检查点。您必须立即检查点,或者根本不需要检查点