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


    目录

    • 一、事务控制器+聚合报告

    • 二、临界部分控制器

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

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

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

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

    • jmeter中,默认一个取样器,发起一次请求就是一个事务。

    • 多个取样器要合并为一个事务,添加事务控制器。

    聚合报告:

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

    • 1、没有网络瓶颈的时候,吞吐量的值等价为tps的值。

    • 2、并发用户数不变。负载测试要逐步增加并发用户数,并发用户数一直在变。这种时候,也不能看聚合报告的。

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

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

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

    二、临界部分控制器

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

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

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

    7128151b29ff408bcb8f7a4e5d950b90.png
    锁名称:固定值。

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

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

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

    c171e1edb896f27521fa0ad1780a674a.png
    图2:有多个用户同时到了多个高速收费口(每个高速收费口都有一把锁),多个用户就不用排队了。每个用户都可以拿到一把锁,就进入高速公路了。这个时候就是并行执行了。
    6bbcefb8df5fff07b84a8dcfab20d24f.png
    图3:对于每一个用户来说,每个用户的第一辆车和第二辆车是串行在执行的。对于整个来说,多用户是并行执行的。
    • 锁名称变成一个动态名称。

    动态值:${__threadNum}

    4d320bc8e97a4587acb8abee5f7fad6a.png
    生成线程号

    global_lock_${__threadNum}

    33dc2a44f85b3f4ab641ae5de26739b6.png
    临界部分控制器

    假设有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


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

    欢迎关注 “清菡软件测试”,进群加v:qhtester,备注:学校(公司名)+姓名(昵称),否则不予通过,感谢点赞与分享!

  • 相关阅读:
    Python 中 Selenium 的 getAttribute() 函数
    Numpy入门[3]——Numpy数组及其索引
    第2章丨IRIS Global 使用多维存储
    camke bash
    Linux定时任务切割日志
    Bootstrap模态框的基本使用2.0(复制可用)
    华为云项目部署
    C# 自定义控件
    【python】基于python聊天工具
    千万小心,99%的Java程序员会踩这些坑
  • 原文地址:https://blog.csdn.net/weixin_41033105/article/details/125466112