Jmeter如何每秒发送恒定数量的请求

Jmeter how to send a constant number of requests every second

JMeter 是否允许我每秒发送固定数量的请求,而不是仅在请求完成后按顺序发送?即即使请求 1 尚未完成响应,我是否可以在请求 1 之后发送请求 2?

我正在使用 Apache JMeter 5.2.1,如果有人可以就此提供指导,我将不胜感激。 恒定吞吐量计时器似乎更关注吞吐量,但我只想发送 X req/s.

Constant Throughput Timer 只能暂停 JMeter 线程,以便限制 每秒请求数达到给定值。

因此您必须在 Thread Group 中提供足够的线程以每秒创建比您尝试达到的请求更多的请求,然后使用恒定吞吐量计时器将每秒请求数限制为所需速率。

所以主要限制是:

  • Constant Throughput Timer 只能减慢 JMeter,它不会启动额外的线程
  • Constant Throughput Timer 在 "minute" 级别上足够精确,如果您的测试持续时间较短或者您想立即查看吞吐量变化,则需要使用 ramp-up

所以我建议改用以下方法之一:

  1. Precise Throughput Timer (available since JMeter 4.0)
  2. Concurrency Thread Group and Throughput Shaping Timer 组合,这些家伙提供了最灵活的方式 reach/maintain 所需的吞吐量

我最终发现的解决方案非常简单。如果我决定总共需要发出 5000 个请求,并且我想遵循每秒发送 2 个请求的范例,而不管是否收到响应。我可以简单的使用就是使用ramp up period.

"Ramp Up" - 启动所有线程所花费的时间

所以如果你想要每秒发送 N 个请求,并且想要发送 M 个请求,你需要将你的启动周期设置为 M/N 在我的例子中是 5000/2 = 2500。此外没有需要多次迭代。

当然这可能意味着如果服务非常慢,您可以将服务正在处理的并发线程增加到一个很大的数量,但这正是我们想要测试的。