JMeter文件上传导入计时、MySQL性能测试及JDBC报错排查
JMeter两类测试场景实操问题解决方案
场景1:Web应用文件上传、导入全流程耗时统计
- 核心原则:不要直接默认用上传接口的响应时间作为全流程耗时,大部分文件上传、数据导入接口是异步逻辑,接口返回响应时后台可能还在做数据解析、校验、入库操作,此时统计的时间远小于用户实际感知的等待时间。
- 具体配置步骤:
- 保留已搭建的上传/导入HTTP请求采样器,这部分统计的是文件从客户端传输到服务端、接口完成接收的耗时。
- 在上传请求后挂载正则表达式提取器/JSON提取器,提取接口返回的异步任务ID、导入任务唯一标识,存储为JMeter自定义变量。
- 新增事务控制器,勾选
Include duration of timer and pre-post processors in generated sample选项,把上传请求和后续轮询逻辑都放到这个事务控制器下,控制器最终输出的样本时间就是全流程真实耗时。 - 在事务控制器内、上传请求后添加While控制器,循环条件设置为超时+状态判断双阈值,比如
${__javaScript("${importTaskStatus}"!="finish" && ${loopCount}<60,)},其中loopCount通过计数器实现,单轮间隔按业务调整,避免死循环。 - While控制器内部添加导入状态查询接口的HTTP请求,每次请求后添加固定定时器(建议间隔200ms-1s),同时加响应断言提取最新的任务状态,覆盖
importTaskStatus变量,直到状态为成功/失败/处理完成再跳出循环。
- 特殊情况:如果你的上传导入是同步接口,即接口返回响应时后台已经完成所有数据处理,直接把对应HTTP请求放到事务控制器下统计即可,不需要额外加轮询逻辑。
场景1测试计划结构参考
场景2:MySQL数据库性能测试异常排查
异常1:已添加驱动jar包仍报java.sql.SQLException: Cannot load JDBC driver class 'com.microsoft.jdbc.sqlserver.SQLServerDriver'
- 根因:驱动类和数据库类型完全不匹配,
com.microsoft.jdbc.sqlserver.SQLServerDriver是SQL Server数据库的驱动类,和MySQL无关,和你是否添加MySQL驱动jar包没有关系。 - 修正操作:
- 确认MySQL服务版本,下载对应版本的官方JDBC驱动jar包,放到JMeter安装目录的
lib文件夹下,放完必须完全重启JMeter,否则驱动不会被加载。- MySQL 8.x及以上版本驱动类为
com.mysql.cj.jdbc.Driver - MySQL 5.x版本驱动类为
com.mysql.jdbc.Driver
- MySQL 8.x及以上版本驱动类为
- 打开JDBC Connection Configuration配置元件,把Database URL修改为MySQL格式:
jdbc:mysql://<数据库IP>:3306/<目标库名>?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true,参数可根据实际环境调整。 - JDBC Driver class下拉选择对应你MySQL版本的驱动类,不要选择任何SQL Server相关的驱动选项。
- 确认MySQL服务版本,下载对应版本的官方JDBC驱动jar包,放到JMeter安装目录的
异常2:切换驱动类后测试报告无返回结果
按以下优先级排查:
- 检查连接池绑定配置:JDBC Request采样器里的
Variable names of pool字段值,必须和JDBC Connection Configuration里的Variable Name for created pool字段值完全一致,不一致会导致采样器无法绑定连接池,不会执行任何SQL。 - 校验连接有效性:用和配置里完全一致的IP、端口、账号、密码在SQL Workbench里手动连接数据库,确认账号有对应库的操作权限、网络策略放通、数据库服务正常运行。
- 检查SQL配置:JDBC Request里的SQL语句末尾不要加多余分号,查询语句选择
Select Statement类型,增删改语句选择Update Statement,不要选错语句类型。 - 查看详细日志:打开JMeter安装目录bin文件夹下的
jmeter.log文件,里面会打印完整的连接失败、SQL执行报错栈信息,可直接定位具体问题。
场景2配置参考截图1
场景2配置参考截图2
场景2配置参考截图3
场景2配置参考截图4
场景2配置参考截图5
内容的提问来源于stack exchange,提问作者ADS KUL
相关产品推荐
相关产品推荐

