jmeter之数据库连接配置说明

jmeter 之数据库连接

1、JDBC Connection Configuration

从提供的JDBC连接设置创建数据库连接(由JDBC RequestSampler使用)。连接可以选择在线程之间进行池化。否则每个线程都有自己的连接。JDBC采样器使用连接配置名称来选择适当的连接。使用的池是DBCP,请参阅BasicDataSource配置参数。

image-20210305202014272

参数说明:

name 必填:否

描述:树中显示的连接配置的描述性名称。

Variable Name for created pool 必填:否

描述:连接所绑定的变量的名称 可以使用多个连接,每个连接都绑定到一个不同的变量,从而允许JDBC Samplers选择适当的连接。每个名称必须不同。 如果有两个使用相同名称的配置元素,则只会保存一个。 如果检测到重复名称,JMeter会记录一条消息。 是 最大连接数 池中允许的最大连接数。 在大多数情况下,将此设置为零(0)。 这意味着每个线程将在其中具有单个连接的情况下获得其自己的池,即该连接在线程之间不共享。如果您确实要使用共享池(为什么?),则将最大计数设置为与线程数相同,以确保线程不会彼此等待。

Max Wait (ms) 必填:是

描述:如果在尝试检索连接的过程中超过了超时期限,则Pool会引发错误.具体见:https://commons.apache.org/proper/commons-dbcp/api-2.1.1/org/apache/commons/dbcp2/BasicDataSource.html#getMaxWaitMillis--

Time Between Eviction Runs (ms) 必填:是

描述:空闲对象退出线程的两次运行之间要休眠的毫秒数。 当为非肯定时,将不运行任何空闲的对象退出线程。 (默认为“ 60000”,1分钟)。见:https://commons.apache.org/proper/commons-dbcp/api-2.1.1/org/apache/commons/dbcp2/BasicDataSource.html#getTimeBetweenEvictionRunsMillis--

Auto Commit 必填:是

描述:打开或关闭连接的自动提交。

Transaction isolation 必填:是

描述: 事务隔离级别

Preinit Pool 必填:否

描述:连接池可以立即初始化。 如果设置为False(默认),则使用此池的JDBC请求采样器可能会为第一个查询测量更高的响应时间-因为包括了整个池的连接建立时间。

Init SQL statements separated by new line 必填:否

描述:SQL语句的集合,将在首次创建物理连接时将其用于初始化。 这些语句仅执行一次-当配置的连接工厂创建连接时

Test While Idle 必填:是

描述:测试池的空闲连接,请参阅https://commons.apache.org/proper/commons-dbcp/api-2.1.1/org/apache/commons/dbcp2/BasicDataSource.html#getTestWhileIdle-- 验证查询将用于测试它。

Soft Min Evictable Idle Time(ms) 必填:是

描述: 在空闲对象驱逐者有资格将其驱逐之前,连接可能在池中处于空闲状态的最短时间,另外还有至少最少空闲连接保留在池中的额外条件。 请参阅BasicDataSource.html#getSoftMinEvictableIdleTimeMillis。 默认值为5000(5秒)

Validation Query 必填:否

描述:一个简单的查询,用于确定数据库是否仍在响应。 默认为jdbc驱动程序的'isValid()'方法,该方法适用于许多数据库。
但是,有些可能需要不同的查询。 例如,可以使用Oracle之类的“ SELECT 1 FROM DUAL”。
验证查询的列表可以使用jdbc.config.check.query属性进行配置,
并且默认情况下为:
hsqldb:
select 1 from INFORMATION_SCHEMA.SYSTEM_USERS

Oracle:select 1 from dual

DB2:
select 1 from sysibm.sysdummy1

MySQL or MariaDB:
select 1

Microsoft SQL Server (MS JDBC driver):

PostgreSQL:
select 1

Ingres:
select 1

Derby:
values 1

H2:
select 1

Firebird:
select 1 from rdb$database

Exasol:
select 1
该列表来自不同数据库验证查询上的stackoverflow条目,该列表可能不正确

请注意,即使“ Test While Idle”建议仅在空闲连接上使用查询,此验证查询也会在池创建中用于对其进行验证。 这是DBCP的行为。 否 Database URL 数据库的JDBC连接字符串 是 JDBC Driver class 驱动程序类的全限定名称。 (必须在JMeter的类路径中-必须将.jar文件复制到JMeter的/ lib目录中)。
可以使用jdbc.config.jdbc.driver.class属性配置预配置的jdbc驱动程序类的列表,并且默认情况下是:
hsqldb: org.hsqldb.jdbc.JDBCDriver

Oracle: oracle.jdbc.OracleDriver

DB2 :com.ibm.db2.jcc.DB2Driver

MySQL :com.mysql.jdbc.Driver

Username 必填:否

描述: 数据库的用户名

Password 必填:否

描述:用于连接的密码。 (注:此文件未加密存储在测试计划中)

Connection Properties 必填:否

描述:建立连接时要设置的连接属性(例如,对于Oracle,像这样:internal_logon = sysdba)

不同的数据库和JDBC驱动程序需要不同的JDBC设置。 数据库URL和JDBC驱动程序类由JDBC实现的提供程序定义。
一些可能的设置如下所示。 请检查JDBC驱动程序文档中的确切详细信息。
如果JMeter报告没有合适的驱动程序,则可能意味着:

1、找不到驱动程序类。 在这种情况下,将出现一条日志消息,例如

**DataSourceElement: Could not load driver: {classname}
*java.lang.ClassNotFoundException: {classname}

找到了驱动程序类,但该类不支持连接字符串。 这可能是由于连接字符串中的语法错误,或者是因为使用了错误的类名。

如果数据库服务器未运行或不可访问,则JMeter将报告java.net.ConnectException。

下面给出了一些数据库及其参数的示例。

MySQL

Driver class :com.mysql.jdbc.Driver

Database URL:jdbc:mysql://host[:port]/dbname

Oracle

Driver class: oracle.jdbc.OracleDriver

Database URL: jdbc:oracle:thin:@//host:port/service OR jdbc:oracle:thin:@(description=(address=(host={mc-name})(protocol=tcp)(port={port-no}))(connect_data=(sid={sid})))

以上内容可能不正确-请查看相关的JDBC驱动程序文档。

参考:https://jmeter.apache.org/usermanual/component_reference.html#JDBC_Connection_Configuration

连接过程中的异常:

java.lang.NumberFormatException: For input string: ""
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[?:1.8.0_131]
	at java.lang.Integer.parseInt(Integer.java:592) ~[?:1.8.0_131]
	at java.lang.Integer.parseInt(Integer.java:615) ~[?:1.8.0_131]
	at org.apache.jmeter.protocol.jdbc.config.DataSourceElement.initPool(DataSourceElement.java:230) ~[ApacheJMeter_jdbc.jar:5.3]
	at org.apache.jmeter.protocol.jdbc.config.DataSourceElement.testStarted(DataSourceElement.java:127) ~[ApacheJMeter_jdbc.jar:5.3]
	at org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfStart(StandardJMeterEngine.java:205) ~[ApacheJMeter_core.jar:5.3]
	at org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:380) ~[ApacheJMeter_core.jar:5.3]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]

异常原因就是缺少必填参数,所以会报错,按照上述表格中添加必须的参数,错误即可消除。

posted @ 2021-03-05 21:45  Walker~  阅读(1268)  评论(0)    收藏  举报