JMeter运行结束停留在整理状态,大结果量HTML报告生成耗时2小时如何优化
JMeter HTML报告生成速度优化方案
你的测试单次产生1.7亿+条请求记录,报告生成慢的核心原因是大体积结果文件的解析、统计计算环节资源不足,可通过以下方式优化:
- 优先调整JMeter JVM堆内存配置
编辑JMeter安装路径下bin/jmeter文件,找到HEAP参数行,调整为服务器可用物理内存的70%左右,Xms与Xmx设置为相同值避免动态扩容损耗。例如服务器配置16G内存时可设置为:HEAP="-Xms11g -Xmx11g -XX:MaxMetaspaceSize=512m" - 精简测试结果输出字段,缩小CSV文件体积
编辑bin/user.properties文件,关闭非必要的结果采集字段,仅保留统计所需字段即可:jmeter.save.saveservice.output_format=csv jmeter.save.saveservice.label=true jmeter.save.saveservice.response_code=true jmeter.save.saveservice.successful=true jmeter.save.saveservice.thread_name=true jmeter.save.saveservice.time=true jmeter.save.saveservice.latency=true # 关闭所有非必要字段 jmeter.save.saveservice.assertion_results_failure_message=false jmeter.save.saveservice.data_type=false jmeter.save.saveservice.response_data=false jmeter.save.saveservice.response_message=false jmeter.save.saveservice.subresults=false jmeter.save.saveservice.assertions=false jmeter.save.saveservice.connect_time=false jmeter.save.saveservice.sent_bytes=false jmeter.save.saveservice.received_bytes=false jmeter.save.saveservice.encoding=false jmeter.save.saveservice.idle_time=false - 开启报告生成多线程优化
同样在bin/user.properties中添加如下配置,processing_thread_count参数设置为服务器CPU核心数的1-2倍:
同时拆分测试执行与报告生成流程,避免测试运行占用资源影响报告生成效率:jmeter.reportgenerator.processing_thread_count=8- 执行测试时仅输出CSV结果,移除报告生成参数:
nohup jmeter -n -t HTTP_BasicPlan.jmx -l GrafanaTestSummaryreport.csv -j mylog.log > myprogram.out 2>&1 & - 测试执行完成后单独执行报告生成命令:
jmeter -g GrafanaTestSummaryreport.csv -o TestResultReportFolder
- 执行测试时仅输出CSV结果,移除报告生成参数:
- 系统层面优化
- 将CSV结果存储路径、报告输出路径均挂载在SSD硬盘,规避IO瓶颈
- 报告生成期间关闭服务器其他无关进程,释放CPU、内存资源
- 临时关闭系统swap分区,避免内存换入换出产生额外耗时
- 可选优化:关闭非必要的报告统计图表
若不需要部分统计维度,可在user.properties中配置关闭对应图表生成,减少计算量,示例:jmeter.reportgenerator.graph.responseTimeDistribution.exclude=true jmeter.reportgenerator.graph.latencyVsRequest.exclude=true
内容的提问来源于stack exchange,提问作者Sameera De Silva
相关产品推荐
相关产品推荐

