JMeter GUI加载含摄像头采集请求的脚本耗时过长如何解决?
JMeter大体积JMX脚本加载过慢解决方案
问题核心原因
录制在线考试摄像头采集场景时,JMeter默认会把请求中携带的图片二进制内容、接口响应数据全部序列化存入jmx文件,大量同类请求叠加后就会导致文件体积激增,XML结构的jmx文件加载时需要全量解析,自然会出现耗时极长的问题。
解决方案
录制前优化(推荐从根源避免问题)
- 关闭不必要的录制内容存储:在HTTP(S)测试脚本录制器的「Requests Filtering」配置页,勾选不保存响应数据选项,避免无用的响应内容写入脚本
- 过滤图片类请求:在录制器的排除模式中添加规则
.*\.(jpg|jpeg|png|bmp|webp)$,直接过滤掉摄像头采集的图片上传请求,如果需要保留上传逻辑,后续单独配置即可,不要直接录制二进制内容 - 替换硬编码的二进制参数:如果必须保留上传请求,将录制到的硬编码二进制/Base64图片内容替换为动态读取本地文件的函数调用,比如用
${__FileToString(/test/sample.jpg,,)}读取字符串格式的内容,用${__readBinaryFile(/test/sample.jpg,)}读取二进制流,完全避免大段内容写入jmx文件
现有20MB大脚本修复方案
- 批量清理冗余内容:用支持大文件打开的文本编辑器(如VS Code、Notepad++)打开jmx文件,全局删除所有
<responseData>、<requestData>标签内的大段二进制/Base64内容,仅保留请求的URL、请求方法、头字段、参数名等核心配置即可 - 拆分脚本模块:如果场景请求量确实过大,将单脚本按照业务流程拆分为多个子脚本,使用
Include Controller在主脚本中分别引入子脚本,避免单文件体积过大
JMeter运行配置优化
- 调高JMeter堆内存:编辑安装目录下的
jmeter.bat(Windows系统)或jmeter.sh(Linux/macOS系统),修改堆内存配置为set HEAP=-Xms4g -Xmx8g -XX:MaxMetaspaceSize=512m,可根据本地设备内存容量灵活调整,给JMeter分配足够的运行内存 - 关闭加载时的Schema校验:编辑安装目录下的
user.properties文件,添加配置jmeter.load.check.schema=false,关闭脚本加载时的XML结构校验,可大幅提升大文件的加载速度
内容的提问来源于stack exchange,提问作者Wilfred richard
相关产品推荐
相关产品推荐

