java Jmeter无法每秒运行1000个并发用户
我一直在尝试使用JMeter为10000个用户运行性能测试,并发率为1000个用户/秒,问题是我永远无法在部署在Azure中的服务器上达到1000个用户的吞吐量。我想知道我做错了什么,非常感谢你的帮助,谢谢
我的用户定义变量包:
users ${__P(USERS,10)}
seconds ${__P(SECONDS,3600)}
scale ${__P(SCALE,2)}
env ${__P(ENV,preprod)}
wait false
jmeter -n -t ./src/test/branchHub/agentAuthentication.jmx -JUSERS=1000 -JSECONDS=5 -JENV=preprod -JSCALE=0.2 -JLOOPS=3 -JPRODUCTS=bill -JCERTINI=1 -Djavax.net.ssl.keyStore=./src/main/resources/certificates/preprodStore.jks -Djavax.net.ssl.keyStorePassword=performance -Jhttps.use.cached.ssl.context=true -q ./src/test/user.properties -l logs/summary/394output.jtl -e -o logs/reports/394
这是控制台日志
16:14:10创建摘要器 16:14:10使用已成功创建树/src/test/branchHub/agentAuthentication。jmx 16:14:10 UTC 2019年6月28日星期五15:14:10开始测试(1561734850233) 16:14:10在端口4445上等待可能的关机/StopTestNow/Heapdump消息 16:14:32汇总+17英寸00:00:20=0.8/s平均值:1330分钟:77最大值:2174错误:1(5.88%)活动:7开始:20完成:13 16:15:05汇总+29英寸00:00:30=1.0/s平均值:1596分钟:1443最大值:2868错误:0(0.00%)活动:7开始:49完成:42 16:15:05汇总=46英寸00:00:50=0.9/s平均值:1498最小值:77最大值:2868误差:1(2.17%) 16:15:37汇总+30英寸00:00:30=1.0/s平均值:1674分钟:1252
# 1 楼答案
您已经创建了一个包含1000个线程的线程组。除非你的Azure实例有1000个vCPU,否则这将导致过多的context switching,JVM将花费更多的时间在线程之间切换,而不是完成工作
创建一个线程组,减少线程数,并在单个线程内重复测试操作,或者向实例中添加更多vCPU
# 2 楼答案
查看
Active: 7
summarizer输出,您的活动用户似乎不超过7个考虑到你只有2个Samplers和在Thread Group下定义的3个循环,我的期望是,当线程在3秒内完成请求并在其他线程尚未启动时被关闭时,你根本无法实现所需的并发性
尝试将循环计数设置为
-1
或勾选“永远”框——这样您应该能够实现所需的并发性。查看JMeter Test Results: Why the Actual Users Number is Lower than Expected了解更多详细信息还要确保遵循JMeter Best Practices,因为默认的JMeter设置可能不适合生成10000个并发用户,因此需要对其进行优化以获得最大性能。如果调整不起作用,你必须选择Distributed Testing