2017-07-25 39 views
0

我试图确定在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

如果你能帮我澄清下面的问题,我将不胜感激。

  1. 吞吐量参数是什么意思?

在文档,我发现这个 信息 - 节气门最大消息吞吐量大约 THROUGHPUT消息/秒

但我还注意到,-1作为参数这个--throughput通过。 (例如这里 - https://engineering.linkedin.com/kafka/benchmarking-apache-kafka-2-million-writes-second-three-cheap-machines

  1. 当我们运行该脚本时,我们得到了一些输出例如821,557记录/秒(78.3 MB /秒)的示例输出。这个值如何与我们之前设置的吞吐量参数相关联?

谢谢。

回答

0
  1. 如果throughput设置为-1,卡夫卡不为PERF工具做任何限制的事情。相反,如果设定好了,卡夫卡会尽可能让TPS尽可能接近这个目标。假设吞吐量设置为1000,那么perf工具大约每秒发送1000条记录。

  2. 在吞吐量为-1的测试中,测试显示一个生产者实例能够每秒发送821,557条记录。根据带宽资源和平均记录大小,您可能可以找出瓶颈。

+0

感谢您的及时回复。那么,假设上面的脚本给出了给定硬件配置下的最大吞吐量,但是为了简单起见,如果我们忘记了批量大小和压缩消息等,是否正确?假设只有一个生产者和一个消费者存在,我们如何才能找到给定硬件所能达到的最大吞吐量? –

+0

理论上,单台机器上客户的TPS不会超过带宽。如果性能结果远低于带宽,还有改进的余地。 – amethystic

+0

正如我对吞吐量的理解一样,我们可以得到单个生产者为经纪人生成记录的最大速率,而无需限制。现在为吞吐量参数设置一个值(例如:10000)有什么好处?这不正是我们打算通过运行perf工具找到的值吗? –