一、Jmeter JDBC连接
Jmeter支持连接数据库,对SQL语句进行性能测试,JDBC Connetction Configuration用来配置连接信息。
1、把JDBC驱动的jar包引入测试计划
Jmeter要连接mysql数据库,首先得下载mysql jdbc驱动包,这里使用的是mysql-connector-java-5.1.7-bin.jar
选择测试计划——浏览——jar包路径——选中mysql-connector-java-5.1.7-bin.jar——导入即可
2、设置JDBC连接池(在JDBC Connetction Configuration元件中进行设置)
接下来新建一个线程组,右击线程组——配置元件——选择JDBC Connetction Configuration
配置信息如下:
Variable Name for created pool(连接池名称):一定要写,JDBC Request通过此名称来获取连接池中的连接;可以随意填写,但最好具有业务意义,至少能让你秒懂。还有一条,在整个测试计划中此名称最好唯一,如果有多个JDBC Connetction Configuration,且名称重复,则Jmeter无法去做选择。
Max Number of Connection(连接池最大连接数):这里设置为10
Database URL(数据库连接地址):jdbc:mysql://IP地址:3306/test?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
?前为固定写法,IP地址填写数据库服务器的IP,3306为默认端口号,test表示要连接的数据库名称,
useUnicode=true表示是否使用Unicode字符集,characterEncoding=utf8表示当Unicode设置为true时,指定字符编码使用UTF-8
allowMultiQueries=true表示允许多条语句查询
JDBC driver class选择com.mysql.jdbc.Driver
Username和Password为数据库的账号密码
其它参数按照下图设置即可
3、添加JDBC Request
接下来再右击线程组——取样器——选择JDBC Request
配置信息如下:
Variable Name of Pool declared in JDBC Connection Configuration中的变量名一定要与JDBC Connetction Configuration中的Variable Name for created pool(连接池名称)保持一致
Query Type(SQL语句类型):
Select Statement:可执行查询语句
Update Statement:可执行更新操作,包括插入和修改
Callable Statement:对应JDBC规范中的CallableStatement对象,它为所有的DBMS提供了一种以标准形式调用存储过程的方法,白话就是可以调用存储过程,也就是可以有入参,有占位符,总之支持SQL语句的增删改查。
后面的不再赘述
Query中可填写SQL语句
4、点击【启动】,请求发送后,点击察看结果数的响应数据
二、Jmeter之分布式压测
前期准备:
1、负载机(最少一台)建议使用Linux,安装好JDK、Jmeter,并配置好环境变量
这里使用的是1.8JDK和Jmeter5.0,如何配置环境变量不在此赘述。
环境变量配置好后记得source /etc/profile,根目录下执行jmeter,出现下图表示配置成功
2、分别修改contrller和agent的配置文件jmeter.properties,找到server.rmi.ssl.disable取消注释,并改为server.rmi.ssl.disable=true,如下图所示:
修改完成后,回到contrller的jmeter.properties中,添加远程agent的IP地址和端口号(默认为1099,可在agent的配置中文件更改,更改server_port即可),如下图所示:
启动agent的服务,执行命令:jmeter-server,下图表示启动成功
打开contrller的jmeter,建立脚本,选择运行——远程启动——负载机,这里报错连接超时,是由于防火墙未关闭或测试controller和agent不在同一个网段会影响远程连接。
解决办法:关闭agent的防火墙。contrller和agent在同一网段,比如选择了同一个WIFI,配置同一个DNS等方法解决。
由于contrller和agent不在同一网段所以无法演示,感兴趣的朋友可使用本地虚拟机试试~
注意:
1、分布式配置成功的小伙伴儿,在使用分布式的压测过程中会发现,察看结果树中无响应数据,Don't worry,这是正常现象,因为察看结果树在压测过程中是浪费性能的,最好禁用掉。所以在使用分布式时,Jmeter去掉了响应数据(默认不展示,但可修改配置文件,在此不做说明)
注意:
2、如果脚本中使用了参数化文件,负载机同样位置也需要有一个相同的参数化文件,放在bin目录下即可;
关于nogui的常用命令见下图:
示例:jmeter -n -t bugfree.jmx -r -l ./bugfree.jtl -e -o ./bugfree -j bugfree.log
释义:使用nogui模式进行分布式压测,脚本bugfree.jmx路径为当前路径,并在当前路径生成结果文件bugfree.jtl、测试报表(路径为bugfree)和日志文件bugfree.log