背景说明
压测除了全链路压测外,有时候也需要对指定服务进行性能测试,这里以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语句。