jmeter(38)-tps吞吐量制定方案策略

针对今天的性能需求制定方案策略

做测试分析:

吞吐量制定计时器Throughput Shaping Timer插件:

性能测试需求:
使用Jmeter性能测试工具测试出需要多少个线程(用户)能够达到我们想要的吞吐量50TPS
( 20个线程可以达到吗?  50个线程? )

计算公式:线程池大小=TPS*最大响应时间/1000

计算线程池的公式:

计算公式:线程池大小=TPS*最大响应时间/1000

=50个/sec*506/1000

=25.3个左右

所以这个时候我们把并发线程组的线程数改成=25





线程组

说明:

Target Concurrency: 300  预期客户端最大并发线程数为300

Ramp Up Time(sec): 360   在360秒内启动300个线程

Ramp-up Steps Count: 6   在上述时间内,分6次启动,即每次启动50个线程,直到300

Hold Target Rate Time (sec): 600  达到目标并发线程数300后,再并发运行600秒

Thread iterations Limit:1000000 每个线程最多迭代运行1000000次。


开始造场景:

1. 添加线程组并发线程组

2.添加虚拟取样器

3.添加tps吞吐量定制定时器  

作用:该计时器将自动控制请求数量以达到我们的目标RPS负载级别。

4.添加活跃的线程数

5.查看结果数 聚合报告


设置我们的目标:

a. 并发线程组设置如下

目标: 10个   加速时间: 10秒  加速步数次数: 2次  持有目标费率: 120秒  

Target Concurrency: 10个  预期客户端最大并发线程数为10

Ramp Up Time(sec): 10s   在10秒内启动10个线程

Ramp-up Steps Count: 2次   在上述时间内,分2次启动,即每次启动5个线程,直到10

Hold Target Rate Time (sec): 120s  达到目标并发线程数10个后,再并发运行120秒

Thread iterations Limit:1000000 每个线程最多迭代运行1000000次。

  
综上所述:解释说明:该线程组分2步启动10个虚拟用户,并持续运行120秒

b.需要添加吞吐量制定计时器插件设置如下

开始添加吞吐量精准定时器插件---Throughput Shaping Timer

方式同上--插件助手---添加Throughput Shaping Timer插件

然后线程组---添加---定时器---添加Throughput Shaping Timer

作用:用来模拟指定的系统吞吐量

参数说明:

Start RPS:RPS的起始值

End RPS:RPS的结束值

Duration,sec:持续时间,单位:秒

设置如下:

*开始TPS: 要求定制为10  结東50  持续时间60秒  即要求60s内从10tps达到50tps
*开始TPS: 要求定制为50  结束50  持续时间60秒  即要求60s内(60-120)从50tps到50tps,稳定保持

120s之内运行的场景,


c.虚拟取样器设置如下

${__Random(450,500)}

即要求每次的请求的响应时间在450-500ms之间

d.线程组--监听器---添加每秒事务数 jp@gc - Transactions per Second

  线程组--监听器---添加活跃线程数 jp@gc - Active Threads Over Time

  添加查看结果数

  添加聚合报告

e. 计算线程池的公式:

计算公式:线程池大小=TPS*最大响应时间/1000

分析:
第一次开始运行结果如下:

线程组--监听器---添加每秒事务数 jp@gc - Transactions per Second

线程组--监听器---添加活跃的线程数 jp@gc - Active Threads Over Time

通过活跃的线程数 jp@gc - Active Threads Over Time我们可以观察到以10个线程数去并发

通过每秒事务数 jp@gc - Transactions per Second我们可以观察到tps较高的在20.1个/sec左右,最大tps是23个左右,但是我们的要求在50个/sec左右。


因为我们的目标是50tps,但是使用10个线程数不能够达到

所以第一次测试没达到我们的要求。


因此我们继续通过修改线程数来达到我们的要求。
把线程数改成20,30,40,50.......

但是这样第二次有可能也没成功,

所以我们先用公式计算下我们大概需要多少个线程数:

计算线程池的公式:

计算公式:线程池大小=TPS*最大响应时间/1000

=50个/sec*506/1000

=25.3个左右

所以这个时候我们把并发线程组的线程数改成=25

再次运行

目标: 25个   加速时间: 10秒  加速步数次数: 2次  持有目标费率: 120秒  

Target Concurrency: 25个  预期客户端最大并发线程数为25

Ramp Up Time(sec): 10s   在10秒内启动25个线程

Ramp-up Steps Count: 2次   在上述时间内10s,分2次启动,即每次(0-5s)启动12.5个线程,(5s-10s)直到25
刚开始启动就是12.5 (25个线程分2次  10s内启动到25   5s内的时候启动到12.5)

Hold Target Rate Time (sec): 120s  达到目标并发线程数25个后,再并发运行120秒

第二次开始运行结果如下:

通过活跃的线程数 jp@gc - Active Threads Over Time我们可以观察到以25个线程数去并发

通过每秒事务数 jp@gc - Transactions per Second我们可以观察到tps较高的在50个/sec多左右,最大tps是53个左右,我们的要求在50个/sec左右,所以此时我们已经完成目标。

猜你喜欢

转载自www.cnblogs.com/yiyaxuan/p/12396899.html
今日推荐