Jmeter学习之JDBC测试计划(mysql)

一、测试环境准备

mysqlJDBC驱动:mysql-connector-java-5.1.25-bin.jar

将驱动文件复制到JMeter/lib目录下

二、设计测试计划并运行

1.打开JMeter,点击测试计划

点击“浏览…”按钮,将你的JDBC驱动添加进来。
Jmeter学习之JDBC测试计划(mysql)

2.添加一个线程组,右键点击“线程组”,在下面添加一个“JDBC Connection Configuration”
Jmeter学习之JDBC测试计划(mysql)
配置一下JDBC Connection Configuration页面
Jmeter学习之JDBC测试计划(mysql)
字段说明:

Variable Name: 变量名称,需要变量名绑定到池。需要唯一标识。与JDBC取样器中的相对应,决定JDBC取样的配置。简单理解就是在JDBC request的时候确定去哪个绑定的配置。
Max Number of Connection: 数据库最大链接数
PoolTimeout: 数据库链接超时,单位ms
Idle Cleanup Interval (ms): 数据库空闲清理的间隔时间,单位ms
Auto Commit:自动提交。有三个选项,true、false、编辑(自己通过jmeter提供的函数设置)
Transaction Isolation
事务间隔级别设置,主要有如下几个选项:(对JMX加解密)
【TRANSACTION_NODE 事务节点 、
TRANSACTION_READ_UNCOMMITTED 事务未提交读、
TRANSACTION_READ_COMMITTED 事务已提交读 、
TRANSACTION_SERIALIZABLE 事务序列化 、
DEFAULT 默认、
TRANSACTION_REPEATABLE_READ 事务重复读、
编辑】

Keep-Alive: 是否保持连接Max Connection age (ms):最大连接时长,超过时长的会被拒绝Validation Query:验证查询,检验连接是否有效(数据库重启后之前的连接都失效,需要验证查询)。
Database URL:如jdbc:mysql://localhost:3306/test 表示本地数据库,3306端口,数据库名称为test
JDBCDriver Class: JDBC的类,如org.gjt.mm.mysql.Driver

3.右键点击“线程组”,在下面添加一个“JDBC request”。

Jmeter学习之JDBC测试计划(mysql)

需要修改的参数包括Variable Name,要与上面的 JDBC Connection Configuration填写同样的内容,如此处的:mysqlconn。这里表示 JDBC Connection Configuration建立一个名为mysql 的连接池,之后其它的JDBC Request都共用这个连接池.

注意:SQL语句中,可以使用参数化.插入语句中的值也能参数化,如下图:
Jmeter学习之JDBC测试计划(mysql)

注意:SQL语句后面不能添加分号,否则报语法错误.

4.添加断言,右键点击线程组---->添加—>断言---->响应断言。
Jmeter学习之JDBC测试计划(mysql)
5.我们来添加一些监听器来行查看:

添加一个断言结果:右键点击线程组---->添加—>监听器---->结果断言。

添加一个图形结果:右键点击线程组---->添加—>监听器---->图形结果。

添加一个查看结果树:右键点击线程组---->添加—>监听器---->查看结果树。

下面是添加所有的列表:
Jmeter学习之JDBC测试计划(mysql)

6.在线程组页面设置用户数、启动时间、循环次数,再点击菜单栏“运行”----“启动”

下面是结果:
Jmeter学习之JDBC测试计划(mysql)

至此,数据库压测完成。

备注:Assertion Results对Jmeter压测的throughout有严重的影响。

三.遇到的问题

1、出现:java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@127.0.0.1:1521:ORCL错误解决

原来是因为没有加载包的缘故

解决方法:关闭jmeter,然后将mysql-connector-java-5.1.25-bin.jar复制到jmeter目录下面的lib目录中,重新启动运行即可。

2、连接MySQL数据库时,出现:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown character set: 'utf8mb4’错误

看起来似乎是设置字符的问题,后来在JDBC连接配置那里将Database URL加上字符编码即可(?characterEncoding=UTF-8)

jdbc:mysql://localhost/test?characterEncoding=UTF-8

3、出现:org.apache.avalon.excalibur.datasource.NoAvailableConnectionException: Could not create enough Components to service your request (Timed out).

解决方法:出现这个原因是因为连接超时,增大Pool TimeOUT就可以了。

4、执行时提示:ORA-00911: invalid character。

解决方法:确保你在JDBC Request里面的Query中输入的SQL语句是正确的。注意:SQL语句后面不要添加分号。