AWS Kinesis的低吞吐量

时间:2015-06-23 16:22:37

标签: amazon-web-services boto amazon-kinesis

我使用python的boto.kinesis模块将记录写入AWS Kinesis。达到的最大吞吐量约为40次/秒。但是,根据Kinesis FAQ

  

每个分片每秒最多可支持1000个PUT记录。

所以我目前的方法只达到4%理论上可行的,这似乎非常低。

有谁知道如何提高吞吐量?

设置:Kinesis Stream是一个带有一个分片的实例。生产者位于与Kinesis Stream位于同一区域的专用AWS EC2实例(t3.medium)上。它创建大约20个字符长度的字符串,并通过boto.kinesis.Connection.put_record("my_stream", my_message)将它们发送到Kinesis Stream。

简化代码:

from boto import kinesis
import time

connection = kinesis.connect_to_region(REGION)
stream = connection.create_stream("my_stream", shard_count=1)
time.sleep(60)  # wait a minute until stream is created

for i in range(NUM_MESSAGES): 
    my_message = "This is message %d" % i
    connection.put_record(my_message, "my_stream", "partition_key")

1 个答案:

答案 0 :(得分:2)

http://docs.aws.amazon.com/kinesis/latest/dev/service-sizes-and-limits.html

限制是记录/秒 您应该使用putRecords来提高写入吞吐量。你这样做的方法是在同一个调用中放置多个记录。所以你继续追加,最后你做了记录。


看看:https://github.com/awslabs/kinesis-poster-worker