快速下载:
通用版本:kafka-data_set-pump.jar 密码:cuah
kafka集群0.8.2.x版本:kafka-pump-0.8.2.x.jar 密码:QUz7
平台jmeter版本下载:飞书链接:jmeter.zip 密码:7Umr
前言
通常使用kafka数据集来做影子数据迁移,从Atopic 迁移到影子topic来做压测, 文中会介绍kafka数据集的使用方法。
快速配置
- 将下载好的插件放入jmeter lib/ext 目录下,启动jmeter,注意两个版本的数据集插件不能同时放在lib/ext目录下
- 添加取样器,选择kafka数据集
- 对应配置介绍
- 变量名
用于在JMeter脚本中,通过${变量名}
的方式使用变量
${变量名}
代表从Kafka中获取到的数据
${变量名-topic}
代表是从哪个Topic取到的数据
${变量名-partition}
代表从哪个分区取到的数据
- 消费结束触发字符
和业务逻辑无关,是插件运行逻辑所需的变量,类似于CSV数据集中的分隔字符串“,”。
要保证这个字符不会和从Kafka中获取的消息相同,不然会提前触发消息消费完毕的逻辑。
- kafka配置
集群地址:对应被读取数据集群的zk地址
队列名称:对应被读取数据的topic名称
分区编号:对应从那个分区读取数据
偏移量: 对应从哪里开始读取数据,注意,偏移量必须连续,如果存在不连续情况,数据集会停止工作
序列化:默认使用的是String的反序列化方式,如果需要使用其他反序列化,参考下面表格
序列化方式 | 通用版本 | 0.8.2.x 版本 |
PisKryo | io.shulie.jmeter.plugins.kafka.dataset.deserializer.PisKryoDeserializer | io.shulie.jmeter.plugins.kafka.pump.deserializer.PisKryoDeserializer |
Protobuf | io.shulie.jmeter.plugins.kafka.dataset.deserializer.ProtobufDeserializer | io.shulie.jmeter.plugins.kafka.pump.deserializer.ProtobufDeserializer |
- 内存配置
队列容积和缓冲池大小一般不需要调整
- 超时时间
如果存在网络链接慢点情况,可以适当调试超时时间,超时时间单位为毫秒
进阶配置
通常情况下,kafka有多个分区(最多32个),需要从ATopic32个分区迁移到另外一个Topic的32个分区中,下面我们来介绍如何配置。
注意:kafka数据集只能使用并发模式去跑,TPS模式运行的话会出现一些未知问题,如果想要并发模式控制TPS值,可以通过增加常数吞吐量控制器来解决。
csv数据文件设置
该配置项需要配置的是偏移量的初始值和分区数据,需要几个分区csv中就有几条数据。
csv检查: 使用文本编辑工具打开csv文件,注意结尾不要有空行。
kafka数据集设置
这里需要注意的是分区和偏移量填写的是csv读取出来的数据,其他按照快速配置内容进行配置即可
java请求
这里和常规发送kafka没有太大区别,需要注意的是kafka_messge 的值是kafka数据集基本配置的变量名称(可以随意改动,但是两个位置变量名称要保持一致,kafka_partition:一般填写和kafka分区编号变量名称保持一致,保证分区读写保持一致。
常数吞吐量控制器设置
在发送kafka的java请求中右键->添加->定时器->Constant Throughpout Timer
这里有两个配置,一个是每分钟吞吐量控制,一个是控制范围
每分钟吞吐量控制
目标TPS*1.1/pod个数*60(s),其中1.1 是上浮10%,因为都是1个并发在跑,不同pod的TPS可能不同,上浮10%是为了保证一定能达到目标TPS,如果实际运行时超过目标TPS太多,或者没有跑到指定的TPS,可是适当调整脚本上浮比例设置。
控制范围
这里选择控制所有线程 all active threads in current thread group(shared)
平台操作(基于Takin)
kafka数据集目前支持在2.0平台上使用。
上传步骤:
- 新增业务流程,上传脚本保存
- 选择使用的kafka 发送插件, 本地版本是0.2.0或0.8的kafkameter 选择0.8版本,本地版本是2.5的可以选择平台2.5版本
- 编辑匹配业务活动(平台在1.0的可以选择虚拟业务活动)
- 上传依赖的数据文件:csv文件和kafka数据集插件(文档最上的下载链接),如果有用到个性化序列化需要上传依赖的jar
- csv文件选中拆分
平台使用:
- 多分区的脚本不支持脚本调试,仅支持压测场景启动
- 仅支持并发模式压测
- 启动场景设置选择并发模式,选择固定并发,然后并发数以及pod数和csv文件中分区格式保持一致。就是有几个分区就起几个pod,有几个pod就设置几个并发(仅有数据集场景才会这样设置)
本文来自投稿,不代表TakinTalks稳定性技术交流平台立场,如若转载,请联系原作者。