背景
在之前的業務場景中,我們發現Kafka的實際消費能力遠低于預期。盡管我們使用了kafka-go組件并進行了相關測試,測試情況見《kafka-go:性能測試》這篇文章。但并未能準確找出消費能力低下的原因。
我們曾懷疑這可能是由我的電腦網絡帶寬問題或Kafka部署時的某些未知配置所導致。
為了進一步確定問題的根源,我們決定對Kafka的消費能力進行壓力測試。
在這篇《kafka的Docker鏡像使用說明:wurstmeister/kafka》文章中我們介紹了基于Docker安裝并運行kafka的步驟。
這篇文章中我們重點看一下壓測的情況。
壓測
kafka消費者壓測。
測試命令
kafka-consumer-perf-test.sh --broker-list 172.26.224.165:30001 --topic dreame_mall_log_uat_business --fetch-size 10000 -messages 100000 --threads 1
參數解釋
- broker-list:部署的kafka節點地址。我這里測試的是部署在服務器上的kafka消費性能。
- topic:指定topic名稱
- fetch-size:指定每個fetch的數據大小,單位字節。
- messages:總共要消費的消息個數
使用方法
進入容器中,進入命令行工具,到bin目錄下,輸入上述測試命令。
結果
start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec
2025-02-18 03:52:57:888, 2025-02-18 03:59:35:970, 1732.0945, 4.3511, 100008, 251.2246
輸出參數含義?
start.time:開始時間
end.time:結束時間
data.consumed.in.MB:共消費數據,單位MB。如,我們上述的結果,1732.0945MB。? ? ? ??
MB.sec:吞吐量,每秒多少MB。如,我們上述的結果,4.3511MB/s。
data.consumed.in.nMsg:共消費數據。如,我們上述的結果,100008條。
nMsg.sec:平均每秒消費多少條。如,我們上述的結果,251.2246條/s。
結論
通過壓測工具的數據和我之前通過kakfa-go組件測試的情況看,kafka消費性能比預期差了很多的原因并不是由kafka-go這個組件導致的,應該是網絡帶寬限制造成的。??
進一步測試,我本地從WIFI切換到有線網絡,消費能力提升了一倍,確定了是我本地計算機網絡帶寬限制造成的。