1、Kafka壓測
用Kafka官方自帶的腳本,對Kafka進行壓測。Kafka壓測時,可以查看到哪個地方出現了瓶頸(CPU,內存,網絡IO)。
一般都是網絡IO達到瓶頸。
kafka-consumer-perf-test.sh
kafka-producer-perf-test.sh
2、Kafka Producer壓力測試
在.../kafka/bin目錄下
[duoduo@hadoop100 kafka_2.11-2.4.0]$ bin/kafka-producer-perf-test.sh --topic test --record-size 100 --num-records 100000 --throughput -1 --producer-props bootstrap.servers=hadoop100:9092,hadoop102:9092,hadoop101:9092
說明:
- record-size:一條信息有多大,單位字節
- num-records:總共發送多少條信息
- throughput:每秒多少條信息,設置成-1,表示不限流,可測生產者最大吞吐量
結果:
100000 records sent, 27495.188342 records/sec (2.62 MB/sec), 1461.75 ms avg latency, 2183.00 ms max latency, 1696 ms 50th, 2103 ms 95th, 2177 ms 99th, 2181 ms 99.9th.
解析:
- 一共寫入10萬條消息
- 吞吐量為2.62 MB/sec
- 每次寫入的平均延遲為1461.75ms
- 最大延遲2183.00 ms
3、Kafka Consumer 壓力測試
consumer測試,如果這四個指標(IO,CPU,內存,網絡)都不能改變,考慮增加分區數來提升性能
[duoduo@hadoop100 kafka_2.11-2.4.0]$ bin/kafka-consumer-perf-test.sh --broker-list hadoop100:9092 --topic test --fetch-size 10000 -messages 10000000 --threads 1
參數說明:
- broker-list:節點地址
- topic:指定topic名稱
- fetch-size:指定每個fetch的數據大小
- messages:總共要消費的消息個數
結果:
start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec, rebalance.time.ms, fetch.time.ms, fetch.MB.sec, fetch.nMsg.sec
2020-06-27 13:17:57:490, 2020-06-27 13:18:11:751, 20.0272, 1.4043, 210000, 14725.4751, 1593235077858, -1593235063597, -0.0000, -0.0001
解釋:
- 開始時間
- 結束時間
- 共消費數據:20.0272M
- 吞吐量:1.4043MB/s
- 共消費數據:210000條
- 平均每秒消費:14725.4751條
4、Kafka機器數量計算
Kafka機器數=2 *(峰值生產速度 * 副本數 / 100)+1
比如:峰值生產速度為50M/s,副本為2
Kafka機器數=2*(50*2/100)+1=3(台)