一文1500字手把手教你Jmeter如何压测数据库保姆级教程

Posted 小码哥说测试

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文1500字手把手教你Jmeter如何压测数据库保姆级教程相关的知识,希望对你有一定的参考价值。

不断的给数据库施加压力,验证数据库处理的性能 那么我们要怎么才能在jmeter中对数据库进行压测呢?我们可以在jmeter中添加一个叫jdbc的组件来进行连接操作数据库。

  • 电脑安装下载jmeter并解压OK

  • 下载mysql的驱动并把mysql的jar包(mysql-connector-java-8.0.30.jar)复制粘贴到jmeter的D:\\apache- jmeter-5.4.3\\lib中的lib路径下

  • 启动jmeter, 添加一个JDBC Connection Configuration,连接池配置文件

  • 添加一个线程组,添加驱动jdbc request

1.安装mysql驱动

打开https://dev.mysql.com/downloads/connector/j/地址,选择platform independent,选择zip包进行下载,下载完成后解压zip压缩包

2.放置jar包到lib目录

把解压的压缩包中的mysql-connector-java-8.0.30.jar包放到D:\\apache-jmeter-5.4.3\\lib这个路径下,就是jmeter的lib路径!

3.添加连接数据库的组件

启动jmeter添加 添加一个JDBC Connection Configuration,测试计划->添加->配置元件->JDBC Connection Configuration,用于连接数据库

定义连接数据库连接池的名称

配置项说明
Variable Name for created pool数据库连接池的名称,填写变量名,和JDBC request中的Variable Name进行绑定

连接池参数配置

基本保持默认即可,可根据需要进行修改

配置项说明
Max Number of Connection数据库最大链接数,一般可设置为0,意思是每个线程都使用单独的数据库连接,线程之间数据库连接不共享
Max Wait (ms)在连接池中取回连接最大等待时间
Time Between Eviction Runs(ms)线程可空闲时间如果当前连接池中某个连接在空闲了 time Between Eviction Runs Millis 时间后任然没有使用,则被物理性的关闭掉
Auto Commit自动提交sql语句
Read timeout(ms)等待服务器响应的超时时间
Transaction isolation事务隔离级别,主要有如下几个选项:(对JMX加解密) TRANSACTION_NODE 事务节点 、TRANSACTION_READ_UNCOMMITTED 事务未提交读、TRANSACTION_READ_COMMITTED 事务已提交读 、TRANSACTION_SERIALIZABLE 事务序列化 、DEFAULT 默认、TRANSACTION_REPEATABLE_READ 事务重复读
Preinit Pool立即初始化连接池如果为 False,则第一个 JDBC 请求的响应时间会较长,因为包含了连接池建立的时间

数据库连接池配置

配置项说明
Variable Name for pool declared in JDBC Connection Configuration数据库连接池的名称,和JDBC Connection Configuration的Variable Name for created pool名字保持一致

4.添加线程组

设置好之后可以添加一个线程组,在线程组内添加一个JDBC Request,线程组>取样器>JDBC Request

  1. 把连接配置中的变量名写到JDBC Request中

  2. 填写你需要执行的sql语句

5.运行线程组

运行后可以看到你的sql语句运行的一些结果了

通过查看结果树查看脚本是否运行正常。在左侧导航树中,选择查看结果树,查看请求结果是否符合预期。如果出现请求失败的或者结果返回不符合预期,需要重新调整脚本或者SQL语句。


绵薄之力

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

​这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

手把手教你jmeter压测--适合入门

【后台测试】手把手教你jmeter压测 

我知道我迟早是要踏上了后台测试之路的,只是没想到来的这么突然。新接手了一个项目,在第一版发出后,产品需要做运营活动拉量,因为我担心突然的流量涌入是否会对后台造成压力呢?因此决定做一下压测:

  下面就一步一步的介绍我从0到1的压测过程吧。

  我下载的是 apache-jmeter-2.13,因为这个包下载下来通用linux和windows的,所以我们现在windows下打开它。

  

  直接点击bat,打开jmeter:

  添加一个线程组:

 

  添加完成之后,先设置这两项:

  

 

   然后右击左边的线程组,添加一个http请求

  

  添加完成之后,我们可以看到右边有了可以编辑的地方:

  这里打算压测这样一个url,这个url请求是 http://cm.browser.qq.com/test_xianwu/api/buy 

  也就是拉取App的首页的信息

 

  我们直接用浏览器打开是这样的:

  见下图,我们需要把url分成两部分填写

 

  这个时候点击保存,保存的文件路径自己指定,我保存到了bin目录下,保存完之后,是一个jmx文件。

 

  保存完毕之后呢,我们需要,在压测的过程中,去查看请求的结果,因此需要添加一个“查看结果树”

 

  添加完毕之后的样子:

  这个时候我们点击启动,看看效果吧:

  这个时候我们把线程数加大,先加达到100

 

  加完之后,我去App端看了一眼,然后发现首页悲剧了,一片白屏:

  这时候我们在网站上去看一下,发现果然,返回的子串当中,list的内容为空了,而这个list就是我们首页要展示出的物品:

  既然我们知道了请求返回失败的特征是list为空,那么就增加一个断言,让他直接帮我们筛选出请求失败的样本。

  同样右击,“添加”-“断言”-“响应断言”,添加完成之后,我们添加一个substring:

  这里说一下location是什么鬼。因为在请求成功的情况下,返回的list当中的信息当中有location,所以我们可以简单的认为,当location字段存在的时候,这个请求是成功的。

  这个时候我们再运行一下,看看结果树当中会不会帮我们辨别出来:  

 

  我们可以看到红色就是失败的个数。数量有点多,所以我们需要借助Aggregate Graph

  添加完成之后,我们启动我们的服务,这个时候就能在这里看到一个大概的数据了:

  这样我们就可以不断的去改变线程数,然后去观察失败率和吞吐量,得到一个当前请求的一个最佳的相应数。

  在测试的过程中我发现,如果手动去强制停止的话,最后的几条请求会因为手动停止而抛出异常,因此我们决定让他去请求2w次,2w次结束收自动停止。那么我们就需求在开始的地方设置采集次数:

  这里需要注意线程数和循环次数的乘积等于一个固定值就可以,然后你可以变换两个乘数,最终我选择了线程数分别是10、20、50、80、100、200,得到的结果是:

  最后生成图表,就可以看出来性能的瓶颈,下面是结果:

  

   从图中我们不难看出响应时间延时很大,且错误率非常高,并且最大qps才能打到50出头,所以初步怀疑这是有性能问题的,最终反馈给开发,开发加入了缓存机制,并且增加了机器,经过优化之后,我们再看看数据对比:

  很明显优化后的效果显著,达到了预期的效果。

  这就是我第一次简单压力测试的经过,看完后是不是你也可以做了。

 

 

 

转载出处:http://www.cnblogs.com/by-dream/p/5611555.html 

以上是关于一文1500字手把手教你Jmeter如何压测数据库保姆级教程的主要内容,如果未能解决你的问题,请参考以下文章

后台测试手把手教你jmeter压测

不会压测?没关系,手把手教你用jmeter做压力测试及结果分析

手把手教你如何使用jmeter做性能测试

一文揭秘测试平台中是如何将测试用例一键转化Jmeter压测脚本

手把手教你jmeter+fiddler处理加密 解密 以及断言处理

手把手教会使用Jmeter进行压测,涉及参数提取参数关联CSV参数化