数据库加压之JMeter篇

数据库加压之JMeter篇

前言:在整个软件开发的过程中,我们希望尽可能的在前期将bug暴露出来,一来到后期bug的影响范围可能变大,甚至影响底层设计,一旦推翻重做太过“损伤元气”,二来前期解决可以大幅度节约成本,毕竟涉及资本运作。与此同时我们上线后日积月累随着用户的使用数据量的增加,很多问题就会暴露出来。综上所述通常在开发阶段就做好长远的打算,根据实际的业务场景在设计定稿后对数据库进行加压,在加压的环境下开发可以有效的避免上述问题。废话到此为止开始上干货,使用Jmeter工具依照实际业务对数据库进行加压。

一、前期准备

1.安装jdk1.8(此篇省略)
2.apache-jmeter-5.0(此篇以此版本为例)
3.数据库驱动包
4.数据库连接信息
5.业务数据计划加压指标

二、加压脚本编写

在安装好jdk1.8的环境上 双击apache-jmeter-5.0\bin目录下的ApacheJMeter.jar就可以打开jmeter就可以进行脚本的编写了

1.新建测试计划

打开之后默认创建测试计划,可以改名字
在这里插入图片描述
数据库驱动包在测试计划中引入
在这里插入图片描述

2.在测试计划上右键->线程(用户)->添加线程组

根据数据库配置可以开多线程对数据库进行加压
在这里插入图片描述
设置线程组数
在这里插入图片描述

3.在测试计划上右键->监听器->分别添加察看结果树和聚合报告在这里插入图片描述

察看结果树可以查看每个请求的信息,请求报头,成功及失败日志信息等。
聚合报告可以从不同维度查看分析结果。

4.在线程组上右键->配置元件添加JDBC Connection Configuration

JDBC Request
JDBC Connection Configuration 用于配置需要加压的数据库信息,声明连接池信息等
在这里插入图片描述

5.在线程组上右键->逻辑控制器添加循环控制器

在这里插入图片描述
一个线程内可以循环执行不同的脚本,一来提高加压效率,二来可以根据数据表1:n的关系添加业务需要的数据,比如一个会议有两个议题,在添加会议的脚本后可以添加一个循环控制器,循环次数配置成2,在循环器内添加议题信息的插入脚本即可。

6.在线程组或者循环控制器上右键->取样器->添加Bean Shell 取样器

在这里插入图片描述
Bean Shell 取样器可用于定义参数,id一般是随机的,所以通过java代码添加
在这里插入图片描述

7.在线程组或者循环控制器上右键->取样器->添加JDBC Request

在这里插入图片描述
JDBC Request用来编写数据库执行脚本
在这里插入图片描述
如图要填写
Variable Name of Pool declared in JDBC Connection Configuration:数据库连接池名称-前面在JDBC Connection Configuration声明的
Query Type:加压数据通常是inser语句所以Query Type 要选择Update Statement
其他参数讲解详见https://blog.csdn.net/frank_ldw/article/details/88396207
一般插入的id都不能是重复的,或者是和其他表有关联的,所以我们通常将id参数化’${mid}’,敲黑板参数要在添加JDBC Request之前定义好
有些参数是固定的,可以通过引入csv文件来设置
在这里插入图片描述

三、执行加压计划

实际业务场景可能比较复杂,每个项目都有自己的业务数据计划加压指标,所以我们可以根据指标在执行上做些文章。
场景一:要加压三年会议数据量30W
可用方案:设置线程组中线程数为100,循环控制器中循环次数为3000
场景二:30W的会议中有一半有两个议题,一半有五个议题

可用方案:分批次执行
a.设置线程组中线程数为100,最外层循环控制器中循环次数为1500,议题外的循环控制器循环次数为3
b.设置线程组中线程数为100,最外层循环控制器中循环次数为1500,议题外的循环控制器循环次数为5
以上为个人探索实践结果,仅供参考

编写完脚本设置好各参数后可点击绿色三角执行计划,如图
在这里插入图片描述
执行结果可点击察看结果树和聚合报告查看
第一次测试尽量将循环次数,线程数设置为1,以免产生垃圾数据

点击如图图标可清除察看结果树和聚合报告中的结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值