性能文章>【5】性能测试平台从设计到实现-如何选择适合自己的压力模型>

【5】性能测试平台从设计到实现-如何选择适合自己的压力模型原创

https://a.perfma.net/img/2871132
6月前
3663717

        昨天的文章评论收到的小伙伴,想听压力模型的反馈,那么今天我们就来聊下压力模型~

        在我们实际的性能测试任务场景构建中,最常面对的是两类场景,并发数和QPS。小编在早期使用JMeter压测时,这部分的功能是通过原生线程组/扩展线程组和定时器【Constant Throughput Timer】的方式来实现的,但因JMeter的架构设计【基于多线程的并发模型】原因,导致并发性能存在较大的瓶颈。所以,在最近几年,都是在使用Gatling引擎为主引擎,来构建的性能测试平台。

      Gatling引擎通过Injection来提供压力模型设置,针对并发数【即封闭模型】和针对QPS【即开放模型】,并且这两个工作负载模型是互斥的,并不能在同一Injection中使用。这点在实际应用中要特别注意,选择压力模型的前提是要明确知道你所要压测的系统到底是属于封闭系统【最经典的是有线路接入限制的客服呼叫中心】还是开放系统【大部分系统都属于这类】。

      然后我们来看在封闭系统和开放系统中 ,引擎给我们提供了哪些能力可供选择

1)开放模型

setUp(
  scn.inject(
    nothingFor(4), // 1
    atOnceUsers(10), // 2
    rampUsers(10).during(5), // 3
    constantUsersPerSec(20).during(15), // 4
    constantUsersPerSec(20).during(15).randomized, // 5
    rampUsersPerSec(10).to(20).during(10.minutes), // 6
    rampUsersPerSec(10).to(20).during(10.minutes).randomized, // 7
    stressPeakUsers(1000).during(20) // 8
  ).protocols(httpProtocol)
)

2)封闭模型

setUp(
  scn.inject(
    constantConcurrentUsers(10).during(10), // 1
    rampConcurrentUsers(10).to(20).during(10) // 2
  )
)

        每种加压方式,大家可以在底部的参考资料中,看到详细的介绍。在这里不做赘述,那么我们加压的时候更多的基于基础压力的一种组合来尽可能的模拟用户真实流量,但这种参数化的设置,并不直观,尤其是复杂的压力设置中,所以我们在性能测试平台中做了一个功能就是基于用户的设置,来绘制理想的流量模型,方便用户直观地查看设置是否符合预期,更便捷的完成压测,无图无真相,请看图:

        自从这个功能上线,发现大家构造复杂流量模型的热情持续高涨,于是我们将这部分能力抽离出来,做成可复用的压力模型管理模块,方便大家复用和分享自己构造的压力模型,给自己和团队小伙伴使用~先卖个关子,这部分的功能,我们放到后面来讲~

参考资料:https://gatling.io/docs/gatling/reference/current/core/injection/

分类:标签:
请先登录,查看7条精彩评论吧
快去登录吧,你将获得
  • 浏览更多精彩评论
  • 和开发者讨论交流,共同进步

为你推荐

借助Xpocket中的perf插件 了解cpu热点函数的抓取原理
本文使用了xpocket工具包的插件链接xpocket地址: [https://plugin.xpocket.perfma.com](https://plugin.xpocket.perfma.com
【0】性能测试平台从设计到实现-开篇
性能测试平台从设计到实现-开篇;从背景介绍、目标价值和特征分析三个方面,对性能测试平台的建设进行阐述
【1】性能测试平台从设计到实现-中控系统
性能测试平台从设计到实现的第二篇,中控系统,本文主要介绍了中控系统的任务管理的新建任务功能,将任务所需的各类资源按照步骤进行拆分,映射到资源管理模块下的各个子模块中,可复用,可新建【支持保存】。任务从创建到实时执行查看到执行完成回看的全过程。
【2】性能测试平台从设计到实现-中控系统之资源管理
性能测试平台从设计到实现的第三篇,中控系统之资源管理,本文主要介绍了资源管理中的四要素,即用例、数据、压力模型和执行节点。
【3】性能测试平台从设计到实现-如何玩转压测脚本
性能测试平台从设计到实现的第四篇,如何玩转压测脚本,本文主要介绍了Gatling引擎的scala脚本的常用写法,直接拿走不用谢~
【4】性能测试平台从设计到实现-玩转压测脚本之场景化压测
性能测试平台从设计到实现的第五篇,玩转压测脚本之场景化压测,本文是第四篇如何玩转脚本的姊妹篇,以春运活动为例,讲解了场景化压测脚本的编写方法
【5】性能测试平台从设计到实现-如何选择适合自己的压力模型
性能测试平台从设计到实现的第六篇,如何选择适合自己的压力模型,本文从实际业务场景出发,介绍两大类场景并发数和QPS下的压力模型构造方法,及在引擎提供的基础能力上,如果简化这部分的工作。
【6】性能测试平台从设计到实现-报告初步解读和平台的增强优化
性能测试平台从设计到实现的第七篇,报告初步解读和平台的增强优化。本文讲述了在压测中和压测结束后,针对报告的解读方法,需关注的指标以及平台所做的增强型优化功能