kafka消费能力压测:使用官方工具
背景
在之前的业务场景中,我们发现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这个组件导致的,应该是网络带宽限制造成的。