我试图确定在AWS上的示例Kafka集群设置中可以实现的最大吞吐量。我在两个EC2实例上配置了2个Kafka代理,并试图使用ProducerPerformance Tool来监控吞吐量,如下所示。Kafka ProducerPerformance工具中的吞吐量参数
./bin/kafka-run-class.sh org.apache.kafka.tools.ProducerPerformance --throughput = 10000 - topic = TOPIC - num-records = 50000000 --record-size = 200 - producer-props bootstrap.servers = SERVERS buffer.memory = 67108864 batch.size = 64000
如果你能帮我澄清下面的问题,我将不胜感激。
- 吞吐量参数是什么意思?
在文档,我发现这个 信息 - 节气门最大消息吞吐量大约 THROUGHPUT消息/秒
但我还注意到,-1作为参数这个--throughput通过。 (例如这里 - https://engineering.linkedin.com/kafka/benchmarking-apache-kafka-2-million-writes-second-three-cheap-machines)
- 当我们运行该脚本时,我们得到了一些输出例如821,557记录/秒(78.3 MB /秒)的示例输出。这个值如何与我们之前设置的吞吐量参数相关联?
谢谢。
感谢您的及时回复。那么,假设上面的脚本给出了给定硬件配置下的最大吞吐量,但是为了简单起见,如果我们忘记了批量大小和压缩消息等,是否正确?假设只有一个生产者和一个消费者存在,我们如何才能找到给定硬件所能达到的最大吞吐量? –
理论上,单台机器上客户的TPS不会超过带宽。如果性能结果远低于带宽,还有改进的余地。 – amethystic
正如我对吞吐量的理解一样,我们可以得到单个生产者为经纪人生成记录的最大速率,而无需限制。现在为吞吐量参数设置一个值(例如:10000)有什么好处?这不正是我们打算通过运行perf工具找到的值吗? –