JMeter的使用

一、安装JMeter

1、进入官网下载安装包(安装包已下载):http://jmeter.apache.org/download_jmeter.cgi

2、解压安装包

二、使用

1、在解压后的文件中找到:apache-jmeter-5.1.1/apache-jmeter-5.1.1/bin目录下的jmeter.bat

2、双击启动

3、进入主页面,一开始是英文,可以切换到中文模式

4、文件---打开---选择安装文件bin目录下的Oracle代理.jmx

 

 

5、添加jar包,点击预览,选择安装文件bin目录下的mysql-connector-java-5.1.37.jar

 

 

6、修改数据库连接

 

7、输入查询语句:

 

8、启动任务并查看结果

 

 

 

三、详细配置解释

1、在解压后的文件中找到:apache-jmeter-5.1.1/apache-jmeter-5.1.1/bin目录下的jmeter.bat

2、双击启动

3、进入主页面,一开始是英文,可以切换到中文模式

4、添加数据库的驱动包
1)将数据库的驱动包,复制到apache-jmeter-5.1.1/apache-jmeter-5.1.1/bin目录下


2)在JMeter中的TestPlan中添加驱动包

5Teat Plan 右键---添加---线程---线程组

线程组(Thread Group)
名称(Name):任意,具有有意义的名字
注释(Comments):备注信息
在取样错误后要执行的动作(Action to be taken after a Sampler error)
a.继续(Contiune):继续。某一个请求遇到错误后,其他请求继续执行。我们在大量用户并发的时候,某个请求失败属正常现象
b.启动下一进程循环(Start Next Thread Loop):如遇到错误后面的请求将不再执行,等下一轮再开始执行。例如线程组中包含登录和发帖2个请求,若登录请求失败,发帖请求将不再执行,等下一次重新迭代,从登录开始执行。
c.停止线程(Stop Thread):遇到错误就停止线程再也不执行了。例如线程组中有50个线程,其中某一个线程的某个请求遇到错误即停止线程不再执行,剩下49个线程继续执行。若线程错误的比较多,剩余的线程就较少,此时负载数量就不足了,测试结果不满足测试要求,因此一般不会勾选此项。
d.停止测试(Stop Test):某个线程某个请求遇到错误,停止所有线程,也就是停止整个测试,但是线程中的余下的请求还是会执行完再停止。例如线程1中包含登录和发帖2个请求,其他线程遇到错误,现在要全部停下来,线程1发帖请求还是会执行,然后再停止测试。
e.立即停止测试(Stop Test Now):遇到错误立即停止所有线程,即整个测试。
线程属性(Thread Properties)
a.线程数(Number of Threads(users)) :线程数,一个线程相当于一个虚拟用户
b.Ramp-Up时间()(Ramp-Up Period(in second)):线程启动开始运行的时间间隔,单位秒。即所有线程在多长时间内全部启动。例如线程60个,Ramp-Up Period设置为20s,那么每秒启动60/20=3个线程,不填写默认设置为0,即所有线程在开启场景后立即启动。
c.循环次数(Loop Count):循环次数。勾选永远(forever),将一直执行,除非手动停止或崩溃
d.延迟创建线程直到需要(Delay Thread creation until needed):延时创建线程直到该线程需要采样时。
勾选,例如50个线程Ramp-Up Period10s,那么每隔1s启动50/10=5个线程并运行下面的请求(状态为running);不勾选,测试计划开始后启动所有线程(状态为new),但是不立即执行下面的请求。例如50个线程Ramp-Up Period10s,那么计划开始后所有线程全部就绪,但第一秒只有5个线程开始运行请求。实际应用中选择哪种都可以,不影响测试结果。
个人理解:例如银行办业务10个人,勾选,柜台只有一个人在办理(running状态),剩下的人可以坐在位置上等候;不勾选,10个人都站在柜台外面排队等候(不是坐着),等待叫号。
调度器(Scheduler):调度器
a.持续时间()(Durationseconds):持续时间,测试计划持续多长时间。
b.延迟时间()(Startup delay(seconds)):启动延时。点击启动按钮后,仅初始化场景,不运行线程,等待延时时间到才运行。

6、线程组右键---添加---配置元件---JDBC Connection Configuration
配置对应的Variable Name for created poolDatabase URLJDBC Driver classUsernamePassword

 

Variable Name Bound to Pool
Variable Name for created pool:数据库连接池的名称,我们可以有多个jdbc connection configuration,每个可以起个不同的名称,在jdbc request中可以通过这个名称选择合适的连接池进行使用。
Connection Pool Configuration
Max Number of Connection
数据库最大链接数
Max Wait (ms) 在连接池中取回连接最大等待时间
Time Between Eviction Runs (ms) 疏散时间
PoolTimeout 数据库链接超时,单位ms
Auto Commit
:自动提交。有三个选项,truefalse、编辑(自己通过jmeter提供的函数设置)Transaction Isolation:事务间隔级别设置,主要有如下几个选项:(对JMX加解密)
TRANSACTION_NODE 事务节点
TRANSACTION_READ_UNCOMMITTED 事务未提交读、
TRANSACTION_READ_COMMITTED 事务已提交读
TRANSACTION_SERIALIZABLE 事务序列化
DEFAULT 默认、
TRANSACTION_REPEATABLE_READ 事务重复读
Connection Validation by Pool
Test While IdIe
Soft Min Evictable IdIe Time(ms)一般默认,
Validation Query 一般选择 select 1
Database Connection Configuration
Database URL
:数据库urljdbc:mysql://主机ip或者机器名称:mysql监听的端口号/数据库名称, 如:jdbc:mysql://localhost:3306/test
JDBC Driver class
JDBC驱动
username:数据库登陆的用户名
passwrod:数据库登陆的密码

7、线程组右键---添加---取样器---JDBC Request

 

Variable Name Bound to Pool
Variable Name of Pool declared in JDBC Connection Configuration:数据库连接池的名字,需要与JDBC Connection ConfigurationVariable Name Bound Pool名字保持一致
SQL Query
Query
:填写的sql语句未尾不要加“;”
Parameter valus
:参数值
Parameter types:参数类型,可参考:Javadoc for java.sql.Types
Variable names
:保存sql语句返回结果的变量名
Result variable name:创建一个对象变量,保存所有返回的结果
Query timeout:查询超时时间
Handle result set:定义如何处理由callable statements语句返回的结果

8、线程组右键---添加---监听器---察看结果树


Thread Name: 线程组名称
Sample Start: 启动开始时间
Load time: 加载时长
Latency: 等待时长
Size in bytes: 发送的数据总大小
Headers size in bytes: 发送头大小
Body size in bytes: 发送数据的其余部分大小
Sample Count: 发送统计
Error Count: 交互错误统计
Response code: 返回码
Response message: 返回信息
Response headers: 返回的头部信息

9、线程组右键---添加---监听器---聚合报告


Label:每个请求的名称,比如HTTP请求等
样本(#Samples):发给服务器的请求数量(如图是200个请求,若模拟100个用户,循环10次,请求数是1000
平均值(Average):单个请求的平均响应时间。默认是单个Request的平均响应时间,当使用了Transaction Controller时,也可以以Transaction为单位显示平均响应时间
中位数(Median):中位数,也就是50%用户的响应时间
90%百分比(90%Line)90%用户的响应时间
95%百分比(95%Line)95%用户的响应时间
99%百分比(99%Line)99%用户的响应时间
最小值(Min):最小的响应时间
最大值(Max):最大的响应时间
注:为什么要有*%用户响应时间?因为在评估一次测试的结果时,仅仅有平均事物响应时间是不够的。假如有一次测试,总共有100个请求被响应,其中最小响应时间为0.02秒,最大响应时间为110秒,平均事务响应时间为4.7秒,你会不会想到最小和最大响应时间如此大的偏差是否会导致平均值本身并不可信?
我们可以在95 th之后继续添加96/ 97/ 98/ 99/ 99.9/ 99.99 th,并利用Excel的图表功能画一条曲线,来更加清晰表现出系统响应时间的分布情况。这时候你也许会发现,那个最大值的出现几率只不过是千分之一甚至万分之一,而且99%的用户请求的响应时间都是在性能需求所定义的范围之内的;如下图则是最低响应时间的值出现几率是很小的,实际99%的用户请求响应时间都要20000+
异常%(Error%):错误率,本次测试中出现错误的请求的数量/请求的总数
吞吐量(Throughput):吞吐量。默认情况下表示每秒完成的请求数,吞吐量=请求数/总时间
接收KB/sec(Received KB/sec):每秒从服务器端接收到的数据量,即:收到的千字节每秒的吞吐量测试
发送KB/sec(Sent KB/sec):每秒从客户端发送的请求的数量,即:发送的千字节每秒的吞吐量测试
聚合报告是累加的,即每次运行的结果统计都是基于前一次运行的结果进行统计,包括发起的请求样本数等都是叠加的,比如我11:00运行一次,发起10个请求,11:20运行一次,发起10个请求,这时聚合报告显示请求数为20个,而此时的吞吐量和第一次运行相差甚远,它把11001120期间非运行状态的时间也算进去了。所以,总时间增大,吞吐量变小。

10、执行任务

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值