使用JMeter进行MySQL的压力测试
* GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
- 前言
- 1. JMeter安装
- 2. 导入MySQL驱动
- 3. 配置并使用JMeter连接数据库
- step1:添加JDBC Connection Configuration
- step2:添加JDBC Request
- step3:运行并查看结果
- 4. 其他使用小技巧
- 对查询结果进行简单处理
- 混合场景设置
- 总结
前言
JMeter
是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。而且JMeter
拿到安装包之后直接解压就可以使用,同时它也可以在linux/windows/macos
上使用。
JMeter
可以做接口测试和压力测试,其中接口测试的简单操作包括做 http 脚本(发 get/post 请求、加 cookie、加 header、加权限认证、上传文件)、做webservice
脚本、参数化、断言、关联(正则表达式提取器和处理 json-json path extractor),而且JMeter
还能进行数据库的相关测试。
1. JMeter安装
在安装JMeter
之前需要先配置好JDK环境,然后通过JMeter
官网下载(https://jmeter.apache.org/download_jmeter.cgi)安装包解压,即可直接使用。
2. 导入MySQL驱动
在MySQL官网(https://downloads.mysql.com/archives/c-j/)找到对应版本的MySQL驱动进行下载,并将其拷贝到%JMETER_HOME%\lib\ext
目录下,重启JMeter
。
3. 配置并使用JMeter连接数据库
step1:添加JDBC Connection Configuration
在配置元件中选择JDBC Connection Configuration
进行添加,正常情况下只要修改以下参数即可,其他均使用默认值:
Variable name
: 连接池变量名在稍后要添加的JDBC Request中要保持一致。Database URL
: MySQL的标准格式为:jdbc:mysql://host[:port]/dbname
,根据实际情况进行修改。JDBC Driver class
:MySQL驱动就是com.mysql.jdbc.Driver。Username和Password
:根据实际情况正确填写即可。
step2:添加JDBC Request
在线程组中选择取样器添加JDBC Request
:
Variable name
:与之前的设置的连接池变量名一致。Query Type
:主要包括八种类型,每种类型作用都不一样。
1.Select statement:执行第一条sql语句的查询,如果是多条sql语句也只会执行第一条sql语句;
2.Update statement:执行第一条更新语句,包含insert和update;
3.Callable statement:执行多条sql语句,也可以调用存储过程,需要注意的是选择该类型,在JDBC连接配置的Database URL后需要添加?allowMultiQueries=true;
4.Prepared select statement:执行预编译的查询语句,语句中的参数可以从parameter values中获取;
5.Prepared update statement:执行预编译的更新语句包含insert和update;
6.Commit:将未存储的SQL语句结果写入数据库表;
7.Rollback:撤销指定SQL语句的过程;
8.AutoCommit(false):禁用自动提交;Autocommit(true): 开启自动提交;
Result variable name
:输入变量名称,如result
,表示将查询结果放到result
变量中, 后续再通过BeanShell
对结果进行处理,多个变量名可以以逗号分隔。
step3:运行并查看结果
一般我们会再添加监听器下的两项功能:察看结果树和汇总报告,用于结果的查看;
- 线程组设置:线程数即并发用户数,持续时间即执行测试的时长也可以使用循环次数,按次数对测试时长进行控制 ;
- 察看结果树:用于结果的输出,在压测过程中,建议仅输出错误的日志;
- 汇总报告:显示压测结果,主要观察以下参数:
1.Samples:表示一共发出的请求数;
2.Average:平均响应时间,默认情况下是单个Request的平均响应时间(ms);
3.Error%:测试出现的错误请求数量百分比,如果察看结果树有勾选日志输出,也可以直接查看日志;
4.Throughput:简称tps,吞吐量,默认情况下表示每秒处理的请求数,也就是指服务器处理能力,tps越高说明服务器处理能力越好。
全部配置好,就可以点击菜单栏的"启动"开启测试,一般在压力较大的情况下,不建议使用GUI进行操作,可通过JMeter
的命令行直接执行测试。
4. 其他使用小技巧
对查询结果进行简单处理
如果想将上述SELECT的查询结果保存到文件中,可以通过添加BeanShell PostProcessor
进行处理。
- 获取结果集中的记录数量:
vars.getObject("result").size()
- 获取某一行中某个字段的值:
vars.getObject("result").get(0).get("realname")
- 第一行的索引是从0开始的,所以get(0)表示取第一行,
get("realname")
表示获取realname
这个字段的值
混合场景设置
对数据库的测试经常会涉及到混合场景,比如按一定的并发比例进行增删改查的测试,JMeter
混合场景一般有三种方式进行设置:
- 吞吐量控制器
- IF控制器
- 多个线程组方式
我们推荐使用:吞量控制器,通过设置多个控制器的吞吐量百分比例来实现增删改查的混合场景测试。
Based on
:有两个选项Total Executions
:执行数量Percent Executions
:执行百分比(1-100)
总结
本次只介绍了JMeter
连接MySQL的最基本用法,JMeter
也支持PostgreSQL,Oracle,MSSQL等等数据库,而且还提供了非常丰富的功能需要自己去动手实践。
Enjoy GreatSQL :)
《深入浅出MGR》视频课程
戳此小程序即可直达B站
https://www.bilibili.com/medialist/play/1363850082
文章推荐:
- MySQL源码解析之执行计划
- 有趣的SQL DIGEST
- ulimits不生效导致数据库启动失败和相关设置说明
- MySQL客户端显示binary字符代码改造
- 14. 流量控制(流控) | 深入浅出MGR
关于 GreatSQL
GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。
Gitee: https://gitee.com/GreatSQL/GreatSQL
GitHub: https://github.com/GreatSQL/GreatSQL
Bilibili:
https://space.bilibili.com/1363850082/video
相关文章
- MySQL连接缓慢:解决方案(mysql连接很慢)
- MySQL注释符号使用介绍(mysql的注释符号)
- 如何使用VS2010连接MySQL数据库(vs2010连接mysql数据库)
- MySQL循环游标的高效使用方法(mysql循环游标)
- MySQL时间戳转换为字符串的方法(mysql时间转换字符串)
- 25字中文标题:如何使用MySQL管理已有数据库(mysql已有数据库)
- 使用MySQL触发器轻松创建表!(mysql触发器创建表)
- MySQL互相同步:实现数据可靠性(mysql互相同步)
- 使用MySQL定位昨天日期的方法(mysql昨天日期)
- MySQL数据库系统操作:使用DOS 命令(mysql dos 命令)
- Windows无法启动MySQL服务:解决方案.(windows无法启动mysql服务)
- 京东使用MySQL大幅提升数据库性能(京东 mysql)
- 恢复MySQL数据库:简单的SQL指令方法(还原mysql数据库命令)
- 脚本使用Bat命令快速执行MySQL脚本(bat命令执行mysql)
- MySQL中sys系统库的作用和使用方法(mysql中sys)
- MySQL中使用Cursor浏览数据库记录(mysql中cursor)
- ADO技术实现MySQL数据库连接(ado方式连接mysql)
- MySQL中如何使用匹配模式符(mysql中匹配模式符)
- MySQL三种注释的使用方法和区别(mysql 三种注释)
- MySQL事务保证数据完整性的关键技术(mysql。事务)
- 深入探究MySQL rowid的作用和使用方法(mysql _rowid)
- 使用MySQL导入数据,无需创建表格(mysql不建表导入数据)
- MySQL为何有些人不喜欢使用外键设计数据库表结构(mysql 不要外键)
- MySQL漏洞密码未被检查(mysql不检查密码)