跳到主要内容

大麦pro动态压测介绍

大麦pro对于压测做了非常完善的处理,能够通过不同的参数,来进行动态的压测,来模拟生产中的实际业务场景。

包括延迟队列的延迟关单、节目详情的阶梯加压、生成订单的随机下单等。

又针对了不同的版本,来进行压测,来对比不同版本下的性能提升。

延迟关单的动态压测

对于大麦pro来说,其中重要的一个功能就是 延迟关单 了。针对此功能,通过延迟队列来实现,所以对于此队列分别调整了不同的参数,来进行压测:

  • 消息的分区数:通过调整分区数,来压测不同分区数下的消息消费能力

  • 消息消费的核心线程数:通过调整消费的核心线程数,来压测不同线程数下的消息消费能力

参数1:

表关系

参数2:

表关系

通过每次调整不同的参数,来进行压测,得出不同参数下的执行效率的提升指标

节目详情的动态压测

为了模拟生产中的实际业务特点,比如:从某个值开始不断增加压力,直至达到某个值,然后持续运行一段时间, 这就是属于 阶梯加压 的类型,而 Jmeter 中的线程组 Stepping Thread Group 就支持这种阶梯加压

表关系

参数解释:

  • this group will start:表示总共要启动的线程数;若设置为 100,表示总共会加载到 100 个线程

  • first,wait for:从运行之后多长时间开始启动线程;若设置为 0 秒,表示运行之后立即启动线程

  • then start:初次启动多少个线程;若设置为 0 个,表示初次不启动线程

  • next add:之后每次启动多少个线程;若设置为 10个,表示每个梯次启动 10 个线程

  • threads every:当前运行多长时间后再次启动线程,即每一次线程启动完成之后的持续时间;若设置为 10 秒,每梯次启动完线程之后再运行 10 秒

  • using ramp-up:启动线程的时间;若设置为 1 秒,表示每次启动线程都持续 1 秒(和基础线程组的ramp-up一样意思)

  • then hold load for:线程全部启动完之后持续运行多长时间,如图:设置为 30 秒,表示 100 个线程全部启动完之后再持续运行 60 秒

  • finally,stop/threads every:多长时间释放多少个线程;如图:设置为 10 个和 2 秒,表示持续负载结束之后每 2 秒钟释放 10 个线程

图中的整个梯度压测流程为:

  1. 从第0秒开始启动线程,每 1 秒内启动 10 个线程并且运行 10 秒,以此循环,直到一共启动了 100 个线程

  2. 当已启动 100 个线程后,持续运行 30 秒

  3. 持续运行 30 秒后,每 2 秒释放 10 个线程,一直到全部线程被释放

生成订单的动态压测

在真实的场景中,对于一场热门的演唱会来说,肯定是会高并发的购买不同的票档和座位,为了模拟这种真实的场景,特意开发了一个动态压测的功能

能够随机的通过 不同的票档不同的座位,来进行下单购买

CSV Data Set Config 是 JMeter 提供的压测组件,可以读取 CSV 中的动态数据,来实现动态参数的压测

表关系