阿帕奇卡夫卡多个生产者VS单生产者性能

问题描述:

我有在一台机器12周的经纪人和在同一台机器 一个动物园管理员卡夫卡簇I使用卡夫卡-蟒生成消息阿帕奇卡夫卡多个生产者VS单生产者性能

producer = KafkaProducer(bootstrap_servers='localhost:9092' , acks=0 , linger_ms=10000 , batch_size=2000000 , buffer_memory=1003554432) 

for i in range(50000): 

    #50 Bytes message 
    msg= 'FDASFAFAFAFAFADDFASFADFAFDASFAFFFFFFFFFFFFFFFFFFF' 

    #my_topic has 12 partitions , kafka cluster has 12 brokers in single machine 
    producer.send('my_topic', msg) 
当我运行我Python代码

,我达到吞吐量20,000(消息每秒) ,但是,当我同时运行多个相同的python代码时,我达到相同的吞吐量(每秒20000个信息)

当我运行单个生产者时,如何实现更好的吞吐量?

我测试许多batch.size和linger.ms值,但我不能获得更好的性能

+0

可能想看看其他一些卡夫卡python基准测试,看看你如何比较。在同一台机器上同时运行12个经纪人和一个动物园管理员也不是一个很好的性能配置。检查你的邮件实际上是否会分配给所有12个分区,而不是一次一个瓶颈。 http://activisiongamescience.github.io/2016/06/15/Kafka-Client-Benchmarking/ –

+0

@HansJespersen融合效果更好,我与合流kafka每秒50,000,谢谢你的回答 –

卡夫卡生产的性能取决于卡夫卡群集上,在你的代码中不断尝试的消息发布到卡夫卡。我通过我的工具进行性能测试时也有相同的经验。如果Kafka集群的容量较低,那么平行生产者的吞吐量不会增加。 如果Kafka集群拥有更多容量,那么更多的生产者将导致更多的消息被生成。

使用单独的zookeeper集群设置正确的Kafka集群(在3个差异机器上16 GB内存,一些很好的CPU的最小3个代理),让主题正确分配(更多分区)并跨卡夫卡经纪人进行复制。现在,如果你测试你的生产者代码,它会按预期工作。

+0

其实我有一些限制使用不同的物理服务器。现在,我只有一台优秀的服务器,我必须在其中运行虚拟机,关键是瓶颈不是Kafka集群,Kafka-produer-perf-test.sh实现100.000条消息/每秒,并且我意识到我使用的制作者并不完美,所以我改变我的库(使用Confluent Kafka python)我获得了更好的性能,现在我很开心:)) –