首页 > 技术文章 > Jmeter连接SqlServer数据库进行压力测试

yunlong-study 2018-11-12 10:54 原文

前提准备:先安装jdbc驱动

将sqljdbc4.jar放置jmeter的安装目录/lib下;复制之后重新启动jmeter;

 

1.测试计划—配置驱动程序

  测试计划右下角,点击浏览,选择jdbc驱动

 

2.添加线程组

右击测试计划——添加——Thread——线程组

 

3.添加配置元件JDBC Connection Configuration

 

4.配置JDBC Connection Configuration

  

 

Variable Name: 变量名称,需要变量名绑定到池。需要唯一标识。与JDBC取样器中的相对应,决定JDBC取样的配置。简单理解就是在JDBC request的时候确定去哪个绑定的配置。

MaxNumber 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:验证查询,检验连接是否有效(数据库重启后之前的连接都失效,需要验证查询)

 

需要配置的参数有:

(1)Variable Name:test  后续JDBC Request中也会用到这个值;

(2)Database URL:jdbc:sqlserver://192.168.1.2:1222;databaseName=DBname  (DBname为数据库名称);

(3)JDBC Driver class:com.microsoft.jdbc.sqlserver.SQLServerDriver(sql2008之前的版本)   (SqlServer固定写法,每个数据库的不一样com.microsoft.sqlserver.jdbc.SQLServerDriver(sql2008));

(4)Username Password数据库的用户名和密码; 

Database URL的构成参照表(jmeter的help中也有)见下:

  

5.添加JDBC Request

 

6.配置JDBC Request参数

 

7.添加监听器

 

查看结果树在正式测试压力的时候,要去掉,否则会由于IO的情况,使JMeter和系统都会变得很卡。切记。

8.运行,查看结果

 

 

9.第八步的结果是正常的话,删除查看结果树;设置线程组,选择forever;添加聚合报告,点击run按钮,通过监控器——聚合报告,查看结果。

 

10.DB端压步上去,调整当前JMeter的线程数,或者增加JMeter的测试机器数。

 

可能出现的问题:

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

原来是因为没有加载包的缘故,关闭jmeter,然后将class12.jar复制到jmeter目录下面的lib目录中,重新启动运行即可。

 

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

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

jdbc:mysql://127.0.0.1:3306/paydb?characterEncoding=UTF-8

 

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

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

 

转自:https://blog.csdn.net/qq_36260310/article/details/76179592

           https://blog.csdn.net/qq_35451939/article/details/79728789

推荐阅读