【kafka壓測】關於kafka性能壓測(kafka內置壓測工具)

 

使用Jmeter壓測Kafka:https://www.blazemeter.com/blog/apache-kafka-how-to-load-test-with-jmeter/node

Kafka壓力測試(寫入MQ消息壓測和消費MQ消息壓測):https://blog.csdn.net/laofashi2015/article/details/81111466nginx

kafka內置壓測:apache

複製代碼

//生產壓測
bin/kafka-producer-perf-test.sh --topic test_perf --num-records 1000 --record-size 2000 --throughput 10 --producer-props bootstrap.servers=localhost:9092

//消費壓測
bin/kafka-consumer-perf-test.sh --broker-list localhost:9092 --topic test_perf --fetch-size 10 --messages 1000 --threads 2
ticle/details/85335152

複製代碼

 

1.測試目的
        本次性能測試在正式環境下單臺服務器上Kafka處理MQ消息能力進行壓力測試。測試包括對Kafka寫入MQ消息和消費MQ消息進行壓力測試,根據10w、100w和1000w級別的消息處理結果,評估Kafka的處理性能是否知足項目需求。(該項目指望Kafka可以處理上億級別的MQ消息)
bootstrap

2.測試範圍及方法
2.1測試範圍概述
   測試使用Kafka自帶的測試腳本,經過命令對Kafka發起寫入MQ消息和Kafka消費MQ消息的請求。模擬不一樣數量級的MQ消息寫入和MQ消息消費場景,根據Kafka的處理結果,評估Kafka是否知足處理億級以上的消息的能力。

centos

2.2性能測試場景設計
2.2.1Kafka寫入消息壓力測試
測試場景

tomcat

MQ消息數服務器

每秒寫入消息數網絡

記錄大小(單位:字節)工具

Kafka消息寫入測試性能

10W

2000條

1000

100W

5000條

1000

1000W

5000條

1000

2.2.2Kafka消費消息壓力測試
測試場景

消費MQ消息數

Kafka消息消費測試

10W

100W

1000W

2.3測試方法簡要描述
2.3.1測試目的
     驗證帶臺服務器上Kafka寫入消息和消費消息的能力,根據測試結果評估當前Kafka集羣模式是否知足上億級別的消息處理能力。

2.3.2測試方法
     在服務器上使用Kafka自帶的測試腳本,分別模擬10w、100w和1000w的消息寫入請求,查看Kafka處理不一樣數量級的消息數時的處理能力,包括每秒生成消息數、吞吐量、消息延遲時間。Kafka消息吸入建立的topic命名爲test_perf,使用命令發起消費該topic的請求,查看Kafka消費不一樣數量級別的消息時的處理能力。

壓測命令信息:
測試項

壓測消息數(單位:W)
測試命令

寫入MQ消息

10
./kafka-producer-perf-test.sh --topic test_perf --num-records 100000 --record-size 1000  --throughput 2000 --producer-props bootstrap.servers=10.150.30.60:9092

100
./kafka-producer-perf-test.sh --topic test_perf --num-records 1000000 --record-size 2000  --throughput 5000 --producer-props bootstrap.servers=10.150.30.60:9092

1000
./kafka-producer-perf-test.sh --topic test_perf --num-records 10000000 --record-size 2000  --throughput 5000 --producer-props bootstrap.servers=10.150.30.60:9092

消費MQ消息

10
./kafka-consumer-perf-test.sh --zookeeper localhost:2181 --topic test_perf --fetch-size 1048576 --messages 1000000 --threads 1

100
./kafka-consumer-perf-test.sh --zookeeper localhost:2181 --topic test_perf --fetch-size 1048576 --messages 10000000 --threads 1

1000
./kafka-consumer-perf-test.sh --zookeeper localhost:2181 --topic test_perf --fetch-size 1048576 --messages 10000000 --threads 1

腳本執行目錄:服務器上安裝Kafka的bin目錄;
3.測試環境
3.1測試環境機器配置表
主 機


數量

資 源

操做系統

MQ消息服務

1

硬件:8(核)-32768(M)-100(G)

軟件:Kafka集羣(Kafka_2.11-0.10.1.0)

centos7.3

MQ消息處理

 

1

硬件:8(核)-32768(M)-100(G)

軟件:Kafka集羣(Kafka_2.11-0.10.1.0)

centos7.3

測試機配置

1

硬件:8(核)-32768(M)-100(G)

軟件:node(V6.11.3)運行環境、jdk1.八、tomcat八、nginx

centos7.3

3.2 測試工具
Kafka壓測工具

Kafka自帶壓測腳本

4.測試結果
4.1測試結果說明
本次測試針對Kafka消息處理的能力 進行壓力測試,對Kafka集羣服務器中的一臺進行MQ消息服務的壓力測試,關注Kafka消息寫入的延遲時間是否知足需求。對Kafka集羣服務器中的一臺進行MQ消息處理的壓力測試,驗證Kafka的消息處理能力。

4.2測試結果
4.2.1寫入MQ消息
測試項

設置消息總數
(單位:w)

設置單個消息大小
(單位:字節)

設置每秒發送消息數

實際寫入消息數/秒

95%的消息延遲
(單位:ms)

寫入MQ消息

10

1000

2000

1999.84

1

100

1000

5000

4999.84

1

1000

1000

5000

4999.99

1

壓測結果截圖
寫入10w消息壓測結果


 

寫入100w消息壓測結果
 

寫入1000w消息壓測結果


kafka-producer-perf-test.sh 腳本命令的參數解析(以100w寫入消息爲例):
--topic topic名稱,本例爲test_perf
--num-records 總共須要發送的消息數,本例爲100000
--record-size 每一個記錄的字節數,本例爲1000
--throughput 每秒鐘發送的記錄數,本例爲5000
--producer-props bootstrap.servers=localhost:9092 (發送端的配置信息,本次測試取集羣服務器中的一臺做爲發送端,可在kafka的config目錄,以該項目爲例:/usr/local/kafka/config;查看server.properties中配置的zookeeper.connect的值,默認端口:9092)





MQ消息寫入測試結果解析:
本例中寫入100w條MQ消息爲例,每秒平均向kafka寫入了4.77MB的數據,大概是4999.875條消息/秒,每次寫入的平均延遲爲1毫秒,最大的延遲爲647毫秒,1ms內佔99%。

4.2.2消費MQ消息
消費MQ消息

消費消息總數
(單位:w)

共消費數據
(單位:M)

每秒消費數據
(單位:M)

每秒消費消息數

消費耗時
(單位:s)

消費MQ消息

10

95.36

137

143899.3

0.695

100

953.66

177.19

185804.5

5.38

1000

9536.73

198.25

207878.6

48.11

壓測結果截圖

消費10w消息壓測結果 消費100w消息壓測結果 消費1000w消息壓測結果 kafka-consumer-perf-test.sh 腳本命令的參數爲: --zookeeper 指定zookeeper的連接信息,本例爲localhost:2181 ; --topic 指定topic的名稱,本例爲test_perf,即4.2.1中寫入的消息; --fetch-size 指定每次fetch的數據的大小,本例爲1048576,也就是1M --messages 總共要消費的消息個數,本例爲1000000,100w 以本例中消費100w條MQ消息爲例總共消費了953.66M的數據,每秒消費數據大小爲177.19M,總共消費了10000004條消息,每秒消費185804.53條消息。 5.結果分析        根據4.2.測試結果,能夠看出在單臺服務器上,寫入MQ消息設置5000條/秒時,消息寫入及時,95%的消息延遲時間小於等於1ms,在可接受範圍內;Kafka消費MQ消息時,1000W待處理消息的處理能力在每秒20w條以上,處理結果理想。    根據Kafka處理10w、100w和1000w級的消息時的處理能力,能夠評估出Kafka集羣服務,是否有能力處理上億級別的消息。 本次測試是在正式環境集羣服務中的單臺服務器上進行,基本不須要考慮網絡帶寬的影響。因此單臺服務器的測試結果,對評估集羣服務是否知足上線後實際應用的需求,頗有參考價值。

相關文章
相關標籤/搜索