适合程序员的DB性能测试工具 JMeter
背景
1、想要一款既要能压数到mysql,又要能压数到postGre,还要能压数到oracle的自动化工具
2、能够很容易编写insert sql(因为需要指定表和指定字段类型压数据),然后点击运行按钮后,就能直接运行;不要写应用代码,因为我比较懒
3、可以指定测试时间,或者TPS等执行时行为。因为压数有数量级要求
4、sql插入的值,最好能动态生成;
目前选择了JMeter,初步的用起来还比较的可爱和丝滑。使用步骤和遇到的问题如下:
Q1 JMeter能同时测试 Mysql,postGreSql,oracle 数据库吗?
能支持的,JMeter 是用java写的,添加对应的JDBC驱动后,理论上任何数据库都可以进行测试。
这货还能测试常用的HTTP接口,TCP,FTP等,支持的种类还挺多。
在得到肯定回答后,开始了正式动手
Q2 JMeter 如何下载,安装和配置了?
两种下载方式
官网,非常慢:下载地址:https://jmeter.apache.org/
百度网盘下载地址: https://pan.baidu.com/s/1Ymoqk9besbSGSVha7OhW3Q 提取码:altb
和官网源文件 SHA512对比过,没有更改,请放十二个心使用。
安装
由于下载的是zip包,解压到本地目录即可。入下图:
配置
系统环境变量里增加
JMETER_HOME 解压包目录
Path %JMETER_HOME%\bin
ClassPath %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib/logkit-2.0.jar;
启动
JMeter由于是java开发,运行依赖jvm。具体java安装配置,不详讲
进入bin目录。点击jmeter.bat。
启动后大概长这样
Q3 JMeter 如何配置 mysql 连接信息?
把Mysql 驱动加入到测试计划里,否则执行的时候会找不到对应驱动。在配置页面—>browse里加入mysql驱动位置
新建一个ThreadGroup,默认配置就好。
(见名知意,编程术语里叫线程组,测试术语里叫做用户数,可以指定测试的时候,模拟多少个用户,其实是多少个线程)
在ThreadGroup下新建JDBC链接信息。
路径Add===>Config Element===>JDBC Connection Configuration
配置JDBC链接信息。比如数据库url,用户名,密码,驱动名字等。入下图
Q4 JMeter 如何配置测试的insert sql
在新建的ThreadGroup下新建JDBC Request。路径 Add—>Sampler---->JDBC Request
简单的三步配置,即可执行sql:
- 指定数据源
- 选择Update Statement
- 填写Sql
一般到这里,就可以调试性的执行了;如果要查看sql执行结果请看Q9;如果执行错误,需要排查问题请看Q9和Q8
Q5 Jmeter 在测试 insert 语句时,能动态生成插入字段的值吗?
可以的。目前有三种方式支持动态插入值。
第一种:用户变量定义
定义用户变量: 测试计划里,用户定义变量设置
在Sql里,用${变量名}的方式进行使用;
INSERT INTO `orders`(`order_id`,`sku_id`, `pay_type`, `pay_amount`, `pay_time`, `remark`) VALUES (${order_id},1, 1, 12.03, '2023-08-14 14:34:23', '第一个测试');
第二种:从excel文件中指定,不详述;比第一种值的来源更灵活
第三种:使用JmeterBean shell。非常的灵活,对写java代码的同学无门槛
用法:新建BeanShell PreProcessor :路径add===》Pre Processor===>eanShell PreProcessor
BeanShell 语法,基本上是java语法。
在sql里使用 ${order_id_shell} 对变量进行引用。这个脚本里,我用时间戳作为订单ID;注意这个值只支持String
Q6 jmeter 里如何设置,测试总次数或者测试持续时间
想要压测一定的数据量到库里,不可能只执行一次就完了吧。可以设置sql执行总次数或者持续执行sql的时间来解决。
注意 测试总次数和测试持续时间,两者选其一;
测试 总次数=图里的线程数*循环次数
测试持续时间,以秒为单位
Q7 数据库里的自增,在JMeter里能实现吗?
可以实现的,JMeter里有计数器,再加上变量引用,能解决自增的问题。并且还能保证在多个线程并发情况下,保证自增ID的唯一。
新建Counter:路径 在Add=config Element=>Counter里
填写;初始值,增量值;申明外部使用的变量名即可;使用也是通过${order_id_auto_incr}方式;这个变量在Bean shell脚本里也可以使用;大大增强了编码的灵活性
Q8 JMeter里能看到执行的错误日志吗?
如果不小心编写的脚本有问题,执行的时候,报错了,需要去排查,可以看JMeter本身的执行日志,在安装目录下的\bin\jmeter.log里
Q9 JMeter 能看到SQL执行结果吗?
想看看SQL执行结果,或者类似的HTTP执行返回后的结果 可在View Results Tree里查看。路径 Add===>Listener===>View Results Tree
之前没配置mysql 驱动jar包,返回报错了
Q10 JMeter如何查看测试报告
预测试已通过,正式压测后,想看看测试接口执行总次数(Samples),TPS(Throught),平均相应时间(Average),最大响应时间(Max),最小响应时间(Min),接口正确率(Std.Dev),错误率(Error)等指标,需要添加 Summary Report。路径 Add===>Listener======Summary Report
总结
天天写CRUD接口,到底写的这些接口性能咋样了?敢拿出来遛遛吗?JMeter可以让我们用数据来说话;我写的接口性能非常好,延迟小,吞吐量大。每个程序员都值得试试
相关文章:
适合程序员的DB性能测试工具 JMeter
背景 1、想要一款既要能压数到mysql,又要能压数到postGre,还要能压数到oracle的自动化工具 2、能够很容易编写insert sql(因为需要指定表和指定字段类型压数据),然后点击运行按钮后,就能直接运行ÿ…...
java实现人物关系抽取
java实现人物关系抽取 人物关系抽取是实体关系抽取的一种情况。实际上是两个过程:命名实体识别和关系抽取。 Java人物关系抽取是指从文本中提取出与Java相关的人物之间的关系。这个过程可以通过自然语言处理和文本分析的方法来实现。具体的步骤包括: 文本…...
Docker网络与资源控制
一、Docker 网络实现原理 Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿…...
图片怎么转换成pdf格式?可以试试这样转换
图片怎么转换成pdf格式?图片转换成PDF格式是一个常见的需求,无论是为了方便存储还是为了分享文件,将图片转换成PDF格式都是一个不错的选择。有许多软件和在线工具可以帮助你完成这个任务,下面就给大家介绍一款转换工具。 【迅捷PD…...
[国产MCU]-W801开发实例-GPIO输入与中断
GPIO输入与中断 文章目录 GPIO输入与中断1、硬件准备2、软件准备3、驱动实现4、驱动测试W801的GPIO支持软件配置中断,中断触发方式包含:上升沿触发、下降沿触发、高电平触发、低电平触发。本文在前面[ 国产MCU]-W801开发实例-按键与GPIO输入的基础上实现GPIO中断配置。 1、硬…...
Layui列表表头去掉复选框改为选择
效果: 代码: // 表头复选框去掉改为选择 $(".layui-table th[data-field"0"] .layui-table-cell").html("<span>选择</span>");...
Flutter实战·第二版-第三章 基础组件笔记
第三章:基础组件 3.1文本及样式 3.1.1 Text Text("Hello world",textAlign: TextAlign.left, );Text("Hello world! Im Jack. "*4,maxLines: 1,overflow: TextOverflow.ellipsis, );Text("Hello world",textScaleFactor: 1.5, );3.1…...
一文彻底理解时间复杂度和空间复杂度(附实例)
目录 1 PNP?2 时间复杂度2.1 常数阶复杂度2.2 对数阶复杂度2.3 线性阶复杂度2.4 平方阶复杂度2.5 指数阶复杂度2.6 总结 3 空间复杂度 1 PNP? P类问题(Polynomial)指在多项式时间内能求解的问题;NP类问题(Non-Deterministic Polynomial)指在…...
Mysql的索引详解
零. 索引类型概述 1. 实际开发中使用的索引种类 主键索引唯一索引普通索引联合索引全文索引空间索引 2. 索引的格式类型 BTree类型Hash类型FullText类型(全文索引)RTree类型(空间索引) MySQL 的索引方法,主要包括 BTREE 和 HASH。 顾名思…...
.netcore windows app启动webserver
创建controller: using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.Json.Serialization; using System.Threading.Tasks;namespace MyWorker.…...
泰迪大数据挖掘建模平台功能特色介绍
大数据挖掘建模平台面相高校、企业级别用户快速进行数据处理的建模工具。 大数据挖掘建模平台介绍 平台底层算法基于R语言、Python、Spark等引擎,使用JAVA语言开发,采用 B/S 结构,用户无需下载客户端,可直接通过浏览器进行…...
【问题】java序列化,什么时候使用
文章目录 是什么为什么如何做流操作 注事事项 是什么 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1)把对象的字节序列永久地保存到硬盘上,通常存放在一…...
【最新可用】VMware中ubuntu与主机window之间使用共享文件夹传输大文件
一、VMware设置共享文件夹 (1)虚拟机关机情况下,创建一个共享文件夹 (2)ubuntu中挂载共享文件夹 1、如果之前已经挂载 hgfs,先取消挂载 sudo umount /mnt/hgfs2、重新使用以下命令挂载 sudo /usr/bin/vmh…...
A. Two Semiknights Meet
题目描述 可知走法为中国象棋中的象的走法 解题思路 利用结构体来存储两个 K K K的位置 x , y x,y x,y,因为两个 K K K同时走,所以会出现两种情况 相向而行,两者距离减少 相反而行,两者距离不变 我们完全可以不考虑格子是好…...
〔011〕Stable Diffusion 之 解决绘制多人或面部很小的人物时面部崩坏问题 篇
✨ 目录 🎈 脸部崩坏🎈 下载脸部修复插件🎈 启用脸部修复插件🎈 插件生成效果🎈 插件功能详解🎈 脸部崩坏 相信很多人在画图时候,特别是画 有多个人物 图片或者 人物在图片中很小 的时候,都会很容易出现面部崩坏的问题这是由于神经网络无法完全捕捉人脸的微妙细节…...
在ubuntu+cpolar+rabbitMQ环境下,实现mq服务端远程访问
文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…...
Vue elementui 实现表格selection的默认勾选,翻页记录勾选状态
需求:当弹出一个列表页数据,对其进行筛选选择。 列表更新,填充已选数据 主要使用toggleRowSelection 代码如下: <el-table v-loading"loading" :data"drugList" selection-change"handleSelection…...
CloudCompare——统计滤波
目录 1.统计滤波2.软件实现3.完整操作4.算法源码5.相关代码 本文由CSDN点云侠原创,CloudCompare——统计滤波,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 1.统计滤波 算法原理见:PCL 统计滤波器…...
nodejs+vue古诗词在线测试管理系统
一开始,本文就对系统内谈到的基本知识,从整体上进行了描述,并在此基础上进行了系统分析。为了能够使本系统较好、较为完善的被设计实现出来,就必须先进行分析调查。基于之前相关的基础,在功能上,对新系统进…...
174-地下城游戏
题目 恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻…...
Linux定时任务crontab
常用命令 crontab -e 进入定时脚本,编辑后保存即立即生效 crontab -l 查看用户定时脚本 tail -f /var/log/cron 查看执行日志 service crond status 查看定时器运行状态 service crond restart 重启定时器 定时任务不执行原因 定时任务设置的格式正确,手…...
golang字符串切片去重
函数的功能是从输入的字符串切片中去除重复的元素,并返回去重后的结果。具体的实现逻辑如下: 创建一个空的结果切片result,用于存储去重后的字符串。创建一个临时的maptempMap,用于存放不重复的字符串。map的键是字符串࿰…...
git如何检查和修改忽略文件和忽略规则
查询忽略规则 使用命令行:git status --ignored,进行查询, 例: $ git status --ignored On branch develop Your branch is up to date with origin/develop.Ignored files:(use "git add -f <file>..." to inc…...
Android AppCompatActivity标题栏操作
使用 AndroidStudio 新建的工程默认用 AppCompatActivity ,是带标题栏的。 记录下 修改标题栏名称 和 隐藏标题栏 的方法。 修改标题栏名称 Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R…...
解决conda activate报错
解决方法 source ~/anaconda3/bin/activate或 source ~/miniconda3/bin/activate然后就可以使用 conda activate xxx环境了 问题解析 请参考github:https://github.com/conda/conda/issues/7980...
FreeMarker--表达式和运算符的用法(全面/有示例)
原文网址:FreeMarker--表达式和运算符的用法(全面/有示例)_IT利刃出鞘的博客-CSDN博客 简介 本文介绍FreeMarker的表达式和运算符的用法。 表达式是FreeMarker的核心功能。表达式放置在插值语法(${...})之中时,表明需要输出表达…...
设计模式 -- 策略模式(传统面向对象与JavaScript 的对比实现)
设计模式 – 策略模式(传统面向对象与JavaScript 的对比实现) 文章目录 设计模式 -- 策略模式(传统面向对象与JavaScript 的对比实现)使用策略模式计算年终奖初级实现缺点 使用组合函数重构代码缺点 使用策略模式重构代码传统的面…...
非常详细的 Ceph 介绍、原理、架构
1. Ceph架构简介及使用场景介绍 1.1 Ceph简介 Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。 Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过…...
js 的正则表达式(二)
1.正则表达式分类: 正则表达式分为普通字符和元字符。 普通字符: 仅能够描述它们本身,这些字符称作普通字符,例如所有的字母和数字。也就是说普通字符只能够匹配字符串中与它们相同的字符。 元字符: 是一些具有特殊含…...
星际争霸之小霸王之小蜜蜂(四)--事件监听-让小蜜蜂动起来
目录 前言 一、监听按键并作出判断 二、持续移动 三、左右移动 总结: 前言 今天开始正式操控我们的小蜜蜂了,之前学java的时候是有一个函数监听鼠标和键盘的操作,我们通过传过来不同的值进行判断,现在来看看python是否一样的实现…...
网站做京东联盟/广告投放策略
本文转自:http://www.cnblogs.com/miku/archive/2012/09/27/2706276.html 1. 映射路由 大型MVC项目为了扩展性,可维护性不能像一般项目在Global中RegisterRoutes的方法里面映射路由。 这里学习一下Nop是如何做的。 Global.cs . 通过IOC容器取得IRoutePu…...
http wordpress.org/上海网站seo诊断
跳转页面跳到不同的Tab点击整行进入详情页面tab点击兑换记录进入tab兑换记录阻止冒泡click.stop"detailGift()"点击整行进入详情页面tab <el-table:data"tableData"ref"tableDatas"class"view_table"style"width: 100%"…...
做游戏ppt下载网站有哪些内容/直销的八大课程
绑定两台路由器之间的多条E1链路的方法有如下几种1.硬件IMUX 2-82.ATM IMA 2-323.Multilink ppp 2-84.Load balancing 2-6其中1、2为硬件解决方式,3、4为软件解决方式 PPP multilink配置方法:interface Mu…...
集团网站建设案例/推广平台有哪些渠道
今天一起安装了4块1080的卡。也算有一些坑吧,记录一下。 1)1080显卡,驱动型号,tensorflow,cuda, cudnn 版本一定要一致。我的清单如下: ############################################# nvidia显卡…...
帮他人做视频网站违法吗/网站外链的优化方法
服务器环境 Liunx AS4 PHP5 Mysql5 Apache 2实用TOP 命令查询系统性能的时候发现CPU经常到达100%开始以为是DDOS攻击……加装了防火墙(没起作用)又开始从liunx系统查找是不是系统问题,(也没起作用)偶尔从网络上发现一篇文章,有人也类似遇到了这样的问题&…...
网页设计论文800字/seo排名优化排行
Python实战社群Java实战社群长按识别下方二维码,按需求添加扫码关注添加客服进Python社群▲扫码关注添加客服进Java社群▲作者:keenleopard, 学生时代搞量子计算,现在在字节跳动平台架构部搞 iOS 架构Sessions: https://developer.apple.com/…...