Jmeter性能测试-如何精准控制每秒请求数之jp@gc - Throughput Shaping Timer的使用

Jmeter性能测试-如何精准控制每秒请求数之jp@gc - Throughput Shaping Timer的使用

本文参考了:https://www.cnblogs.com/yagao/p/12614175.html

Throughput Shaping Timer 是用来控制吞吐量的定时器,通过延缓线程运行来整体控制取样器产生的RPS。

实际使用中:

  1. 可以通过设置在不同吞吐量分别持续一段时间,考察系统在不同吞吐量情况下的稳定性

  2. 可以通过设置随着时间持续增加的吞吐量,来探测系统吞吐量的的极限

举个例子:

  1. 首先,创建一个线程组,这里我把线程数暂且设置为200,循环勾选为永远。在文章末尾解释为什么这样设置
  2. 在线程组内增加一个HTTP请求,这里以百度举个例子
  3. 加入Throughput Shaping Timer 定时器,设置起始终止RPS和持续时间,这里我采用了持续增加的方式。
  4. 加入一个TPS监听器并执行测试看看效果,如下图所示: 随着时间的增加RPS逐步提升,实际的TPS也随之线性增长,说明目前还没有到服务器的极限

注意:

End RPS 设置了RPS 上限,但要达到此值是需要线程(虚拟用户〉来执行的,所以我们先要预设够多的线程,不然RPS目标没法达到,JMeter 线程组在运行过程中是不会自动增加线程数的,只能提前设置。下面有个计算线程数的公式。

比如一个请求响应时间为2秒,END RPS 为30,那么线程数:2×30=60 (即:响应时间xRPS=所需线程数)。即大约要60个线程, 考虑到运行时诸多影响因素(比如随着RPS升高响应时间也增加了), 我们还需要预备更多的线程,也许我们加到100个线程才能满足要求,这只是一个估算值。不用担心线程数太多时RPS 会超End RPS, 此元件会自动延迟线程的运行来稳定RPS。

另外,线程组设置的循环是永远,但是因为有定时器的存在,脚本并不会真的永远运行,而是在定时器的时间结束后,脚本就会停止运行。