JMeter非GUI模式执行遇EXCEPTION_ACCESS_VIOLATION及资源占用过高求助
JMeter非GUI模式执行异常排查与解决
问题概况
- 执行JMeter非GUI负载测试时,触发EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffb9ff30963, pid=6832, tid=29208原生层崩溃异常
- 测试期间CPU使用率达100%,服务器总内存8GB,其中操作系统占用7-7.2GB,测试进程内存使用率维持在80-86%
- 测试配置50个虚拟用户,前5分钟仅25个用户处于活跃状态,剩余25个已完成测试
- 同时伴随系统资源耗尽、JVM内存溢出类错误
解决方案
- 释放系统冗余内存:关闭服务器上所有非必要进程(后台服务、闲置程序等),将系统内存占用降至5GB以内,给JMeter预留至少2GB可用内存。可通过任务管理器排查高内存占用进程并终止。
- 调整JMeter堆内存配置:打开
jmeter.bat脚本,修改HEAP参数为set HEAP=-Xms2g -Xmx2g,给JMeter分配固定2GB堆内存,避免JVM动态扩容额外消耗CPU资源。 - 优化测试计划减少资源消耗:
- 非GUI模式下禁用所有图形化监听器,改用
-l test_results.jtl命令参数输出结果文件,后续用GUI模式分析数据 - 关闭所有采样器的“保存响应数据”“保存响应头”选项,减少IO读写开销
- CSV数据文件设置为“所有线程共享”模式,避免多线程重复读取文件
- 非GUI模式下禁用所有图形化监听器,改用
- 修复JVM原生崩溃问题:
- 若调整内存后仍出现崩溃,升级JMeter至最新稳定版本(优先选5.5+),旧版本可能存在原生内存管理bug
- 更换JDK为OpenJDK 11或17,避免使用Oracle JDK 8及以下版本的兼容性问题
- 平稳用户负载策略:调整线程组的“加速期”(比如设置为300秒,5分钟内逐步启动50个用户),避免短时间内集中启动/结束线程导致资源波动;检查线程循环次数,确保用户行为符合测试预期。
内容的提问来源于stack exchange,提问作者Bhaskara Reddy Dwarampudi
相关产品推荐
相关产品推荐

