针对今天的性能需求制定方案策略
做测试分析:
吞吐量制定计时器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左右,所以此时我们已经完成目标。