当前版本:
- 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个线程更稳定。