【性能测试】jmeter数据库性能测试

这篇具有很好参考价值的文章主要介绍了【性能测试】jmeter数据库性能测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

本文是记录使用jmeter对数据库进行性能测试,以及在测试过程中常使用的方法。


一、工具安装

  • 上传解压包,解压,配置环境变量
tar -xvf apache-jmeter-5.1.1.tar

vim /etc/profile
exprot JMETER_HOME=/home/apache-jmeter-5.1.1
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH

source /etc/profile
  • 检查安装结果
jmeter -v

说明:
windows为免安装,直接执行bin目录下jmeter.bat可执行文件

二、数据库压测

1.测试前准备

  • 将被测数据库JDBC对应的jar包,拷贝至jmeter工具lib目录下

【性能测试】jmeter数据库性能测试

  • 数据库对访问client开启免密访问
    以PG数据库或kingbase为例,修改data目录下pg_hba.conf或sys_hba.conf,将认证方式改为trust
    【性能测试】jmeter数据库性能测试

2.jmeter脚本配置

2.1 JDBC配置

测试计划 -> 添加 -> 配置元件 -> JDBC Connection Configuration
【性能测试】jmeter数据库性能测试
【性能测试】jmeter数据库性能测试
参数说明:

参数 说明 备注
Variable Name Bound to pool 连接池名称 线程组中引用连接池需一致
Max Number of Connections 连接池最大连接数
Auto Commit 事务是否自动提交 默认:true
Transaction Isolation JDBC事务控制选项 DEFAULT:TRANSACTION_READ_COMMITTED禁止脏读,但允许可不重复读和幻读

脏读:一个事务读取了另外一个事务未提交的数据
不可重复读:一个事务再次读取之前的数据时,这个数据已经被另一个事务修改
幻读:一个事务重新执行一个查询,返回的记录包含了其它事务提交的新记录

2.2 添加线程组

测试计划 -> 添加 -> 线程 -> 线程组
【性能测试】jmeter数据库性能测试

  • 添加“计数器”
    【性能测试】jmeter数据库性能测试

  • 添加“取样器”
    创建5000张表

drop table if exists testtable${num};
create table testtable${num} (t1 int,t2 varchar(16));
insert into testtable${num} values(${num},'${__RandomString(16,azxsdcvfgbhnmjkliuyttwq1234567,)}');
select * from testtable${__Random(1,5000,n)};

【性能测试】jmeter数据库性能测试
参数说明:

名称 说明
Select Statement 执行查询语句
Update Statement 执行插入与修改语句
Callable Statement 调用存储过程,可以有入参和站位符
Prepared Select Statement 预编译查询语句,绑定变量,同样的sql只会被编译一次
Prepared Update Statement 预编译更新语句

2.3 添加结果树和聚合报告

  • 察看结果树
    线程组 -> 添加 -> 监听器 ->察看结果树
    【性能测试】jmeter数据库性能测试
    【性能测试】jmeter数据库性能测试

  • 聚合报告
    线程组 -> 添加 -> 监听器 ->聚合报告
    【性能测试】jmeter数据库性能测试

  • TPS
    线程组 -> 添加 -> 监听器 ->jp@Transactions per Second
    【性能测试】jmeter数据库性能测试

  • 响应时间
    主要观察压测或性能测试过程,接口请求是否平稳,是否出现长时间等待
    线程组 -> 添加 -> 监听器 ->jp@Response Times Over Time
    【性能测试】jmeter数据库性能测试

说明:
“TPS”和“响应时间”监控,需要从插件管理器添加(jmeter-plugins-manager-1.8jar),将jar包放在jmeter工具lib/ext目录下,重启jmeter可查询到

选项 -> Plugins Manager -> Available Plugins ->(jpgc-Standard Set) - Apply Changes and Restart Jmeter
【性能测试】jmeter数据库性能测试

3.执行测试脚本

性能测试和压力测试尽量使用非GUI模式调用,因为jmeter本身java程序会占用较多内存,在高并发场景应用端会成为瓶颈。在非GUI调用的jmeter结果可以导入工具进行解析,统计更加清晰。

jmter -n -t perf_test.jmx -l jmeter_result/select_500threads_500loop.jtl 

参数说明:
-n:非GUI模式调用
-t:指定配置文件地址及名称(后缀.jmx)
-l:指定日志输出位置(后缀.jtl)

4.常用功能

4.1 函数助手

Tools -> 函数助手 -> 选择一个功能

  1. __Random
    随机函数返回位于给定最小值和最大值之间的随机数,适用于int numericl类型
    【性能测试】jmeter数据库性能测试
  2. __RandomDate
    返回一个位于给定开始日期和结束日期值之间的随机日期
    【性能测试】jmeter数据库性能测试
  3. __CSVRead
    将文本内容作为jmeter引用内容:
    线程组 -> 添加 -> 配置元件 -> CSV数据文件设置
    【性能测试】jmeter数据库性能测试
    【性能测试】jmeter数据库性能测试
    说明:
    纯文本文件需要在文件头尾加引号,否则解析结果会异常
    【性能测试】jmeter数据库性能测试

4.2 用户自定义变量

【性能测试】jmeter数据库性能测试

名称
RandomString_8 ${__RandomString(8,qwertyuiopasdfghjklzxcvbnm,)}
RandomNumber_16 ${__Random(1000000000000000,9999999999999999,)}
RandomDateTime ${__RandomDateTime(,2020-01-01,2022-01-01,)}

4.3 JVM修改内存

异常报错:

ERROR o.a.j.JMETER:Uncaught exception:
java.lang.OutOfMemoryError: Java heap space
  • windows修改bin目录下jmeter.bat
    【性能测试】jmeter数据库性能测试
  • linux修改bin目录下jmeter文件
    修改后可通过jconsole确认VM参数:
    java 监视和管理控制台 -> JConsole新建连接 ->ApacheJmeter.jar ->VM概要 ->VM参数

总结

在使用jmeter对数据库进行性能或压力测试时,场景较为复杂多样,需要根据业务模型对jmeter脚本进行调整。主要涉及并发数、压测时间、表字段、表结构,以及数据库本身性能相关参数,有时高并发下会出现死锁,但不一定是有死锁就是数据出问题,也可能是数据库自身的保护机制。
总之使用jmeter对数据库进行压力测试较为方便,且比较同行,针对各种性能场景以后再做总结输出。文章来源地址https://www.toymoban.com/news/detail-400757.html

到了这里,关于【性能测试】jmeter数据库性能测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用JMeter创建数据库测试

    好吧!我一直觉得我不聪明,所以,我用最详细,最明了的方式来书写这个文章。我相信,我能明白的,你们一定能明白。 我的环境:MySQL:mysql-essential-5.1.51-win32 jdbc驱动:我已经上传到csdn上一个:http://download.csdn.net/source/3451945 JMeter:jmeter-2.4  任意版本都行。 1.首先我们要

    2024年02月12日
    浏览(31)
  • Jmeter(七) - 从入门到精通 - 建立数据库测试计划实战<MySQL数据库>(详解教程)

    1.简介   在实际工作中,我们经常会听到数据库的性能和稳定性等等,这些有时候也需要测试工程师去评估和测试,上一篇文章主要介绍了jmeter连接和创建数据库测试计划的过程,在文中通过示例和代码非常详细地介绍给大家,希望对各位小伙伴和童鞋们的学习或者工作具有一

    2024年02月13日
    浏览(46)
  • Jmeter(六) - 从入门到精通 - 建立数据库测试计划(详解教程)

    1.简介   在实际工作中,我们经常会听到数据库的性能和稳定性等等,这些有时候也需要测试工程师去评估和测试,因此这篇文章主要介绍了jmeter连接和创建数据库测试计划的过程,在文中通过示例和代码非常详细地介绍给大家,希望对各位小伙伴和童鞋们的学习或者工作具有

    2024年02月13日
    浏览(62)
  • 测试数据库性能的工具知多少

    有许多测试数据库性能的工具,以下是一些常用的工具: sysbench : 这是一个跨平台的基准测试工具,可以测试多种系统资源,包括CPU,内存,IO,和并发性。对于数据库测试,sysbench可以用来测试MySQL的性能。 LoadRunner : 这是一个商业性能测试工具,可以模拟数千个用户并发负

    2024年02月11日
    浏览(30)
  • 利用jmeter java sample端口转发实现对远程数据库的压力测试

    目录 1 需求背景 2 工具/包 2.1 Apache-jmeter 2.2 eclipse 2.3 Com.jcraft.jsch 3 插件开发 3.1 新建工程 3.2 配置buildpath 3.3 Constants类 3.4 openSSH类 3.5 closeSSH类 4 连接测试 4.1 Jar包导出  4.2 java sample  4.3 sql sample     对数据库进行压力测试时,需要模拟同一时间大量的sql请求发送,借助于jmete

    2024年02月10日
    浏览(43)
  • 性能测试之Mysql数据库调优

    性能调优前提:无监控不调优,对于mysql性能的监控前几天有文章提到过,有兴趣的朋友可以去看一下 1、我们在监控图表中关注的性能指标大概有这么几个:CPU、内存、连接数、io读写时间、io操作时间、慢查询、系统平均负载以及memoryOver 2、介绍下Grafana模板中各性能指标的

    2024年02月04日
    浏览(42)
  • YCSB对MongoDB数据库性能测试

    一、安装部署 1.1前置条件 Install Java and Maven Go to http://www.oracle.com/technetwork/java/javase/downloads/index.html 并获取 url 以将 rpm 下载到服务器。例如: w get http://download.oracle.com/otn-pub/java/jdk/7u40-b43/jdk-7u40-linux-x64.rpm?AuthParam=11232426132 -o jdk-7u40-linux-x64.rpm rpm -Uvh jdk-7u40-linux-x64.rpm 或者通过

    2024年02月06日
    浏览(39)
  • 数据库性能测试实践:慢查询统计分析

    查看是否开启慢查询 mysql show variables like \\\'%slow%’; 如图所示: 系统变量log_slow_admin_statements 表示是否将慢管理语句例如ANALYZE TABLE和ALTER TABLE等记入慢查询日志 启用log_slow_extra系统变量 (从MySQL 8.0.14开始提供)将导致服务器将几个额外字段写入日志 Log_slow_slave_statements 从库默认

    2024年02月07日
    浏览(40)
  • 功能测试也可以发现数据库相关的性能问题

    很多同学认为功能测试和性能测试是严格分开的,功能测试人员无法发现性能问题。其实不是这样的,功能测试人员在验证功能时也可以发现性能问题;一些功能反而在功能测试环境不好验证,需要在性能环境上测试。     今天咱们就说一下测试涉及数据库操作的功能时如何

    2024年02月14日
    浏览(35)
  • 记录一次时序数据库的实战测试

    在某次Edusrc挖掘过程中,我发现了一个404状态码的ip站如下图所示: 我的直觉告诉我,这个站不太简单。于是我信息搜集了一下端口为8086的常见服务: 当我看到这个 InfluxDB 的时候,我灵感突然来了,虽然我当时不知道是什么,我尝试着进行抓包看看返回包,但是多尝试一下

    2024年02月08日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包