我有一台kafka集群,一台机器上有12个经纪人,同一台机器上有一个动物园管理员 我使用kafka-python来生成消息
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代码时,我实现了相同的吞吐量(每秒20,000个消息)
当我运行单个生成器时,如何实现更好的吞吐量?
我测试了许多batch.size和linger.ms值,但我无法获得更好的性能
答案 0 :(得分:1)
Kafka制作人的表现取决于Kafka集群,在您的代码中,您不断尝试将消息发布到Kafka。通过我的工具进行性能测试时,我也有同样的经验。如果Kafka集群的容量较低,那么并行生产者的吞吐量不会增加。 如果Kafka集群具有更多容量,那么更多数量的生产者将导致生成更多的消息。
设置适当的Kafka集群(3个diff机器中的最小3个代理程序,16 GB ram,一些好的cpu)和单独的zookeeper集群,让主题正确分配(更多分区)并在Kafka代理中复制。现在,如果你测试你的生产者代码,它按预期工作。