一个基于jmeter的kafka的压测工具
背景:
由于工作中经常需要对微服务的性能进行测试,项目中的业务场景也多是对数据的处理,因此就有对消息中间件进行高性能生产消息的诉求,当前数据来源多是通过kafka,因此想研究下当前比较流行的压测工具是否满足需求,而kafka自带的kafka-producer-perf-test.sh工具又无法自定义发送的消息体,因此难以满足指定消息触发的业务场景。
调研:
jmeter拥有丰富的插件资源,网上还搜到不少jemter+kafkameter插件的帖子,例如
https://blog.csdn.net/masound/article/details/85101101 (文中指出的kafkameter源码地址 https://github.com/BrightTag/kafkameter 已不存在)
https://blog.csdn.net/jwcxs_m/article/details/103530869
https://blog.csdn.net/hui_yong/article/details/123498954
但不是源码地址已不存在就是需要通过一些云空间进行付费付点数下载,且年代已相对久远
经过进一步的调研,发现github上贡献了较为成熟的开源插件,经过比较,选择了一个较为活跃,星数相对较多的进行尝试:https://github.com/rollno748/di-kafkameter
动手:
1、下载源码(由于是java实现,因此也方便打包),生成di-kafkameter-1.0.jar包
2、将jar包放入jmeter目录 lib\ext文件夹下,并启动jmeter.bat
3、新建一个TestPlan,取个名字KafkaTestPlan,右击KafkaTestPlan->Add->Threads(Users)->Thread Group
4、右击刚新建的ThreadGroup,Add->Sampler,此时会新增一个KafkaProducerSampler
5、点击KafkaProducerSampler,可以设置topic名,消息体等
6、此时需要增加kafka配置参数,点击KafkaTestPlan->Add->Config Element 此时会新增一个kafkaProducerConfig
7、点击kafkaProducerConfig,可以设置kafka的相关属性配置,具体支持哪些参数可以参考https://github.com/rollno748/di-kafkameter 中
Producer Config Properties which can be added as part of producer creation. 一栏
8、此时就可以设置压测参数了,比如这里设置了10线程,一共跑1000000次,具体的压测频率也可以根据需求设置,由于和jmeter用法一致,这里就不多赘述。
9、尝试跑测,可以事先运行一个kafka的consumer,并点击jmeter运行,可以看到kafka consumer消费到了消息