如何用JMeter对MySQL数据库进行压测

在Jmeter中建立一个JDBC Request 测试主要分两步。

jmeter压力测试怎么测_jmeter压力测试appjmeter压力测试怎么测_jmeter压力测试app


jmeter压力测试怎么测_jmeter压力测试app


(1)设置JDBC连接池(在JDBC Connection )

(2)添加JDBC Request

其他步骤就是设置参数化、断言、结果。

步:添加 JDBC Connection

需要设置jdbc线程池变量的名称,这里设置为jdbcConfig,这个变量在JDBC Request中要使用的;还有要设置Database URL,格式为:jdbc:mysql://localhost:3306/chen?=UTC&=utf-8,注意:?后面的=UTC&=utf-8不能缺少,否则会报时区错误。

第二部:设置JDBC Request

Jmeter 一个简单的压力测试报告

1、压力测试概要

测试环境:apache-tomcat-8.5.16, Ja(TM) SE Runtime Environment (build 1.8.0_131-b11)

apache-jmeter-5.0

Tomcat jvm启动参数

JAVA_OPTS="-server -XX:MaxNewSize=2048m –XX:NewSize=2048m –Xms8192m –Xmx8192m"

Tomcat 参数:

< Connector port =" 8080 "

enableLookups =" false "

disableUploadTimeout =" true "

acceptCount =" 2000 "

maxSpareThreads =" 1000 "

minSpareThreads =" 300 "

maxThreads =" 2000 "

redirectPort =" 8443 " compressableMimeType =" text/html,text/xml,text/jascript,text/css,text/plain,application/json " compression =" on " connectionTimeout =" 20000 " protocol =" HTTP/1.1 "/> />

Tomcat context 配置:

driverClassName="com.mysql.jdbc.Driver" filters="stat"

initialSize="10" maxActive="200"

maxPoolPreparedStatementPerConnectionSize="20" maxWait="60000"

minEvictableIdleTimeMillis="300000" minIdle="10"

testOnBorrow="false" testOnReturn="false" testWhileIdle="true"

timeBetweenEvictionRunsMillis="60000" type="jax.sql.DataSource"

" timeBetweenEvictionRunsMillis =" 60000 " testWhileIdle =" true " testOnReturn =" false " testOnBorrow =" false " poolPreparedStatements =" true " name =" jdbc/xxxxApp " minIdle =" 50 " minEvictableIdleTimeMillis =" 300000 " maxWaitMillis =" 60000 " maxPoolPreparedStatementPerConnectionSize =" 20 " maxTotal =" 400 " initialSize =" 50 " filters =" stat " driverClassName =" com.mysql.jdbc.Driver " connectionProperties =" druid.stat.slowSqlMillis=3000 " auth =" Container "/

数据库信息:

测试时间:xxxx/xx/xx

服务端配置:

客户端配置:

测试工具:JMeter

2、测试说明

(1)名词定义(时间单位ms)

Sample:本次测试场景共运行多少线程;

Average:平均响应时间;

Median:统计意义上的响应时间中值;

90% line:所有线程中90%的线程响应时间都小于xx的值;

Min:响应小时间;

Max:响应时间;

Error:出错率;

Throughput - 吞吐量以“requests/second、requests /minute、 requests /hour”来衡量。 时间单位已经被选取为second,所以,显示速率至少是1.0,即每秒1个请求。 当吞吐量被保存到CVS文件时,采用的是requests/second,所以30.0 requests/second 在CVS中被保存为0.5

Kb/sec - 以Kilobytes/seond来衡量的吞吐量

(2)测试过程说明:

测试以下页面:

/xxx/bbbb/cccc

测试数据量(模拟用户量):

1000个线程

3000个线程:

5000个线程:

7000个线程:

PROD 环境

压测工具笔记(二)之JMeter

@TOC

JMeter是Apache下的一个项目,一个功能强大压力测试工具

JMeter是一个纯ja写的开源软件,用来测试可变行为和性能。起初它设计的目的是测试Web应用,但是现在已经扩展到其它的测试

JMeter既提供了GUI界面方便用户使用也提供了命令行的方式让用户作

JMeter可以支持测试的应用/服务/协议有很多,目前主要介绍HTTP请求

接口测试的 主体流程 :创建测试,中创建线程组,线程组中创建线程HTTP请求,进行测试

关闭前需要保存我们设置好的测试

问题: 保存测试脚本时只保存了Testplan下的部分,导致生成的测试脚本只是“testplan”下面的某些元素,,不包括需要运行测试所需的“TestPlan”元素。

解决方案: 在保存测试脚本时,保存整个测试,以下两种方式

1.在文件菜单中单击“保存测试”或“保存测试为”选项;

2.鼠标选中测试,直接点击工具栏上的“保存测试”按钮

使用下来的感官是:工具功能强大,但是GUI做的是真的low,连自适应都没有。

相对来讲Windows风格的界面是友好的一个了 选项-->-外观->Windows

参考:

Jmeter 压力测试并输出HTML报告

在进行性能测试执行之前,需要进行场景的设计:

以什么方式启动,如何持续进行,直至测试结束

三部曲:启动---持续进行---结束

PS:一般情况下,建议限制Jmeter的的线程数在300及以内,这样能更好的发挥出jmeter的性能

测试步骤:

测试---线程组--HTTP请求------运行脚本---查看报告

PS:默认情况下,JMeter运行需要占用1 GB的内存,这可能还不够,取决于你的测试和需要运行的线程数

一个测试描述了一系列Jmeter运行时需要执行的步骤,可以包含一个或者多个线程组,逻辑,取样发生控制,,定时器,断言和配置元件。

启动JMeter,会出现一个空的测试,此次练习通过手写脚本来实现

(不熟悉作的,也可以通过模板的形式创建,在菜单栏文件--Templates,下拉列表中选择Recording,点击Create,一个完整的Test Plan就生成了,当然我们可以删除不需要的内容)

作用:模拟用户个数、发送请求的频率及次数

PS:设置合理的线程数对能否达到测试目标有着决定性的影响,另外,设置合理的循环次数也很重要

此处添加3个HTTP请求

1、添加响应断言 :设置响应码为200

2、查看结果树,验证请求

调试时线程数和循环次数设为1就可以了,记得调试好之后再改回去

3、禁用查看结果树,命令行执行脚本

我们在启动Jmeter时就会看到命令行的提示信息,进行负载测试时请不要使用GUI模式,也就是用命令行模式运行 JMeter 测试脚本,这样可以大大缩减所需要的系统资源

备注:GUI 即图形用户界面模式,只应用于创建测试脚本、调试脚本

图中也给出了命令格式: jmeter -n -t [jmx file] -l [result file] -e -o [Path to output folder] ,JMeter 默认去当前目录寻找脚本文件,并把日志记录在当前目录,当然也可以使用路径来执行

参数说明:

(1)直接生成HTML报告

PS:输出文件(-l后的文件)必须是不存在的,report文件夹为空文件夹或者不存在(-o后面的),不然无法生存报告

启动CMD窗口,输入以下命令:

jmeter -n -t C:UserszhangXXXDesktopbaidu.jmx -l C:UserszhangXXXDesktophtml.csv -e -o C:UserszhangXXXDesktopbaidu-reports

(2)使用之前的测试结果,生成测试报告

启动CMD窗口,先生成测试结果,再生成报告,输入以下命令:

PS:-g 指定已存在的测试结果文件

以上两种方法,其实终都依赖生成的测试报告。双击报告文件夹中的index.html就可以查看报告

Dashboard:

Test and Report rmations:指的是测试和报告信息

APDEX(Application Performance Index):应用程序性能满意度的标准,范围在0-1之间,1表示达到所有用户均满意,越接近1满意度越高

Requests Summary:请求的通过率(OK)与失败率(KO),百分比显示

Statistics:数据分析,基本将Summary Report和Aggrerate Report的结果合并

Errors:错误情况,依据不同的错误类型,将所有错误结果展示

Charts: 用图表的形式展示测试数据,让测试报告更加直观

主要有如下特点:

(1)将测试过程中经常使用的数据,用图表的形式展示,让测试结果更加直观

(2)每个图表数据,有两种展示形式

(3)支持请求样例过滤显示

(4)支持导出PNG格式

Over Time Charts:

Throughput Charts:

Response Times Charts:

4、添加所需,导入日志文件即可查看

在性能测试过程中,我们往往需要将测试结果保存在一个文件当中,也可以为日后的性能测试报告提供更多的素材

在Jmeter中,结果都存放在 .jtl 文件中,格式有很多种,可以根据需要进行更爱,选择某个,在 configure页面 进行相应配置,让我们来查看下保存后的文件有哪些内容:

接下来添加一个聚合报告,然后导入日志文件,查看结果,还可以添加其他的,作方法一样

PS:如果测试中增加了(生成概要结果),在执行命令时就可以看到每个线程的执行情况

PS:设置好线程数、循环次数、点、事务、断言、关联等等后即可执行压力测试

原理和LR的agent不多,因为jmeter由Ja开发,耗内存、cpu,所以需要采用分布式

步骤:

1、关闭防火墙

2、在所要运行jmeter并作为负载生成器的机器上安装jmeter(确保在所有系统中使用了相同版本号的Jmeter和jdk)

PS:目标需要在相同网段,确保Jmeter可以访问目标

3、确定其中一台机器作为主controller,其他的机器作为agent,然后运行所有agent机器上的jmeter-server文件

4、在controller机器的jmeter中bin目录下,找到jmeter.properties文件,添加IP,修改localhost为压力机IP

5、启动conttoller机子上的jmeter应用,选择菜单【运行】---远程启动来分别启动agent,也可以直接选择【远程全部启动】来将所有个agent启动

在性能测试过程中,我们通常需要将测试结果保存在一个文件当中,既可以保存测试结果,也可以为日后的性能测试报告提供更多的素材

Jmeter中,结果都存放在.jtl文件,一般以csv文件格式记录,只需要选择某个,点击页面的configure按钮,建议勾选如下项:Se Field Name,Se Assertion Failure Message

技术点:HTTP相关设置+参数化+断言+关联+简单+查看结果树

关联:通过Json控件或正则表达式获取

(1)线程组建议替换为jp@gc - Stepping Thread Group,功能比线程组多很多

(2)可以加事务

(3)查看结果树替换为聚合报告或类似的报告,如果还是想看查看结果树记得勾选仅日志错误(查看结果树打印的日志比较多,会影响性能)

(4)造数据

总结:

一个子系统建议放在同一个 “测试”中,流程测试可以通过“线程组”来区分,这样也便于设定不同的测试数据个数。

比较的接口,可以统一放在一个线程组内,顺序完成测试。

流程性接口的测试:如果要测试的接口可以组成一个流程,只需要顺序添加多个“HTTP 请求”的Sampler,各请求之间可以提取需要在上下文传递的数据作为参数,以保证流程中数据的一致性