首页 文章

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

提问于
浏览
0

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

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

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

    • 尝试切换到G1 Garbage Collector,类似于:

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

    应该是个好的开始

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

相关问题