调整Apache Jmeter以提高请求吞吐量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调整Apache Jmeter以提高请求吞吐量相关的知识,希望对你有一定的参考价值。
我目前需要用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的图表
答案
- 根据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
应该是个好的开始 - 考虑使用Weighted Switch Controller进行工作负载分配,因为在任何情况下,Java解决方案在性能和资源消耗方面都优于任何脚本选项。
以上是关于调整Apache Jmeter以提高请求吞吐量的主要内容,如果未能解决你的问题,请参考以下文章