Jmeter使用JDBC对数据库压测

2021-11-11 10:08:53 浏览数 (1)

背景说明

压测除了全链路压测外,有时候也需要对指定服务进行性能测试,这里以jmeter工具对数据库进行压测说明。

压测不同数据库需要安装不同的数据库驱动,这里以mysql为例进行压测。

步骤一:数据库驱动安装

1.进入mysql官网,根据不同mysql版本下载对应的数据库驱动mysql-connector-java,下载mysql-connector-java,对应版本参考下图:

2.进去后根据自己操作系统下载压缩包

3.下载完成后解压,找到mysql-connector-java-xxx.jar的jar包,把jar包放到jmeter安装路径下的lib目录下即可,然后打开jmeter应用

步骤二:JDBC Connection Configuration配置

添加一个JDBC Connection Configuration,测试计划->添加->配置元件->JDBC Connection Configuration,用于连接数据库。

Variable Name Bound to pool

数据库连接池配置

配置项

说明

Variable Name for created pool

数据库连接池的名称,填写变量名,和JDBC request中的Variable Name进行绑定

Connection pool Configuration

连接池参数配置,基本保持默认即可,可根据需要进行修改

配置项

说明

Max Number of Connection

数据库最大链接数,一般可设置为0,意思是每个线程都使用单独的数据库连接,线程之间数据库连接不共享

Max Wait (ms)

在连接池中取回连接最大等待时间

Time Between Eviction Runs(ms)

线程可空闲时间如果当前连接池中某个连接在空闲了 time Between Eviction Runs Millis 时间后任然没有使用,则被物理性的关闭掉

Auto Commit

自动提交sql语句

Read timeout(ms)

等待服务器响应的超时时间

Transaction isolation

事务隔离级别,主要有如下几个选项:(对JMX加解密) TRANSACTION_NODE 事务节点 、TRANSACTION_READ_UNCOMMITTED 事务未提交读、TRANSACTION_READ_COMMITTED 事务已提交读 、TRANSACTION_SERIALIZABLE 事务序列化 、DEFAULT 默认、TRANSACTION_REPEATABLE_READ 事务重复读

Preinit Pool

立即初始化连接池如果为 False,则第一个 JDBC 请求的响应时间会较长,因为包含了连接池建立的时间

Connection Validation by Pool

验证连接池是否能响应

配置项

说明

Test While Idle

当连接空闲时测试是否断开

Soft Min Evictable Idle Time(ms)

连接在池中处于空闲状态的最短时间,默认值为5000(5秒)

Validation Query

一个简单的查询,用于确定数据库是否仍在响应

Database Connection Configuration

数据库连接配置

配置项

说明

Database URL

数据库连接 URL,具体说明见注1

JDBC Driver class

数据库JDBC驱动类名,选择对应数据库的数据驱动

Username

数据库登录用户名

Password

数据库登录密码

Connection Properties

建立连接时要设置的连接属性

注1:Database URL: jdbc:mysql://服务器地址:3306/数据库名(比如:jdbc:mysql://ip:3306/数据库名?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true。其中&allowMultiQueries=true表示允许执行多条sql)

步骤三:JDBC Request配置

数据库连接配置完成后添加JDBC Request,线程组->添加->取样器->JDBC Request,用于对JDBC请求

Variable Name Bound to pool

数据库连接池配置

配置项

说明

Variable Name for pool declared in JDBC Connection Configuration

数据库连接池的名称,和JDBC Connection Configuration的Variable Name for created pool名字保持一致

SQL Query

sql语句,这里以查询为例

配置项

说明

Query Type

sql语句类型,这里的语句选择的select statement,根据实际测试sql来选择

Query

填写的sql语句,多条语句中间用;分割,语句末尾不加;

JDBC Request

要传输的值

Parameter types

传输值的类型

Variable names

sql执行结果变量名

Result variable names

所有结果当做一个对象存储

Query timeouts(s)

查询超时时间

Limit Result Set

限制 sql 语句返回结果集的行数

Handle Result Set

如何定义 callable statements 返回的结果集;默认是存储为字符串

步骤四:脚本执行

添加查看结果树,线程组->添加->监听器->查看结果树,根据上面步骤对JDBC Connection Configuration和JDBC Request进行编辑完成后,单击页面顶部的开始按钮,运行脚本。

通过查看结果树查看脚本是否运行正常。在左侧导航树中,选择查看结果树,查看请求结果是否符合预期。如果出现请求失败的或者结果返回不符合预期,需要重新调整脚本或者SQL语句。

0 人点赞