Jmeter的一些默认配置较为保守,高并发压测中很可能会由于配置不满足测试场景,从而出现一些非被测系统的性能问题而是测试工具的问题,此时可以通过修改Jmeter的默认配置来尽可能规避这些问题
a) 高并发测试过程中,Jmeter出现内存溢出错误
出现这个问题,一般是由于Jmeter的JVM堆内存设置的过小,找到JMeter bin目录下的jmeter.bat文件,用记事本等文本工具打开,编辑
找到如下内容,
rem See the unix startup file for the rationale of the following parameters,
rem including some tuning recommendations
set HEAP=-Xms512m -Xmx512m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m
set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%
set TENURING=-XX:MaxTenuringThreshold=2
修改带背景色,文字带颜色内容如下
set HEAP=-Xms1024m –Xmx1024m
set NEW=-XX:NewSize=640m -XX:MaxNewSize=640m
说明:
-Xms512m:初始化堆内存大小 -Xmx512m:最大堆内存大小,这里的内存大小建议为512的整数倍,可以根据机器实际内存进行合理的设置,建议最大值-Xmx不要超过剩余物理内存的50%
通常会将 -Xms 与 -Xmx两个参数的配置相同的值,其目的是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源
set NEW=-XX:NewSize=640m -XX:MaxNewSize=640m
1)-XX:newSize:新生代初始内存的大小,应该小于 -Xms的值
2) -XX:MaxnewSize:表示新生代可被分配的内存的最大上限;当然这个值应该小于-Xmx的值,因为新生代占内存来自整个堆内存。为了优化GC(内存垃圾回收),最好设置-XX:MaxnewSize值约等于-Xmx的1/3
注意:jvm在执行GC时,会停止工作。MaxnewSize的增大,可以降低GC频率
b) 指定测试结果数据存储文件
如上,JMeter中很多插件都提供了结果文件存储设置,为了避免请求测试结果数据都存储到JVM内存(因常驻数据无法回收,量大的话会很快压垮jmeter),需要为插件指定一个文件,把数据存储到该文件,测试前务必要进行这类设置检查。
另外,通常结果文件要保存为CSV格式(比起xml格式,可以少写入好多数据)
c) 针对某些监听器,设置仅记录错误日志
根据第二点的分析,针对某些监听器(比如查看结果树),我们只需关注错误日志信息的情况下,需要勾选“仅日志错误”,这样只会保存错误日志到内存,数据不会多。
d) 通过保存的结果文件“重绘”测试监听结果图表
针对一些不需要在测试过程中“实时”查看的测试“监听器”图表,可以考虑“线下”生成图表。具体做法如下所例。
eg:
如上图,这里添加了监听器“聚合报告”插件,因为我们需要查看相关数据,比如吞吐量,请求耗时等,但是我们不需要实时查看结果,所以把对监听结果“聚合报告”给禁用了(更重要的别因是聚合报告非常消耗CPU。
然后,我们添加了监听器“Simple Data Writer”,并设置结果数据存放文件(例子中为“测试结果.csv”),如果有必要的话还可以点击Configure设置需要保存的条目,文件格式等(通常默认设置就可以了)
注:Simple Data Writer:该监听器可用于记录测试结果到某个文件,但不提供ui展示。
最后,等测试完成后,我们在插件控制面板中,点击浏览按钮,打开上述保存的文件,结果如下,可以看到生成的分析数据了。
原文:https://www.cnblogs.com/jacksonyi/p/12102191.html