使用JMeter进行MySQL的压力测试

  • 前言

  • 1. JMeter安装

  • 2. 导入MySQL驱动

  • 3. 配置并使用JMeter连接数据库

    • step1:添加JDBC Connection Configuration

    • step2:添加JDBC Request

    • step3:运行并查看结果

  • 4. 其他使用小技巧

    • 对查询结果进行简单处理

    • 混合场景设置

  • 总结


前言

JMeterapache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。而且JMeter拿到安装包之后直接解压就可以使用,同时它也可以在linux/windows/macos上使用。

JMeter可以做接口测试和压力测试,其中接口测试的简单操作包括做 http 脚本(发 get/post 请求、加 cookie、加 header、加权限认证、上传文件)、做webservice脚本、参数化、断言、关联(正则表达式提取器和处理 json-json path extractor),而且JMeter还能进行数据库的相关测试。

1. JMeter安装

在安装JMeter之前需要先配置好JDK环境,然后通过JMeter官网下载(https://jmeter.apache.org/download_jmeter.cgi)安装包解压,即可直接使用。

2. 导入MySQL驱动

在MySQL官网(https://downloads.mysql.com/archives/c-j/)找到对应版本的MySQL驱动进行下载,并将其拷贝到%JMETER_HOME%\lib\ext目录下,重启JMeter

3. 配置并使用JMeter连接数据库

step1:添加JDBC Connection Configuration

5f2e4954c28e20678d739b9adea673aa.png

在配置元件中选择JDBC Connection Configuration进行添加,正常情况下只要修改以下参数即可,其他均使用默认值:

  • Variable name: 连接池变量名在稍后要添加的JDBC Request中要保持一致。

  • Database URL: MySQL的标准格式为:jdbc:mysql://host[:port]/dbname,根据实际情况进行修改。

  • JDBC Driver class:MySQL驱动就是com.mysql.jdbc.Driver。

  • Username和Password:根据实际情况正确填写即可。

step2:添加JDBC Request

e4b401db7dcd1f9889333819e1770478.png

在线程组中选择取样器添加JDBC Request

  • Variable name:与之前的设置的连接池变量名一致。

  • Query Type:主要包括八种类型,每种类型作用都不一样。

1.Select statement:执行第一条sql语句的查询,如果是多条sql语句也只会执行第一条sql语句;

2.Update statement:执行第一条更新语句,包含insert和update;

3.Callable statement:执行多条sql语句,也可以调用存储过程,需要注意的是选择该类型,在JDBC连接配置的Database URL后需要添加?allowMultiQueries=true;

4.Prepared select statement:执行预编译的查询语句,语句中的参数可以从parameter values中获取;

5.Prepared update statement:执行预编译的更新语句包含insert和update;

6.Commit:将未存储的SQL语句结果写入数据库表;

7.Rollback:撤销指定SQL语句的过程;

8.AutoCommit(false):禁用自动提交;Autocommit(true): 开启自动提交;
  • Result variable name:输入变量名称,如result,表示将查询结果放到result变量中, 后续再通过BeanShell对结果进行处理,多个变量名可以以逗号分隔。

step3:运行并查看结果

b05a3437f431927927e88342a3a44eaa.png 29dc4b50d18486fe3b4d3942017346a6.png

一般我们会再添加监听器下的两项功能:察看结果树和汇总报告,用于结果的查看;

  • 线程组设置:线程数即并发用户数,持续时间即执行测试的时长也可以使用循环次数,按次数对测试时长进行控制 ;

  • 察看结果树:用于结果的输出,在压测过程中,建议仅输出错误的日志;

  • 汇总报告:显示压测结果,主要观察以下参数:

1.Samples:表示一共发出的请求数;
2.Average:平均响应时间,默认情况下是单个Request的平均响应时间(ms);
3.Error%:测试出现的错误请求数量百分比,如果察看结果树有勾选日志输出,也可以直接查看日志;
4.Throughput:简称tps,吞吐量,默认情况下表示每秒处理的请求数,也就是指服务器处理能力,tps越高说明服务器处理能力越好。

全部配置好,就可以点击菜单栏的"启动"开启测试,一般在压力较大的情况下,不建议使用GUI进行操作,可通过JMeter的命令行直接执行测试。

4. 其他使用小技巧

对查询结果进行简单处理

如果想将上述SELECT的查询结果保存到文件中,可以通过添加BeanShell PostProcessor进行处理。

5d43076607b4d0d0ec805a00b3c1069a.png
  • 获取结果集中的记录数量:vars.getObject("result").size()

  • 获取某一行中某个字段的值:vars.getObject("result").get(0).get("realname")

  • 第一行的索引是从0开始的,所以get(0)表示取第一行,get("realname")表示获取realname这个字段的值

混合场景设置

对数据库的测试经常会涉及到混合场景,比如按一定的并发比例进行增删改查的测试,JMeter混合场景一般有三种方式进行设置:

  • 吞吐量控制器

  • IF控制器

  • 多个线程组方式

我们推荐使用:吞量控制器,通过设置多个控制器的吞吐量百分比例来实现增删改查的混合场景测试。

633e75366f04b96069e9de590315d211.png
  • Based on:有两个选项

    • Total Executions:执行数量

    • Percent Executions:执行百分比(1-100)

总结

本次只介绍了JMeter连接MySQL的最基本用法,JMeter也支持PostgreSQL,Oracle,MSSQL等等数据库,而且还提供了非常丰富的功能需要自己去动手实践。

Enjoy GreatSQL :)


《深入浅出MGR》视频课程

戳此小程序即可直达B站

https://www.bilibili.com/medialist/play/1363850082?business=space_collection&business_id=343928&desc=0



文章推荐:


想看更多技术好文,点个“在看”吧!

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值