kafka項目經驗之如何進行Kafka壓力測試、如何計算Kafka分區數、如何確定Kaftka集羣機器數量

@

Kafka壓測

用Kafka官方自帶的腳本,對Kafka進行壓測。Kafka壓測時,可以查看到哪個地方出現了瓶頸==(CPU,內存,網絡IO)。一般都是網絡IO達到瓶頸。 ==
使用下面兩個kafka自帶的腳本

  • kafka-consumer-perf-test.sh
  • kafka-producer-perf-test.sh

Kafka Producer(生產)壓力測試

進入kafka的安裝目錄,執行下面的命令

[sun@hadoop102 kafka]$ bin/kafka-producer-perf-test.sh  --topic test --record-size 100 --num-records 100000 --throughput -1 --producer-props bootstrap.servers=hadoop102:9092,hadoop103:9092,hadoop104:9092

說明:

  • record-size是一條信息有多大,單位是字節。
  • num-records是總共發送多少條信息。
  • throughput是每秒多少條信息,設成-1,表示不限流,可測出生產者最大吞吐量。

輸出:
在這裏插入圖片描述

參數解析:本例中一共寫入10w條消息,吞吐量爲1.45 MB/sec,每次寫入的平均延遲爲1718.17毫秒,最大的延遲爲3564.00毫秒。

Kafka Consumer(消費)壓力測試

Consumer的測試,如果這四個指標(IO,CPU,內存,網絡)都不能改變,考慮增加分區數來提升性能。
進入kafka的安裝目錄,執行下面的命令

[sun@hadoop102 kafka]$ bin/kafka-consumer-perf-test.sh --broker-list hadoop102:9092,hadoop103:9092,hadoop104:9092 --topic test --fetch-size 10000 --messages 10000000 --threads 1

參數說明:
--zookeeper 指定zookeeper的鏈接信息
--topic 指定topic的名稱
--fetch-size 指定每次fetch的數據的大小
--messages 總共要消費的消息個數

輸出:

在這裏插入圖片描述

  • start.time 開始時間:2021-01-27 13:55:20:963
  • end.time 結束時間:2021-01-27 13:55:36:555
  • data.consumed.in.MB 共消費數據:22.1497MB
  • MB.sec 吞吐量:1.4206MB/sec
  • data.consumed.in.nMsg 共消費消息條數:232256條
  • nMsg.sec 平均每秒消費條數:14895.8440條

計算Kafka分區數

  • 創建一個只有1個分區的topic
  • 測試這個topic的producer吞吐量(1.45m/s)和consumer吞吐量(1.42m/s)。數據來自上面的壓測
  • 假設他們的值分別是Tp和Tc,單位可以是MB/s。 4)然後假設你期望的目標吞吐量是Tt(10m/s),那麼分區數=Tt /min(Tp,Tc) ,這裏取最小值是因爲使最低的吞吐量都能達到期望的吞吐量。
  • 例如:producer吞吐量=20m/s;consumer吞吐量=50m/s,期望吞吐量100m/s;
  • 分區數=100 / 20 =5分區 5)分區數一般設置爲:3-10個

Kafka機器數量計算

  • Kafka機器數量(經驗公式)=2 (峯值生產速度副本數/100)+1
  • 先拿到峯值生產速度,再根據設定的副本數,就能預估出需要部署Kafka的數量。 副本數默認是1個
  • 在企業裏面2-3個都有,2個居多。
  • 比如我們的峯值生產速度是50M/s(一般不超過50M/s)。生產環境可以設置爲2。 Kafka機器數量=2(502/100)+1=3臺
  • 副本多可以提高可靠性,但是會降低網絡傳輸效率。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章