jmeter 按线程数阶梯式压测数据库

时间:2024-03-02 19:06:34

当前版本:

  • jmeter 5.6.3
  • mysql 5.7.39

简介

    JMeter 通过 bzm - Concurrency Thread Group 来实现阶梯式压测,它并不是JMeter的官方插件,而是一种由Blazemeter提供的高级线程组插件。可以在不同的时间内并发执行不同数量的线程,模拟不同的负载场景。

        

文章目录如下

1. 下载插件

2. 界面说明

3. 测试步骤

3.1. 添加压测线程组

3.2. 设置JDBC配置

3.3. 构造简单业务

3.4. 配置监听器

4. 测试案例

4.1. 阶梯式加压

4.2. 持续加压

4.3. 持续加压后稳定测试


        

1. 下载插件

地址如下(下载2个包,一个用于阶梯式压测,一个用于增加性能监听器)

https://jmeter-plugins.org/downloads/old/

注意:JMeter版本3.2以上)

将下载的两个zip包解压后,找到 JMeterPlugins-Standard.jar 和 JMeterPlugins-Extras.jar,放到 jmeter\lib\ext\ 下,重启 jmeter 生效。

        

2. 界面说明

添加阶梯式压测线程组

  • 右击测试计划 → 添加 → 线程(用户) → bzm - Concurrency Thread Group

        

界面说明

        

3. 测试步骤

jmeter 通过如下组件来构造高并发:

bzm - Concurrency Thread Group  # 模拟阶梯式压测
JDBC Connection Configuration   # 配置数据库连接信息
JDBC Request  # 构造业务

通过如下监听器来查看性能指标

聚合报告    # 查看整体性能指标
jp@gc - Response Times Over Time  # 查看响应时间走势图表
jp@gc - Transactions per Second   # 查看吞吐量走势图表
jp@gc - Active Threads Over Time  # 查看线程数走势

        

3.1. 添加压测线程组

  • 右击测试计划 → 添加 → 线程(用户) → bzm - Concurrency Thread Group

需求:初始线程数64,按2倍持续叠加,分别压测 64、128、256、512、1024并发数,共测试10分钟。配置如下:

        

3.2. 设置JDBC配置

  • 右击测试计划 → 添加 → 配置元件 → JDBC Connection Configuration

"""MySQL"""
URL:jdbc:mysql://[IP]:[端口]/[数库名]  # jdbc:mysql://localhost:3306/mysql
Driver:com.mysql.jdbc.Driver
"""Oracle"""
URL:jdbc:oracle:thin:@[IP]:[端口]:[数库名]  #jdbc:oracle:thin:@localhost:1521:orcl
Driver:oracle.jdbc.OracleDriver
"""PostgreSQL"""
URL:jdbc:postgresql://[IP]:[端口]/[数库名]  # jdbc:postgresql://localhost:5432/postgres
Driver:org.postgresql.Driver

        

3.3. 构造简单业务

  • 右击线程组 → 添加 → 取样器 → JDBC Request

简单读语句(仅举例)

简单写语句(仅举例)

        

3.4. 配置监听器

  • 右击线程组 → 添加 → 监听器 → 聚合报告
  • 右击线程组 → 添加 → 监听器 → jp@gc - Response Times Over Time
  • 右击线程组 → 添加 → 监听器 → jp@gc - Transactions per Second
  • 右击线程组 → 添加 → 监听器 → jp@gc - Active Threads Over Time

所有基础配置如下:

        

配置完成后运行即可(我笔记本支撑不了1024并发,这里就不执行了)

        

4. 测试案例

4.1. 阶梯式加压

线程组配置如下:

总共20个线程,分5次加压,运行时间3分钟。

        

线程数走势如下:

        

吞吐量走势如下:

从线程数和吞吐量对比来看,8个线程最为稳定。 

        

4.2. 持续加压

线程组配置如下:

总共20个线程,不指定阶梯,总运行时间3分钟。

        

线程数走势如下:

        

吞吐量走势如下:

从线程数和吞吐量对比来看,也是6~8个线程最为稳定。 

        

4.3. 持续加压后稳定测试

线程组配置如下:

总共8个线程,持续加压时间1分钟,加压完成后继续测试2分钟。

为什么这么设定?

从前面的测试结果来看,8个线程基本达到拐点,那么继续测试持续1分钟加压到8个线程后,持续测试2分钟(检测是否稳定)。

        

线程数走势如下:

        

吞吐量走势如下:

从线程数和吞吐量对比来看,8个线程波动太大,应该6个线程更稳定。