关于Jmeter直连数据库进行压测,网上有好多教程了,pg数据库的相对少一些,今天自己测试了下,还是挺简单的,有个别需要注意的地方。相较于Loadrunner这么全面庞大的压测工具,Jmeter在数据库协议的支持上还是要灵活好多的,也比LR易用。
下载通过jdbc连接postgresql的jar包
这个地方要注意一下,如果没有jar包或jar包的版本不对,会提示“could not load 'org.postgresql.Driver'”。
根据自己机器安装的jdk版本(如我的是1.8.1,下载JDBC4.2的版本),下载对应版本的jar包,如果下载版本不对,可能会出现上述错误。
下载地址:https://jdbc.postgresql.org/download.html
下载完成之后,放到Jmeter安装路径lib文件夹下,如C:/Program Files/Apach Jmeter4.0/lib/下,然后重启Jmeter。
我下载的是这个版本:
配置JDBC连接
Jmeter基本使用就不说了,首先测试计划右键添加线程组,线程组下添加--配置元件--jdbc connection configuration。
注意:
- Variable Name for created pool:连接池名称,随意取,后续请求会用到,如名称为pgsql。
- Validation Query:这个有好多资料里都没说到,validationQuery must be an SQL SELECT statement, that returns at least one row。不同的数据库,所选择的Validation Query是不同的,经过外国友人的测试,具体可参照以下(postgresql选select 1):
-
- hsqldb -
select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
- Oracle -
select 1 from dual
- DB2 -
select 1 from sysibm.sysdummy1
- mysql -
select 1
- microsoft SQL Server -
select 1
(tested on SQL-Server 9.0, 10.5 [2008]) - postgresql -
select 1
- ingres -
select 1
- derby -
values 1
- H2 -
select 1
- Firebird -
select 1 from rdb$database
- hsqldb -
- Database Url:连接postgresql的配置,格式:jdbc:postgresql://ip:port/dbname,如 jdbc:postgresql://10.21.11.11:5432/testdb
- JDBC Driver class:数据库驱动,不同数据库类型选择不一样,postgresql选择“org.postgresql.Driver”
- username,password:数据库登录信息
配置完成后,就可以添加sql请求进行测试了。
配置jdbc Request
线程组右键添加--Sampler--JDBC Request。
- Variable Name of Pool declared in JDBC Connection Configuration:这个地方就是之前说到的,在配置时取的连接池名称,一定要一致,如之前连接池名称为pgsql,该处填pgsql。
- Query Type:根据自己要测试的sql类型,选择对应的即可。如select语句为Select Statement。这个地方要注意的是,sql的执行,是有解析的,经过语法分析、语义分析、生成执行计划等,所以为了提高性能,会有预编译,即对于多次执行的可变参数sql来讲,选择Prepared Statement性能要好一些。选择Prepared Statement后,用?进行参数填充并在下边进行参数配置。
- Query:要测试的sql。
后续的参数化、压测等就跟正常请求没区别了。