我目前需要使用apache Jmeter执行测试,每秒发出400个请求。为实现这一目标,我已经为每分钟12000个请求配置了一个恒定吞吐量计时器(对当前线程组中的所有线程都是活动的),并且正在从两个测试服务器执行测试,每个服务器都有32G内存。
测试总计在400tps下运行大约15/20分钟(我试图运行超过一小时),此时吞吐量降低 - 测试结束时保持280 tps。
运行测试时是否有任何调整参数或注意事项?我在 jmeter.bat 文件中包含了一个堆大小调整的示例。
set HEAP=-Xms1024m -Xmx25600m
set NEW=-XX:NewSize=2048m -XX:MaxNewSize=2048m
set SURVIVOR=-XX:SurvivorRatio=6 -XX:TargetSurvivorRatio=50%
set TENURING=-XX:MaxTenuringThreshold=2
set GC=-XX:+UseConcMarkSweepGC
rem Java 8 remove Permanent generation, don't settings the PermSize
if %current_minor% LEQ "8" (
rem Increase MaxPermSize if you use a lot of Javascript in your Test Plan :
set PERM=-XX:PermSize=64m -XX:MaxPermSize=128m
)
我正在使用Jmeter ver 3.1。值得注意的是,有大量的javascript用于促进对发出某些请求的线程百分比的限制。有相当数量的beanshell运行,还有一些Groovy。
任何帮助都表示赞赏,快速谷歌似乎没有出现这个问题。
编辑:包括测试吞吐量的图表 HERE
答案 0 :(得分:0)
根据Groovy,尝试从JavaScript和Beanshell切换到JMeter Best Practices:
从JMeter 3.1开始,我们建议从BeanShell切换到JSR223测试元素(有关更多详细信息,请参阅下面的JSR223部分),并从__Beanshell函数切换到__groovy函数。
使用探查器工具遥测运行测试,至少JVisualVM或更好YourKit之类的东西,以查看最耗费资源的类,最大的对象,GC的行为方式
尝试切换到G1 Garbage Collector,例如:
-XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:G1ReservePercent=20
应该是一个好的开始