JMter工具对MySQL压力测试
一、下载JMeter
1、下载
地址:https://jmeter.apache.org/download_jmeter.cgi
2、解压
3、配置环境变量
4、设置中文语言
在安装目录的bin目录下找到jmeter.properties文件,修改39行中的:
#language=en
为:
language=zh_CN
5、cdm输入jmeter启动应用
二、MySQL压测
1、前期准备
(1)创建测试计划
(2)添加mysql依赖包
(3)创建线程组
2、获取查询SQL(业务方提供)
select * from 表名 where OrdTime >= '${OrdTime}' and OrdTime <= '${__timeShift(yyyy/MM/dd HH:mm:ss,,P1d,,${OrdTime})}' and storeGid = ${storeGid} ORDER BY CreationTime DESC LIMIT 10;
3、获取测试基准(产品方提供)
4、基于测试基准获取测试基线数据
(1)修改测试计划并命名为DDM
(2)在测试计划下创建线程组并以库名.表名的形式进行重命名,比如:A库.A表
(3)在该线程组中调整线程数为1(以1/100/1000分三组进行测试,因为MySQL有缓存的原因,因此每组需要测试2次,第一次未命中缓存,第二次可能会命中缓存)
(4)在线程组下新建一个JDBC Connection Configuration并配置相关参数
(5)在线程组下新建一个JDBC Requests,并将相关参数填上
select * from xxx表 where OrdTime >= '${OrdTime}' and OrdTime <= '${__timeShift(yyyy/MM/dd HH:mm:ss,,P1d,,${OrdTime})}' and storeGid = ${storeGid} ORDER BY CreationTime DESC LIMIT 10;
参数介绍:
Query:填写要被执行的SQL语句
Parameter values:参数值
Parameter types :参数类型
Variable names:保存sql语句返回结果的变量名
Result variable name:创建一个对象变量,保存所有返回的结果
Query timeout:查询超时时间
Handle result set:定义如何处理由callable statements语句返回的结果
(6)使用Navicat工具连接MySQL,复制所需要的表,仅表结构
(7)通过insert的方式将复制表写入5万条数据(由于数据量过大,每次查询不同间隔的时间查询1万条数据,这样快一些,凑够5万条数据即可)
insert into xxx_copy1 select * from xxx where OrdTime >= '20230713' and OrdTime < '20230716' limit 10000;
(8)复制表有了数据之后就可以导出复制表中的数据为CSV文件
(9)Jmeter添加:CSV 数据文件设置(SQL语句中的变量会通过CSV文件进行随机读取,变量的使用方式为:${变量名})
(10)添加查看结果树、聚合报告、汇总报告
(11)启动线程组
(12)依次获取1/100/1000线程平均响应时间并将该值填写到云文档中,供产品方参考(测试完一组之后将测试结果清除再继续)
参数介绍:
样本数= 用户数*循环次数
平均值:单个请求的平均响应时间,单位ms
中位数:50%用户的请求时间,单位ms
90百分位:90%用户的请求时间,单位ms
最小值:单个请求最小的响应时间,单位ms
最大值:单个请求的最大的响应时间,单位ms
异常%:有问题的请求数/样本
吞吐量:单位不定,慢的时候是请求数/小时,即单位小时内的请求数,快的时候是 :请求数/秒,即每秒中的请求数,需要自己换算
接收kb/sec :每秒从服务器端接收到的数据量
发送kb/sec:每秒从服务器发送的数据量
(13)经过压力测试得知,最大数据量的那张表100并发,平均响应时间在4754ms,因此压测结论是:100并发会在5s内返回响应数据
5、过载测试
由于DDM没有过载保护机制,若进行过载测试可能会将数据库搞崩,故过载测试暂不执行。
TPS(系统吞度量)= 并发数/平均响应时间。一般进行过载测试都是进行 tps*1.25、tps*4、tps*10 进行
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本