JMeter数据库性能测试指南:全面掌握基础操作

1.网络请求时间

2.数据库查询的时间

数据库性能指标

TPS:每秒事务数(一秒钟服务器处理的事务数,事务指,请求出去到响应回来的整个过程的时间)

QPS:每秒查询量(就是数据库每秒执行的SQL数量,包含insert/select/update/delete)

连接数(连接数是否释放)

查询缓存(不进行select,直接从缓存拿数据,缓存机制可以设置)

事务数的计算:Com_commit 提交次数(成功的事务)  Com_rollback回滚次数(失败的事务)相加

QPS的计算 Questions / Uptime 即可得到的该指标的值

QPS查询:mysql>show global status like 'Questions';

mysql>show global status like 'Uptime'

数据库容易出现的问题:

1.连接池容易爆掉

2.慢查询

Jmeter需要一个插件才能连接数据库,一个mysql-connector-java-5.1.7-bin.jar包,放在apache-jmeter-4.0>lib>ext下即可

连接数据库第一步:

1.“添加”-》“配置元件”-》“JDBC Connection Configuration”

QPS(Queries Per Second,每秒查询数)

TPS(Transactions Per Second,每秒处理事务数)

通过show status命令查看数据库运行状态,会有300多条状态信息记录,其中有几个值帮可以我们计算出QPS和TPS,如下:

Uptime:服务器已经运行的时间,单位秒

Questions:已经发送给数据库查询数

Com_select:查询次数,实际操作数据库的

Com_insert:插入次数

Com_delete:删除次数

Com_update:更新次数

Com_commit:事务次数

Com_rollback:回滚次数

计算方法:

1、基于Questions计算出QPS

mysql> show global status like 'Questions';

mysql> show global status like 'Uptime';

QPS = Questions / Uptime

2、基于Com_commit和Com_rollback计算出TPS:

mysql> show global status like 'Com_commit';

mysql> show global status like 'Com_rollback';

mysql> show global status like 'Uptime';

TPS = (Com_commit + Com_rollback) / Uptime

3、另一种QPS计算方式:

基于Com_select、Com_insert、Com_delete、Com_update计算出QPS:  

mysql> show global status where Variable_name in('com_select','com_insert','com_delete','com_update');

等待1秒再执行,获取间隔差值,第二次每个变量值减去第一次对应的变量值,就是QPS。

4、另一种TPS计算方式:

mysql> show global status where Variable_name in('com_insert','com_delete','com_update');

计算TPS,就不算查询操作了,计算出插入、删除、更新四个值即可。

配置JDBC Request:

1、重要参数说明:

Variable Name:数据库连接池的名字,需要与JDBC Connection Configuration的Variable Name Bound Pool名字保持一致

Query:填写的sql语句未尾不要加“;”

Parameter valus:参数值

Parameter types:参数类型,可参考:Javadoc for java.sql.Types

Variable names:保存sql语句返回结果的变量名

Result variable name:创建一个对象变量,保存所有返回的结果

Query timeout:查询超时时间

Handle result set:定义如何处理由callable statements语句返回的结果

配置JDBC Connection Configuration

(1) Variable Name Bound to Pool

Variable Name, 创建池的变量名 。这个变量在后面介绍的 JDBC Request 请求中用到。

(2) Connection Pool Configuration

Max Number of Connections    池中允许的最大连接数。在大多数情况下,将其设置为零(0),这意味着每个线程都将拥有自己的池,其中只有一个连接,即线程之间不共享连接。如果您真的想使用共享池,那么将 max count 设置为与线程数量相同,以确保线程不会彼此等待。

Max Wait (ms)   在连接池中取回连接最大等待时间
中文:如果在试图检索连接过程中(取回连接)超过所设置期限,连接池抛出一个错误

Time Between Eviction Runs (ms)     疏散时间
中文:在空闲对象驱逐线程运行期间,可以休眠的毫秒数。当非正值时,将运行无空闲对象驱逐器线程。(默认为“60000”,1分钟)(如果当前连接池中某个连接在空闲了time Between Eviction Runs Millis时间后任然没有使用,则被物理性的关闭掉。)

Auto Commit    自动提交sql语句
中文:打开或关闭连接的自动提交。
原文:Turn auto commit on or off for the connections.

(3) Connection Validation by Pool

这是Jmeter用来检验数据库连接是否有效的一种机制,超过5秒没有使用的话,就会用validation query去测试下这个连接是否有效

Test While Idle   当空闲的时候测试连接是否断开
中文:测试连接池的空闲连接,验证查询将会被使用去测试。
原文:Test idle connections of the pool, see BasicDataSource.html#getTestWhileIdle . Validation Query will be used to test it.

Soft Min Evictable Idle Time(ms)   
中文:最少的时间连接可能在池中闲置,然后才有资格被闲置的对象驱逐出去,额外的条件是至少在池中保持连接。默认值为5000(5秒)
Validation Query :验证查询 。一个简单的查询,用来确定数据库是否仍在响应。 这个验证查询在池创建中使用,即使“空闲测试”建议查询只在空闲连接上使用,也可以验证它。

验证查询的列表可以配置 jdbc.config.check。查询属性,默认情况下:

hsqldb:select 1 from INFORMATION_SCHEMA.SYSTEM_USERS

Oracle:select 1 from dual

DB2:select 1 from sysibm.sysdummy1

MySQL:select 1

Microsoft SQL Server (MS JDBC driver):select 1

PostgreSQL:select 1

Ingres:select 1

Derby:values 1

H2:select 1

Firebird:select 1 from rdb$database

 (4) Database Connection Configuration

Database URL: jdbc:mysql://服务器地址:3306/数据库名  

  (比如:jdbc:mysql://ip:3306/数据库名?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true)

    备注:“&allowMultiQueries=true” 这句话的意思呢  是为了在JDBC中执行多条select语句的时候用的!

JDBC Driver class:数据库JDBC驱动类名:com.mysql.jdbc.Driver

Username:数据库连接用户名

password:数据库连接密码

例如(上面url或class如有问题,可试一试下面的):

Database URL:  jdbc:mysql://localhost:3306/information_schema?serverTimezone=GMT%2B8

JDBC Driver class:  com.mysql.cj.jdbc.Driver

Username:root

password:xxx

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/127615.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

intel深度相机 D455及D4系列入门教程(逐行代码讲解)

1.介绍 Intel RealSense D435、D455等D4系列: Intel D4系列深度相机是由英特尔(Intel)公司推出的一款深度感知摄像头,专为实现计算机视觉和深度学习应用而设计。这款相机使用了英特尔的深度感知技术,结合了摄像头和红…

vue3+elementPlus el-input的type=“number“时去除右边的上下箭头

改成 代码如下 <script lang"ts" setup> import {ref} from vue const inputBtn ref() </script> <template><el-input type"number" v-model"inputBtn" style"width: 80px;" class"no_number">…

WPS/word 表格跨行如何续表、和表的名称

1&#xff1a;具体操作&#xff1a; 将光标定位在跨页部分的第一行任意位置&#xff0c;按下快捷键ctrlshiftenter&#xff0c;就可以在跨页的表格上方插入空行&#xff08;在空行可以写&#xff0c;表1-3 xxxx&#xff08;续&#xff09;&#xff09; 在空行中输入…

毛玻璃 has 选择器卡片悬停效果

效果展示 页面结构 从上述的效果展示可以看到&#xff0c;页面是由多个卡片组成&#xff0c;并且鼠标悬停在卡片上时&#xff0c;会旋转用户图片并且韩式对应的用户信息框。 CSS3 知识点 :has 属性的运用 实现页面整体结构 <div class"container"><div…

RT-Thread 内存管理(学习二)

内存堆管理应用示例 这是一个内存堆的应用示例&#xff0c;这个程序会创建一个动态的线程&#xff0c;这个线程会动态申请内存并释放&#xff0c;每次申请更大的内存&#xff0c;当申请不到的时候就结束。 #include <rtthread.h>#define THREAD_PRIORITY 25 #defi…

conda安装使用jupyterlab注意事项

文章目录 一、conda安装1.1 conda安装1.2 常见命令1.3 常见问题 二、jupyterlab2.1 jupyterlab安装和卸载2.2 常见错误2.2.1 版本冲突&#xff0c;jupyterlab无法启动2.2.2 插件版本冲突 2.3 常用插件2.3.1 debugger2.3.2 jupyterlab_code_formatter 2.4 jupyter技巧 一、conda…

Docker数据管理

容器中管理数据主要有两种方式&#xff1a; 数据卷&#xff08;Data Volumes&#xff09; 数据卷容器&#xff08;Data Volume Dontainers&#xff09; Docker的数据管理 数据卷 数据卷是一个供容器使用的特殊目录&#xff0c;位于容器中。可将宿主机的目录挂载到数据卷上&…

云服务器CVM_云主机_云计算服务器_弹性云服务器-腾讯云

腾讯云服务器CVM提供安全可靠的弹性计算服务&#xff0c;腾讯云明星级云服务器&#xff0c;弹性计算实时扩展或缩减计算资源&#xff0c;支持包年包月、按量计费和竞价实例计费模式&#xff0c;CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格&#xff0c;提供9个9的数…

微服务学习(十一):安装Git

微服务学习&#xff08;十一&#xff09;&#xff1a;安装Git 1、下载Git 官网下载Git 2、将下载后的资源包上传到服务器 3、解压并安装 tar -zxvf git-2.42.0.tar.gz4、安装依赖 yum install zlib yum install zlib-devel5、执行操作命令 cd /home/git/git-2.42.0 ./co…

Nginx高级 第一部分:扩容

Nginx高级 第一部分&#xff1a;扩容 通过扩容提升整体吞吐量 1.单机垂直扩容&#xff1a;硬件资源增加 云服务资源增加 整机&#xff1a;IBM、浪潮、DELL、HP等 CPU/主板&#xff1a;更新到主流 网卡&#xff1a;10G/40G网卡 磁盘&#xff1a;SAS(SCSI) HDD&#xff08;机械…

使用springboot服务端远程调试? 试试HTTP实现服务监听

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《初阶数据结构》《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 wi…

Linux 部署项目

部署 Linux 部署项目1. 宝塔部署1.1 前端部署1.2 后端部署 2. docker 部署2.1 后端部署2.2 前端部署 3. 跨域问题3.1 Nginx 代理&#xff08;推荐&#xff09;3.2 修改后端服务3.3 添加 web 全局请求拦截器 4. 域名解析DNSPod添加域名 Linux 部署项目 1. 宝塔部署 准备工作&am…