本篇是个初步设想,mark一下,几次大促和书香节压测发现处理参数化时弊端挺多,想改进一下。现在还得以项目为主,搞完书香节压测我就把它完整实现
性能测试一个关键环节是压测参数化数据处理~,电商大促保障又或者新系统上线,系统性能评估、演练都需要给系统比较大的压力(参数化文件或者参数化报文至少上G或者10G的文本)
对于只能使用一次的数据,之前的做法是将数据分块,分别发送到压力机器上(前面的文章有一个windows之间文件分发的案例就是做这个用的)。
- 优势
- 不需要复杂的工具支持,直接使用文本工具就能够处理,比如可以在linux下直接借助split命令将文件按行数切分(只是一个列子,需求可能是多样的)
- 对于小规模的测试快速,易上手
- 劣势
- 更换数据,需要重复执行(筛选数据,切割文件、分发文件)
- 手工处理出错概率比较大
- 大数据文件处理废时
- 压力机器数量较多时,也比较废时
设想解决方案
1、不处理文件,将大文件分别copy到各个压力机上,使用p2p技术,增加服务下载文件的速度,然后在每个服务器上按位置读取文件
- 不用处理文件,直接将文件上传到各个服务器上,但是这个需要相应客户端的支持(局域网可以局域网管理工具)
- 在现有的工具中比如jmeter、lr中使用按位置读取文件,需要写插件
2、本地将文件处理分块,然后分发到各个服务
- 可以借助linux切割文件
- 程序实现读写文件处理逻辑
不管用哪种方式处理,都必须有源文件获取过程,文件上传过程~
计划
先采用第二种方案做
大概需要包含一下内容:
源数据采集配置
- 数据来源:数据库、文件系统、日志系统
- 数据来源配置:
- 数据库:数据库类型、ip、user、passwd、database
- 文件系统:ip、user、passwd、path
- 日志系统:ip、user、passwd、path
- 筛选规则
- 语句或者正则
文件生成
- 与采集配置是1:n关系
- 数据分割
- 使用java实现:使用消费者生产者的模式进行多线程读和多线程写
- 服务器维护
- 支持分组
- 支持连续快捷选择
- 分发文件到压力机
- linux,可以简化用包装命令实现
- windows之间的文件分发,使用pscp可以完成
- 传输文件的完整性可以使用文件的md5校验