有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Jmeter无法每秒运行1000个并发用户

enter image description here我一直在尝试使用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


共 (2) 个答案

  1. # 1 楼答案

    您已经创建了一个包含1000个线程的线程组。除非你的Azure实例有1000个vCPU,否则这将导致过多的context switching,JVM将花费更多的时间在线程之间切换,而不是完成工作

    创建一个线程组,减少线程数,并在单个线程内重复测试操作,或者向实例中添加更多vCPU

  2. # 2 楼答案

    查看Active: 7summarizer输出,您的活动用户似乎不超过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