使用JMeter进行MySQL的压力测试
- GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
- GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。
前言
JMeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。而且JMeter拿到安装包之后直接解压就可以使用,同时它也可以在linux/windows/macos上使用。
JMeter可以做接口测试和压力测试,其中接口测试的简单操作包括做 http 脚本(发 get/post 请求、加 cookie、加 header、加权限认证、上传文件)、做webservice脚本、参数化、断言、关联(正则表达式提取器和处理 json-json path extractor),而且JMeter还能进行数据库的相关测试。
1. JMeter安装
在安装JMeter之前需要先配置好JDK环境,然后通过JMeter官网下载(https://jmeter.apache.org/download_jmeter.cgi)安装包解压,即可直接使用。
2. 导入MySQL驱动
在MySQL官网(https://downloads.mysql.com/archives/c-j/)找到对应版本的MySQL驱动进行下载,并将其拷贝到%JMETER_HOME%\lib\ext目录下,重启JMeter。
3. 配置并使用JMeter连接数据库
step1:添加JDBC Connection Configuration

在配置元件中选择JDBC Connection Configuration进行添加,正常情况下只要修改以下参数即可,其他均使用默认值:
Variable name: 连接池变量名在稍后要添加的JDBC Request中要保持一致。Database URL: MySQL的标准格式为:jdbc:mysql://host[:port]/dbname,根据实际情况进行修改。JDBC Driver class:MySQL驱动就是com.mysql.jdbc.Driver。Username和Password:根据实际情况正确填写即可。
step2:添加JDBC Request

在线程组中选择取样器添加JDBC Request:
Variable name:与之前的设置的连接池变量名一致。Query Type:主要包括八种类型,每种类型作用都不一样。
1.Select statement:执行第一条sql语句的查询,如果是多条sql语句也只会执行第一条sql语句;
2.Update statement:执行第一条更新语句,包含insert和update;
3.Callable statement:执行多条sql语句,也可以调用存储过程,需要注意的是选择该类型,在JDBC连接配置的Database URL后需要添加?allowMultiQueries=true;
4.Prepared select statement:执行预编译的查询语句,语句中的参数可以从parameter values中获取;
5.Prepared update statement:执行预编译的更新语句包含insert和update;
6.Commit:将未存储的SQL语句结果写入数据库表;
7.Rollback:撤销指定SQL语句的过程;
8.AutoCommit(false):禁用自动提交;Autocommit(true): 开启自动提交;
Result variable name:输入变量名称,如result,表示将查询结果放到result变量中, 后续再通过BeanShell对结果进行处理,多个变量名可以以逗号分隔。
step3:运行并查看结果


一般我们会再添加监听器下的两项功能:察看结果树和汇总报告,用于结果的查看;
- 线程组设置:线程数即并发用户数,持续时间即执行测试的时长也可以使用循环次数,按次数对测试时长进行控制 ;
- 察看结果树:用于结果的输出,在压测过程中,建议只仅输出错误的日志;
- 汇总报告:显示压测结果,主要观察以下参数:
1.Samples:表示一共发出的请求数;
2.Average:平均响应时间,默认情况下是单个Request的平均响应时间(ms);
3.Error%:测试出现的错误请求数量百分比,如果察看结果树有勾选日志输出,也可以直接查看日志;
4.Throughput:简称tps,吞吐量,默认情况下表示每秒处理的请求数,也就是指服务器处理能力,tps越高说明服务器处理能力越好。
全部配置好,就可以点击菜单栏的"启动"开启测试,一般在压力较大的情况下,不建议使用GUI进行操作,可通过JMeter的命令行直接执行测试。
4. 其他使用小技巧
对查询结果进行简单处理
如果想将上述SELECT的查询结果保存到文件中,可以通过添加BeanShell PostProcessor进行处理。

获取结果集中的记录数量:
vars.getObject("result").size()获取某一行中某个字段的值:
vars.getObject("result").get(0).get("realname")第一行的索引是从0开始的,所以get(0)表示取第一行,
get("realnameV")表示获取realname这个字段的值
混合场景设置
对数据库的测试经常会涉及到混合场景,比如按一定的并发比例进行增删改查的测试,JMeter混合场景一般有三种方式进行设置:
- 吞吐量控制器
- IF控制器
- 多个线程组方式
我们推荐使用:吞量控制器,通过设置多个控制器的吞吐量百分比例来实现增删改查的混合场景测试。

Based on:有两个选项Total Executions:执行数量percent Executions:执行百分比(1-100)
总结
本次只介绍了JMeter连接MySQL的最基本用法,JMeter也支持PostgreSQL,Oracle,MSSQL等数据库,而且还提供了非常丰富的功能需要自己去动手实践。
Enjoy GreatSQL
文章推荐:
ulimits不生效导致数据库启动失败和相关设置说明
MGR及GreatSQL资源汇总
关于 GreatSQL
GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。
Gitee:
https://gitee.com/GreatSQL/GreatSQL
GitHub:
https://github.com/GreatSQL/GreatSQL
Bilibili:
https://space.bilibili.com/1363850082/favlist
微信(左)&QQ群(右):


微信:扫码添加GreatSQL社区助手微信好友,发送验证信息“加群”加入GreatSQL/MGR交流微信群。
QQ:直接扫码加入GreatSQL/MGR交流QQ群。
使用JMeter进行MySQL的压力测试的更多相关文章
- jmeter 连接 mysql 进行压力测试
- Jmeter教程 简单的压力测试
Jmeter教程 简单的压力测试:http://www.cnblogs.com/TankXiao/p/4059378.html
- 转:使用 JMeter 完成常用的压力测试
使用 JMeter 完成常用的压力测试 就目前 Java EE 的平台下开发的软件来说,这种节点通常可能是:Web 服务器.数据库服务器和 JMS 服务器.它们都是请求主要发生的地点,请求频率较其它的 ...
- Windows和Linux的Jmeter分布式集群压力测试
Windows的Jmeter分布式集群压力测试 原文:https://blog.csdn.net/cyjs1988/article/details/80267475 在使用Jmeter进行性能测试时, ...
- mysql+mycat压力测试一例【转】
前言 有很多人担心生产系统上新东西的程序怕压力跟不上和稳定性不行,是的,大家都怕,所以领导要求做一次压力测试,我个人也觉得是有必要的. 如果按原理来说,mycat如果不做分片,纯粹只是代理的话,他所做 ...
- JMeter (3) —— JMeter录制脚本并压力测试用户登陆场景以CAS SSO为例(101 Tutorial)
JMeter (3) -- JMeter录制脚本并压力测试用户登陆场景以CAS SSO为例(101 Tutorial) 主要内容 JMeter录制脚本并进行压力测试用户登陆场景,并以CAS SSO单点 ...
- 【转】使用JMeter 完成常用的压力测试(三)
使用JMeter 完成常用的压力测试 发布时间: 2008-9-27 15:33 作者: 未知 来源: 网络转载 字体: 小 中 大 | 上一篇 下一篇 | 打印 | 我要投稿 ...
- 【转】使用JMeter 完成常用的压力测试(二)
使用JMeter 完成常用的压力测试 Login.jsp 和welcome.jsp.其中 login.jsp 负责生成 User 对象,并调用 User 的login.当 login 返回为 true ...
- 学习总结——JMeter做http接口压力测试
JMeter做http接口压力测试 测前准备 用JMeter做接口的压测非常方便,在压测之前我们需要考虑这几个方面: 场景设定 场景分单场景和混合场景.针对一个接口做压力测试就是单场景,针对一个流程做 ...
随机推荐
- 【单片机】CH32V103C8T6 ——窗口看门狗
本章教程通过串口调试助手打印显示程序运行状态,具体现象如下: 若计数器值在上窗口值和下窗口值0X40之间的时候,进行喂狗操作,计数器重新计数,程序正常运行,串口打印显示:The program run ...
- Codeforces Round #793 (Div. 2)
C. LIS or Reverse LIS? D. Circular Spanning Tree E. Unordered Swaps F MCMF?
- jeecgboot-vue3笔记(八)——treeSelect树形选择组件的使用(一次性加载)
使用效果 前端代码 定义interface export interface TreeDataItem { value: string; key: string; title?: string; sl ...
- LoRa模块无线收发通信技术详解
LoRa是一种LPWAN通信技术,它基于扩频技术而广泛应用于超长距离的无线传输场景中.现在,LoRa主要在全世界433.868.915MHz等自由频带工作.其最大特征是灵敏度高,传输距离长,工作功耗低 ...
- 【lora无线数传通信模块】亿佰特E22串口模块用于物联网地震预警传感通信方案
物联网地震预警项目介绍: 地震,俗称地动.它像平常的刮风下雨一样,是一种常见的自然现象,是地壳运动的一种表现,即地球内部缓慢积累的能量突然释放而引起的地球表层的振动.据统计,5级以上地震就能够造成破坏 ...
- 腾讯视频的qlv格式转换为mp4格式
1.点击设置->下载设置->缓存管理 下的文件目录复制; 2复制在 我的电脑路径栏目中 找到缓存目录 文件夹vodcache; 3.打开视频对应文件; 4.打开cmd命令窗口 5.跳转 到 ...
- 19.Tomcat多实例部署及负载均衡、动静分离
Tomcat多实例部署及负载均衡.动静分离 目录 Tomcat多实例部署及负载均衡.动静分离 Tomcat多实例部署 安装jdk 设置jdk环境变量 安装tomcat 配置 tomcat 环境变量 修 ...
- 探索链路追踪在.NET6工业物联网项目的应用
ExploringIoTDistributedTracingNet6 如果觉得有用,请留言学到了. 已经会了的老哥,请留言就这? 可能遇到的问题 工业物联网项目自上而下一般分为ERP.Mes.SCAD ...
- Vue-简单安装和运行
安装Vue CLI 安装nodejs 下载: https://nodejs.org/en/download/ 安装Vue CLI 文档: https://cli.vuejs.org/guide/ins ...
- dubbox、zookeeper BUG记录
主要错误信息: dubbo:com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method... Caused by: com.alib ...