高级性能测试系列《21.临界部分控制器:如何让锁变成动态锁,生成多把锁? 》

2022-12-02 21:48:49 浏览数 (1)

目录

  • 一、事务控制器 聚合报告
  • 二、临界部分控制器
    • 1.锁名称:默认是一个固定锁名称。
    • 2.如何让锁变成动态锁,生成多把锁?
  • 三、临界部分控制器的应用场景

一、事务控制器 聚合报告。

  • jmeter中,默认一个取样器,发起一次请求就是一个事务。
  • 多个取样器要合并为一个事务,添加事务控制器。

聚合报告:

聚合报告和汇总报告是一样的。

  • 1、没有网络瓶颈的时候,吞吐量的值等价为tps的值。
  • 2、并发用户数不变。负载测试要逐步增加并发用户数,并发用户数一直在变。这种时候,也不能看聚合报告的。

聚合报告中的数据,吞吐量的值是一个平均数。

所以不能用这个平均数来衡量不同并发用户数下的服务器的tps值。

  • 每一行,代表一种事务。

二、临界部分控制器

Critical Section Controller临界部分控制器。 ----比较特殊,用得少。

  • 作用:严格控制请求的顺序。

1.锁名称:默认是一个固定锁名称。

锁名称:固定值。

相当于把性能测试中的并行执行,强制转换为串行执行。

图1:只有一个高速收费站(只有一把锁),所有的用户在排队,依次拿到这把锁,才能进入。前面这个用户拿走了这把锁(锁已经锁定了),后面这个用户没有锁是进不去的。所以排队等候,等这把锁释放了,后面这个用户拿到了这把锁,才能进入高速公路。这个时候就是串行执行了。

2.如何让锁变成动态锁,生成多把锁?

图2:有多个用户同时到了多个高速收费口(每个高速收费口都有一把锁),多个用户就不用排队了。每个用户都可以拿到一把锁,就进入高速公路了。这个时候就是并行执行了。

图3:对于每一个用户来说,每个用户的第一辆车和第二辆车是串行在执行的。对于整个来说,多用户是并行执行的。

  • 锁名称变成一个动态名称。

动态值:${__threadNum}

生成线程号

global_lock_${__threadNum}

临界部分控制器

假设有3个用户。第1个用户,执行请求1,再执行请求2;第2个用户,执行请求1,再执行请求2;第3个用户,以此类推。三个用户是同时执行的。

加了临界部分控制器(加了动态锁),对于每个用户而言,它是强制从上往下执行请求1和请求2的。

即使不加临界部分控制器,也是从上往下执行请求1和请求2的。

三、临界部分控制器的应用场景

功能测试里会用到临界部分控制器。在性能测试里,很少用到临界部分控制器。

因为加了临界部分控制器,请求1和请求2被执行的顺序是从上往下;不加临界部分控制器,请求1和请求2被执行的顺序也是从上往下。

所以,除了一些特殊的情况,性能测试里是不会用到临界部分控制器的。

更多临界部分控制器的内容,参考:

http://testingpai.com/article/1595507267745

脚本链接:

链接:https://pan.baidu.com/s/1J0Z65TNONrpTuMC3xbZGWA?pwd=1234 提取码:1234


文章中除标明“图片来自网络”的图片,皆为小编本人所画所截图。文章中的链接文章的版权归原作者所有。清菡编写的此文,如有转载,请标明出处!

0 人点赞