调整Apache Jmeter以提高请求吞吐量

时间:2018-01-11 19:44:40

标签: java performance jmeter jvm performance-testing

我目前需要使用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

1 个答案:

答案 0 :(得分:0)

  1. 根据Groovy,尝试从JavaScript和Beanshell切换到JMeter Best Practices

      

    从JMeter 3.1开始,我们建议从BeanShell切换到JSR223测试元素(有关更多详细信息,请参阅下面的JSR223部分),并从__Beanshell函数切换到__groovy函数。

  2. 使用探查器工具遥测运行测试,至少JVisualVM或更好YourKit之类的东西,以查看最耗费资源的类,最大的对象,GC的行为方式

  3. 尝试切换到G1 Garbage Collector,例如:

    -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:G1ReservePercent=20
    

    应该是一个好的开始

  4. 考虑使用Weighted Switch Controller进行工作负载分配,因为在任何情况下,Java解决方案在性能和资源消耗方面都优于任何脚本选项。