Jmeter笔记:压力测试

1.简介

压力测试(Stress Test):也称为强度测试、负载测试。压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等。
TPS:每秒事务数。一个事务是指客户端向服务器发送请求然后服务器做出反应的过程,具体的事务定义,可以是一个接口、多个接口、一个业务流程等等。

        以单接口定义为事务举例,每个事务包括了如下3个过程:向服务器发请求;服务器自己的内部处理(包含应用服务器、数据库服务器等);服务器返回结果给客户端。如果每秒能够完成 N 次以上3个过程,TPS 就是 N

QPS:每秒查询率。指一台服务器每秒能够响应的查询次数,用于衡量特定的查询服务器在规定时间内所处理流量多少,主要针对专门用于查询的服务器的性能指标。

        QPS 基本类似于 TPS,但是不同的是,对于一个事务访问,会形成一个 “ T ”;但一次 " T " 中,可能产生多次对服务器的请求,服务器对这些请求,就可计入 QPS 之中。

并发数:指系统同时能处理的请求数量,同时反应了系统的负载能力。这个数值可以分析机器1S内的访问日志数量来得到
吐吞量:吞吐量是指系统在单位时间内处理请求的数量,TPS、QPS都是吞吐量的常用量化指标。

总结

(1)如果是对一个查询接口压测,且这个接口内部不会再去请求其它接口,那么 TPS = QPS,否则,TPS ≠ QPS

(2)如果是容量场景,假设 N 个接口都是查询接口,且这个接口内部不会再去请求其它接口,QPS = N * TPS 

2.Jmeter参数

 线程数:用于设置并发数量,也就是多少个用户同时访问

Rame-Up Period(in seconds):控制每隔多少秒内启动线程,例如100线程,设置10s。10s内启动100线程数。

循环次数:用于设置线程组的循环次数

调度器:设置压测的持续时间、延时时间

常数吞吐量定时器:根据TPS值来设定目标TPS,注意单位是分设置时TPS*60

只有此线程(this thread only):控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的target Throughput 乘以该线程的数量

所有活动线程(all active threads):设置的target Throughput 将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程

当前线程组中的所有活动线程(all active threads in current thread group):设置的target Throughput 将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和all active threads 选项的效果完全相同

所有活动线程(共享)(all avtive threads (shared)):与all active threads的选项基本相同。唯一区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行

当前线程组中的所有活动线程(共享)(all active threads in current thread group (shared)):与all active threads in current thread group 基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行

3.压测结果简介

jmeter工具对于请求的测试结果,有多种形式展现,但是数据比较难懂,现在针对不同的展现做具体的说明。

(一)图形结果

(1)样本数目:总共发到服务器的请求数

(2)最新样本:服务器响应最后一个请求的处理时间(单位:毫秒)

(3)平均:所有取样器结果的响应时间平均值(总运行时间除以发送到服务器的请求数)

(4)偏离:服务器响应时间变化,离散程度测量值的大小,即数据的分布。

(5)吞吐量:服务器每分钟处理的请求数

(6)中值:所有取样器结果的响应时间中间值(有一半的服务器响应时间低于该值而另一半高于该值)

(7)X轴:取样器个数的均匀分部轴

(8)y轴:处理时间(单位:毫秒)

(二)聚合报告

 聚合报告中的时间单位ms(1000ms=1s)

(1)Label : 每个JMeter 的element(例如HTTP Request)都有一个Name属性,这里显示的就是Name属性的值

(2)#Samples : 表示你这次测试中一共发出了多少请求,如果测试计划模拟10个用户,每个用户迭代10次,这里就会显示100

(3)Average : 平均响应时间,默认情况下是单个Request的平均响应时间,当使用了事务控制器时,也可以以事务为单位显示平均响应时间

(4)Median : 中位数,也就是50%用户的响应时间(据按由小到大的顺序排列后,取出第50%位)

(5)90%Line : 90%用户的响应时间(据按由小到大的顺序排列后,取出第90%位)

(6)95%Line : 95%用户的响应时间(据按由小到大的顺序排列后,取出第95%位)

(7)99%Line : 99%用户的响应时间(据按由小到大的顺序排列后,取出第99%位)

(8)Min : 最小响应时间

(9)Max : 最大响应时间

(10)Error% : 错误率,本次测试中出现错误的请求的数量/请求总数

(11)Throughput : 吞吐量,默认情况下表示每秒完成的请求数(Request per Second)

(12)KB/Sec : 每秒从服务器端接受到的数据量(单位:千字节/秒)

(13)Received KB/sec----每秒从服务器端接收到的数据量(单位:千字节/秒)

(14)Sent KB/sec----每秒从客户端发送的请求的数量(单位:千字节/秒)

(三)用表格查看结果

(1)Sample:每个请求的序号

(2)start time:每个请求开始时间

(3)thread name:每个线程组名称

(4)label:请求类型,对应在测试计划下填写的请求名称

(5)Sample time:每个请求所花时间,单位毫秒(0.001秒(s)=1毫秒(ms)    1秒(s)=1000毫秒(ms)  )

(6)Status:请求状态,如果为 √ 则表示成功,如果为 × ,则表示失败。

(7)Bytes:响应的字节数,请求的字节数。

(8)Sent Bytes:发送的字节数。 

(9)Latency:延迟的时间,等待时长。(单位:毫秒)

(10)Connect Time(ms):连接服务器的时间。(单位:毫秒)

(11)样本数目:所有请求个数,样本数目 = 线程数(请求用户数)* 请求次数 。(单位:个)

(12)最新样本:最新样本响应时间,表示服务器响应最后一个请求的时间。(单位:毫秒)

(13)平均:所有请求的平均响应时间。(单位:毫秒)

(14)偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。(偏离值是一个观察测试环境和系统稳定性的数据)
 

3.名词解释及分析

偏离值:偏离值是一个观察测试环境和系统稳定性的数据。偏离值越小则环境越稳定,所测得的数据越有效,反之,如果偏离值太大则说明环境不稳定,在这种情况下测得的数据就没什么价值,所以在测试的时候,必须要保证偏离值是小的。(可参考:http://blog.sina.com.cn/s/blog_5034424d010080ay.html

吞吐率:单位时间内服务器处理的请求数来描述其并发处理能力。吞吐率,是单位时间内网络上传输的数据量,特指web服务器单位时间内处理的请求数。吞吐率是衡量网络性能的重要指标。通常情况下,吞吐率用“字节数/秒”来衡量。也可以用“请求数/秒”来衡量。吞吐量除以时间,所得到的单位时间内的数据量就是吞吐率。吞吐率代表着单位时间内所能承受的压力,是测试中一个重要的指标。通过比较吞吐量,可以发现系统的运行状态。当随着并发数增加时,吞吐率是不断增加的,当达到一个服务器极限后,再增加并发数,吞吐率会急速下降,直至服务器崩溃。所以,当达到临界点(吞吐量最高点,负载和处理均衡时)为“最大吞吐率”,是系统在运行下的一个理想阈值范围。

备注:一个请求还是一个页面,它的本质都是在网络上传输的数据,那么用来表述数据的单位就是字节数。

吞吐量:是指在一次性能测试过程中,网络上传输的数据量的总和。对于交互式应用来说:吞吐量指标反映的是服务器承受的压力。在容量规划的测试中:吞吐量是一个重点关注的指标,因为它能够说明系统级别的负载能力。另外,在性能调优过程中,吞吐量指标也有重要的价值。

比如:一个大型工厂,他们的生产效率与生产速度很快,一天生产10W吨的货物,结果工厂的运输能力不行,就两辆小型三轮车一天拉2吨的货物,说明的是这个运输能力(吞吐量)是整个系统的瓶颈。

只用吞吐量来衡量一个系统的性能(输出能力)是极其不准确的。
用个最简单的例子说明,一个水龙头开一天一夜,流出10吨水;10个水龙头开1秒钟,流出0.1吨水。此时当然是一个水龙头的吞吐量大。但是,你能说1个水龙头的出水能力是10个水龙头的强吗?显然不能。
所以,我们要加单位时间,看谁1秒钟的出水量大,这就是吞吐率
 

TPS:事务(Transaction Per second),就是用户某一步或几步操作的集合。每秒钟用户向web服务器提交的HTTP请求数。同时,要保证它有一个完整意义。每秒钟系统能够处理事务或交易的数量,它是衡量系统处理能力的重要指标。这个指标是web 应用特有的一个指标;web应用是“请求-响应”模式,用户发一个申请,服务器就要处理一次,所以点击是web应用能够处理的交易的最小单位。如果把每次点击定义为一个交易,点击率和TPS就是一个概念。点击率越大,对服务器的压力也越大,点击率只是一个性能参考指标,重要的是分析点击时产生的影响。

点击率:可以看做是TPS的一种特定情况。更能体现用户端对服务器的压力。
TPS:更能体现服务器对客户请求的处理能力。

比如:用户对某一个页面的一次请求,用户对某系统的一次登录,淘宝用户对商品的一次确认支付过程。这些我们都可以看作一个事务。


吞吐量,吞吐率的意义:

  • 吞吐量的限制是性能瓶颈的一种重要表现形式,因此,有针对地对吞吐量设计测试,可以协助尽快定位到性能冰晶所在的位置。
  • 80%系统的性能瓶颈都是由吞吐量制约。
  • 并发用户和吞吐量瓶颈之间存在一定的关联。
  • 通过不断增加并发用户数和吞吐量观察系统的性能瓶颈。然后,从网络、数据库、应用服务器和代码本身4个环节确定系统的性能瓶颈。

聚合报告中部分值的计算方法:

  • 吞吐量 = 完成的请求数 / 完成这些请求数所需要的时间

  • 平均响应时间 = 所有响应时间的总和 / 完成的请求数

  • 失败率 = 失败的个数 / 总数

  • 时间的计算方法是:通过timeStamp时间戳(发出的起始时间)相减而得

聚合报告参数

一般关注参数有:90%Line、Error、Throughput

当然还要根据磁盘空间、CPU占比、并发数等

Samples:发出请求数量
Average:平均响应时间
Median:中位数,也就是50%用户的响应时间。 50%的样本都没有超过这个时间。
90%Line:90%用户的响应时间。 90%的样本都没有超过这个时间。
95%Line:95%用户的响应时间。 95%的样本都没有超过这个时间。
99%Line:99%用户的响应时间。 99%的样本都没有超过这个时间。
Min:最小响应时间
Max:最大响应时间
Error:本次测试中出现错误的请求的数量/请求的总数
Throughput:吞吐量。默认情况下标示每秒完成的请求数
Received KB/sec:每秒从服务器端接收到的数据量。
Sent KB/sec:每秒发送到服务器端的数据量。

index.html中Statistics 统计参数


samples:并发数
FALL:失败次数
Error:失败率
Average:平均响应的时间
min:最小响应的时间
max:最大响应的时间
90th pct:90%的用户响应不会超过这个值(建议关注这个)
95th pct:95%的用户响应不会超过这个值
99th pct:99%的用户响应不会超过这个值(到达这个值已经够高了)
received:每1秒从服务器接收的数据量
sent:每1秒发送的数据量
throughput:Request per Second吞吐量 qps

4.压测实例

        需求背景:现有查询接口,测试并发100个用户,每个用户查询200次。qps=100,

创建线程组

1)测试计划右键-->添加-->线程(用户)-->线程组

2)设置线程数100;循环次数200

3)线程组右键-->添加-->取样器-->HTTP请求

具体参数配置哪些需参照接口文档或抓包获取

4)线程组右键-->添加-->监听器-->查看结果树和聚合报告

聚合报告中配置报告生成保存的路径地址,方便生成HTML可视化报告

5)win+r输入cmd进入jmeter安装目录bin文件夹执行生成后的聚合报告

        命令:jmeter -g 聚合报告.jmx -o 生成index.html文件的路径

 6)点击查看生成的index.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值