【问题标题】:Jmeter - Unable to run 1000 concurrent users per/secJmeter - 无法每秒运行 1000 个并发用户
【发布时间】:2019-06-28 15:58:11
【问题描述】:

我一直在尝试使用 JMeter 对 10000 个用户运行性能测试,并发性为每秒 1000 个用户,问题是我永远无法在部署在我的服务器上达到 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 开始测试 @ Fri Jun 28 15:14:10 UTC 2019 (1561734850233) 16:14:10 在端口 4445 上等待可能的 Shutdown/StopTestNow/Heapdump 消息 16:14:32 总结 + 00:00:20 中的 17 = 0.8/s 平均:1330 最小:77 最大:2174 错误:1 (5.88%) 活动:7 开始:20 完成:13 16:15:05 总结 + 00:00:30 中的 29 = 1.0/s 平均:1596 最小值:1443 最大值:2868 错误:0 (0.00%) 活动:7 开始:49 完成:42 16:15:05 总结 = 00:00:50 中的 46 = 0.9/s 平均:1498 最小值:77 最大值:2868 错误:1 (2.17%) 16:15:37 总结 + 00:00:30 中的 30 = 1.0/s 平均:1674 分钟:1252

【问题讨论】:

  • 显示您为模拟 1000 个用户而创建的线程组的定义,最好包括整个测试计划。
  • “我在 Azure 中部署的服务器”:VM、应用服务、容器、AKS?什么尺寸/容量?
  • @KarolDowbecki 如前所述,请查找随附的测试计划。
  • @user2952161 你没有附上测试计划,没有办法知道你是如何设置线程组的。
  • @KarolDowbecki 我的坏人现在附上了它们

标签: java azure jmeter performance-testing blazemeter


【解决方案1】:

查看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

【讨论】:

    【解决方案2】:

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

    要么创建一个线程较少的线程组,然后在单个线程中重复测试操作,要么向您的实例添加更多 vCPU。

    【讨论】:

      猜你喜欢
      • 2015-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-15
      • 1970-01-01
      • 2011-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多