2017-07-25 40 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工具找到的值嗎? –