天天看点

Jmeter压力测试Mysql数据库

作者:散文随风想

一、连接MQSQL数据库

1、准备mysql驱动包

jmeter要连接mysql数据库,首先得下载mysql jdbc驱动包,尽量保证其版本和你的数据库版本一致,至少不低于数据库版本,否则可能有问题。官网下载地址为:MySQL :: Download Connector/J
Jmeter压力测试Mysql数据库

下载之后解压放到本地目录~

2、准备好驱动包后,需要把jdbc驱动jar包引入测试计划。

点击测试计划-->点击浏览-->选中mysql驱动jar包-->打开,如下图所示:

或者,把 mysql-connector-java-5.1.28.jar 放到Jmeter安装目录的lib/exp目录下,并重启jmeter.

Jmeter压力测试Mysql数据库

3、配置JDBC Connection Configuration

在线程组下新建一个JDBC Connection Configuration配置元件,需要用到这个元件来完成数据库的连接,详细配置如下图所示:
Jmeter压力测试Mysql数据库

这里我们主要关注Variable Name Bound to Pool 和Database Connection Configuration两部分内容,其他字段可以保持默认值

Variable Name:数据库连接池的名称,在JDBC Request中会用到; Database URL:数据库URL,jdbc:mysql:// IP地址:端口/库名; JDBC Driver Class:JDBC驱动 Username:数据库用户名; Password:数据库密码;

4、配置JDBC Requests

上面我们已经完成了对数据库的连接,但要完成对数据库操作的话呢,还需要新建一个取样器JDBC Request,如下图所示:

Jmeter压力测试Mysql数据库
Jmeter压力测试Mysql数据库

Query: 填写要被执行的SQL语句

Parameter values:参数值 Parameter types:参数类型 Variable names:保存sql语句返回结果的变量名 Result variable name:创建一个对象变量,保存所有返回的结果 Query timeout:查询超时时间 Handle result set:定义如何处理由callable statements语句返回的结果
至此一个最简单的jmeter连接mysql数据库的脚本就基本准备好了,接下来添加一个监听器:察看结果树 ,然后运行脚本即可,结果如下图所示:
Jmeter压力测试Mysql数据库

二、设置报告及定时器

2.1 查看结果树配置

Jmeter压力测试Mysql数据库

2.2 汇总报告配置

Jmeter压力测试Mysql数据库

2.3 聚合报告

Jmeter压力测试Mysql数据库

2.4 响应时间

Jmeter压力测试Mysql数据库

2.5 统一随机定时器

Jmeter压力测试Mysql数据库

2.6 观察并发测试效果

Jmeter压力测试Mysql数据库

设置了等待时间后,可以通过聚合报告清楚的看到每间隔2秒,同时发出200个请求。

如果不添加定时器,Jmeter每个连接线程向服务器发送的请求是不规律的,如果要最大程度的模拟请求压力,就需要用到Jmeter中定时器的功能,设置并发(Synchronizing Timer)、设置等待时间(固定定时器)是最常用的定时器。除了这两个定时器外,Jmeter还提供了其他几个定时器,本质上的目的都是控制请求频次来模拟真实的用户场景。

Jmeter压力测试Mysql数据库

三、JDBC REQUESTS参数化

方法(一):自定义用户变量,然后进行引用

1.在测试计划界面【用户定义的变量】里定义需要的变量

Jmeter压力测试Mysql数据库

2.在JDBC Request界面SQL Query输入框中以${变量名}的形式引用变量

Jmeter压力测试Mysql数据库

或者也可以在JDBC Request里添加一个用户定义的变量

点击JDBC Request --> 点击添加,点击配置元件,点击用户定义的变量

Jmeter压力测试Mysql数据库

然后定义需要的变量,如下图所示

Jmeter压力测试Mysql数据库

方法(二):在被执行的SQL语句中使用“?”作为占位符,并传递参数值和参数类型,其中,传递的参数值有常量和变量之分。

1、当传递的参数值是常量时,如下图所示,传入的订单号:

Jmeter压力测试Mysql数据库

2、当传递的值是变量时,如下图中的所示:

Jmeter压力测试Mysql数据库
Jmeter压力测试Mysql数据库

至于这里引用Variable names时,为什么在变量名后面加了一个“_1”,是因为查询到的结果是一个列表,所以不管它查询的是一条还是多条数据,都要通过下标去取它的值,写法就是:变量名_下标。

比如:

id name
100 Mike
101 Jane
sql语句返回2行2列,id和named的Variable names设置为A、C,那么要取name为Mike的值,就设置为C_1,取name等于Jame的值,就设置为C_2。

四、生成测试报告

生成测试报告命令:​

jmeter -n \
-t D:\OpenSources\校园小商品交易测试计划.jmx(脚本的绝对路径) \
-l 校园小商品交易JMeter测试.jtl(自定义的名称) \
-e -o D:\jmeterResult(测试报告的绝对路径)

# example
jmeter -n \
-t D:\OpenSources\test.jmx \
-l test-result.jtl \
-e -o D:\jmeterResult           

参数说明:

n: 非GUI模式执行JMeter
t: 脚本文件(.jmx文件)的路径
l: 指定生成测试结果的保存文件(.jtl格式),此文件必须不存在
e: 测试结束后,生成测试报告
o: 用于存放测试报告的路径           

继续阅读