要在JMeter中连接MySQL数据库,核心操作是将MySQL JDBC驱动包放入JMeter的lib目录并重启,随后在JDBC Connection Configuration中配置好Database URL和账号密码即可完成连接。

jmeter怎么连接mysql数据库做性能测试?前置准备
做性能测试时,经常需要直接对数据库发起请求来造数据或者校验结果,JMeter本身是用Java写的,它不能直接凭空跟MySQL通信,必须有个“翻译官”帮忙,这个翻译官就是MySQL的JDBC驱动包,如果不把这个驱动包上传到正确的位置,JMeter连数据库时一定会报错。
下载并上传MySQL数据库连接驱动
很多新手刚开始折腾环境的时候,会到处找哪里能下载免费的mysql驱动包,其实这个不用花钱去买,直接去MySQL官方的下载中心或者Maven的中央仓库就能拿到,下载的时候看清楚版本,如果你连的是MySQL 5.x的数据库,下载5.1版本的jar包就行,比如mysql-connector-java-5.1.49.jar,如果你连的是MySQL 8.x的数据库,那就得下载8.x开头的驱动包,比如mysql-connector-java-8.0.33.jar。
业内专家指出,驱动版本与数据库服务器版本不匹配,是导致连接失败的常见原因之一,下载好这个jar包后,就是上传MySQL数据库连接驱动的操作了,这个“上传”不是传到服务器上,而是放到你本地JMeter的安装目录里,找到你电脑上JMeter的解压路径,进去后找到lib这个文件夹,直接把刚下载的jar包扔进去,有些教程会让你放到lib/ext目录,那个目录主要是放JMeter自身插件的地方,放普通的第三方jar包,放在lib根目录下最稳妥。
放进去之后,必须重启JMeter,如果你在JMeter开着的时候往里扔jar包,JMeter是加载不到的,这点很关键。
确认驱动类名与URL格式
把驱动包放好之后,还得在配置里填对驱动类名,不同版本的MySQL,驱动类名是不一样的。
- MySQL 5.x版本:驱动类名填
com.mysql.jdbc.Driver。 - MySQL 8.x版本:驱动类名改成了
com.mysql.cj.jdbc.Driver,多了一个.cj,漏了这俩字母绝对连不上。
JMeter连接MySQL的配置实操步骤
准备工作做好了,接下来就是在JMeter界面里点鼠标配置了,咱们按照从外到内的顺序一步步来。
添加JDBC Connection Configuration
在测试计划上右键,依次选择添加-配置元件-JDBC Connection Configuration,这个元件就像是个数据库连接池,管着所有数据库连接的入口。
配置的时候,重点看下方的参数,这里用表格列清楚:
| 参数名称 | 填写说明 | 示例值 |
|---|---|---|
| Variable Name | 数据库连接池的变量名,随便起,但得记住 | mysql_test |
| Database URL | 数据库的连接地址,包含IP、端口和库名 | jdbc:mysql://127.0.0.1:3306/testdb |
| JDBC Driver class | 驱动类名,看准版本填 | com.mysql.cj.jdbc.Driver |
| Username | 数据库用户名 | root |
| Password | 数据库密码 | 123456 |
这里有个坑很多人踩过,如果你连的是MySQL 8.x,Database URL光写jdbc:mysql://IP:端口/库名可能不够,运行时会报时区错误,得在URL后面加上时区参数,变成jdbc:mysql://127.0.0.1:3306/testdb?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8,把时区和时间编码格式带上,能省去不少麻烦。

添加JDBC Request并验证连接
连接池配好了,就得发个请求试试水,右键线程组,添加-取样器-JDBC Request。
在JDBC Request界面里,最上面有个Variable Name bound to Pool,这里要填的必须跟刚才在Connection Configuration里起的Variable Name一模一样,比如填mysql_test,这样取样器才知道去哪个连接池拿连接。
接着在SQL Query框里写一句最简单的查询语句,比如select 1;,然后在测试计划上右键,添加-监听器-查看结果树,点击绿色的运行按钮,去查看结果树里看JDBC Request的响应数据,如果能看到返回了表格数据,说明连接彻底打通了。
jmeter连接mysql报错communications link failure怎么办?排查指南
做测试最怕环境不通,如果在查看结果树里看到红色的报错信息,不用慌,对症下药就行,近年来,据不少测试团队反馈,通信类报错占了JMeter连库失败的相当一部分比例。
网络与权限排查
如果报错信息里有Communications link failure字样,意思是通信连接失败,这时候先别怀疑JMeter,先查网络和权限。
- 检查IP和端口:确认数据库服务器的IP地址对不对,端口是不是默认的3306,如果数据库装在云服务器上,去云控制台看看安全组有没有放行3306端口。
- 检查MySQL远程权限:如果你用JMeter连的是远程数据库,MySQL默认可能只允许localhost登录,得通过命令行给相应用户开通远程访问权限,比如执行
GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;,然后刷新权限。 - 检查防火墙:本地电脑或者服务器上的防火墙可能把请求拦截了,临时关掉防火墙测试一下。
驱动类与时区报错处理
如果报错信息是Cannot load JDBC driver class,说明JMeter没找到驱动包,这时候回头去检查lib目录里到底有没有那个jar包,或者有没有放对位置,如果确认包在lib里还报这个错,多半是JMeter没重启,关掉进程重新打开就行。
如果报错里有类似The server time zone value的字样,这就是前面提到的时区问题,不用去改MySQL的配置文件,直接在JDBC Connection Configuration的Database URL后面把?serverTimezone=UTC参数加上就能解决。
进阶探讨:jmeter连接mysql和oracle的区别
数据库种类很多,除了MySQL,平时做性能测试也常连Oracle,虽然操作流程类似,但细节差别不小。
驱动包与驱动类的差异
连MySQL用的是MySQL官方出的驱动包,连Oracle用的是Oracle自家的ojdbc系列jar包,这俩包不能混用,而且Oracle的驱动类名跟MySQL完全不同,通常填oracle.jdbc.OracleDriver,行业共识认为,不同数据库的JDBC驱动均遵循统一的JDBC标准,但在底层协议实现和类名定义上各有千秋,配置时需以官方文档为准。

URL格式与默认端口的对比
两者的Database URL格式有明显区别,端口也不一样。
- MySQL格式:
jdbc:mysql://IP:3306/库名 - Oracle格式:
jdbc:oracle:thin:@IP:1521:实例名或者jdbc:oracle:thin:@//IP:1521/服务名
Oracle的URL里用的是thin:@这种特殊写法,而且默认端口一般是1521,Oracle连接通常还需要配置一些环境变量或者依赖额外的字符集jar包,配置起来比MySQL要繁琐一些。
掌握驱动包的上传与连接池参数配置,是打通JMeter与数据库交互的关键,后续的接口压测和数据造量才能顺理成章。
jmeter连接mysql数据库常见问题Q&A
jmeter连接mysql数据库时驱动包放哪最合适?
放在JMeter安装根目录下的lib文件夹中,放好后必须重启JMeter使其加载,如果放在lib/ext中可能会导致部分类无法被测试计划正确引用。
jmeter连接mysql数据库做性能测试需要多大内存?
取决于并发线程数和SQL复杂度,多数情况下,纯数据库压测设置512M到1G的堆内存足够应对几百并发的请求,如果是大批量数据提取或上千并发,需修改jmeter.bat中的HEAP参数至2G或更高。
jmeter连接mysql数据库批量插入数据怎么实现?
在JDBC Request的SQL Query框中编写带参数的INSERT INTO语句,在底部的Parameters列表中添加变量名,通过CSV Data Set Config引入外部数据源实现批量数据传入。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/537996.html