“查看结果树” 默认会尝试解析和渲染完整的请求 / 响应内容,当请求体过大(如超过 10MB)时, JMeter 对大文本的渲染和处理性能有限,文本解析和 UI 渲染会占用大量内存和 CPU,导致 JMeter 卡死。
以下是具体解决方法,既能避免卡死:
1.通过日志输出请求体(推荐)
将请求体输出到 JMeter 日志,既能避免 UI 卡死,又能完整查看内容(日志文件可通过文本编辑器打开,支持大文件)。
步骤:
(1)添加 “BeanShell 前置处理器”(针对请求体,放在 HTTP 请求的子节点)
作用:在请求发送前,将请求体内容写入 JMeter 日志。
脚本:
// 获取请求体内容(适用于 POST 请求的“请求体数据”或参数拼接的内容)
String requestBody = sampler.getArguments().getArgument(0).getValue();
// 若请求体过大,可限制输出长度(如前 10000 字符),避免日志过大
if (requestBody.length() > 10000) {
requestBody = requestBody.substring(0, 10000) + "...[省略后续内容]";
}
// 写入 JMeter 日志(在“日志查看器”中可见)
log.info("请求体内容:" + requestBody);
(2)查看日志:打开 JMeter 的 “日志查看器”(菜单 Options -> Log Viewer),或直接查看 JMeter 安装目录下的 jmeter.log 文件(用记事本、Notepad++ 等工具打开,支持大文件)。
2.调整 JMeter 内存配置(增加堆内存)
步骤:
(1)找到 JMeter 安装目录下的 bin 文件夹,打开配置文件:
Windows 系统:jmeter.bat
Linux/Mac 系统:jmeter.sh
(2)搜索内存配置参数(如 HEAP),默认通常是:
set HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m
-Xms1g表示初始堆内存 1G,-Xmx1g表示最大堆内存 1G。MaxMetaspaceSize=256m表示jmeter的元空间(Metaspace)最大容量为 256MB。元空间用于存储类信息、方法元数据等(替代 JDK 7 及之前的永久代),若加载的类过多(如复杂测试计划、大量自定义类),需适当调大。
(3)增大最大堆内存(建议设置原则)
Xms 和 Xmx 保持一致(避免 JVM 动态调整内存,减少性能波动)。
最大堆内存(Xmx)不超过物理内存的 50%(避免抢占系统其他进程的内存,导致整体卡顿)。
例如:若电脑有 8GB 内存,Xmx 可设为 4GB(-Xmx4g);16GB 内存可设为 8GB(-Xmx8g)
(4)修改 jmeter.bat 后,必须重启 JMeter 才能使配置生效。