Jmeter - 计算 Ramp-up 周期

Jmeter - Calculating Ramp-up period

我正在尝试每分钟向我的 API 端点发送 1100 个请求,持续 5 分钟,所以总共我将向端点发出 5500 个请求。

根据以上要求,我是这样设置我的Jmeter的:

似乎我配置错误的 Jmeter,因为最后我可以看到 Jmeter 向 API 而不是 5500 发出了 8401 请求.

我在配置中遗漏了什么?

“无限”check-box需要勾选还是不勾选?

I am trying to send 1100 requests per minutes to my API endpoint for a period of 5 minutes, so in total I will make 5500 requests to the endpoint.

我不知道你是怎么得出这个 5500 数字的,但这不是很正确。

您的设置意味着:

  1. JMeter 将每秒添加 18 个虚拟用户,持续 60 秒
  2. 60 秒后,JMeter 将 运行 1100 个用户再持续 4 分钟

JMeter 能够发出的请求总数主要取决于应用程序响应时间

如果您想将 JMeter 的吞吐量限制为每分钟 1100 个请求,请考虑使用 Constant Throughput Timer or Precise Throughput Timer

如果您不想限制 JMeter 的吞吐量但又想执行 5500 次:

  • 将 "Loop Count" 设置为 5(但那样的话您可能无法获得 1100 个并发用户)
  • 或者在 Total Executions 模式下使用 Throughput Controller 这样 JMeter 将在执行 5500 个请求后停止

您预期的此测试计划的请求数(即 5500错误

按照您的预期,我认为您混淆了线程和请求。

Ramp up 是所有用户到达您测试的应用程序服务器的时间。

请求是采样器模拟的,线程是用户模拟的。

根据您的测试计划:

- Total Number of Threads: 1100 vitual users
- Ramp-up time: 60 (1 min)
- Loop count: Infinite
- Test duration: 300 sec (5 min)
- No of requests/sampler in Test Plan: Unknown, assuming it 1

JMeter 执行:

JMeter 将根据启动时间在 60 seconds 中启动那 1100 个虚拟用户。因此,在测试的第一分钟内,(1100/60)~ 18 用户将每秒处于活动状态。每个 thread/user 将执行您在测试计划层次结构中定义的请求或采样器。由于您已将循环计数定义为 infinite,每个线程将重复执行请求,直到测试完成。 60 秒后,您的所有 1100 名用户都将在剩余的 4 分钟内积极点击这些 samplers/requests。

因此您可以通过 JMeter 发出的请求总数取决于您的应用程序响应时间

如果您的请求的平均响应时间是 1 second (assuming you have only 1 requests in your test plan),那么您将能够在最后 4 分钟(当您的 1100 个用户都处于活动状态时)达到总计 264000 (264000/240 = 1100 requests per second)测试。您还可以使用 Active Threads Over Time and Hits Per Second 听众相应地验证这一点。

因此,请仔细检查您的应用程序的平均响应时间或您在测试计划中使用的requests/samplers。

如果您想将 JMeter 的吞吐量控制在 1100 per minute,您可以在测试计划级别使用 Constant Throughput Timer 并使用 target throughput value as 1100.

不要忘记在测试持续时间中添加 ramp-down time 的计数。是的,当你加速时,即在第一分钟,通常你会在线程启动时收到更多请求。在你的情况下,你的测试持续时间应该是 7 mins (60 seconds for the ramp-up 1100 users + 300 seconds for 5500 requests + 60 seconds for the ramp down for 1100 users).

您还可以查看此线程了解更多信息:

Please note- The total number of requests is related to throughput, Whereas the number of active threads performing the same activity is related to concurrency.