Jmeter与压测相关概念

上一篇 / 下一篇  2019-11-18 16:00:52 / 个人分类:软件测试

    相关概念
  RT(response time)
  什么是RT? RT就是指系统在接收到请求和做出相应这段时间跨度
  但是值得一提的是RT的值越高,并不真的就能说明我们的系统的吞吐量就很高, 比如说,如果存在数据在网络中传输时出现了丢包的现象,传输的数据少了,速度就会增加, 但是这是事故,不是说我们的系统吞吐量高
  此外,对不同的系统来说衡量的标准也不一样,对一个游戏软件来说,响应时间也就是常说的延迟. 在100ms以内,游戏体验感会很好,飙升到几秒钟,干脆就不要玩了, 但是对一个编译系统来说,编译一套源代码可能好几十分钟,人们也愿意等
  java应用程序中的GC也会导致系统的总体RT飙升
  Throughput 吞吐量
  什么是吐吞量呢?百度百科: 广义的吞吐量是: 单位时间内成功的传输数据的数量, 在我们进行压力测试得出的结果中, 可以将吞吐量理解成系统在单位时间内成功处理的请求的数量
  一个系统的吞吐量和request对CPU的消耗,外部的接口以及IO等因素紧密相关,
  比如一个web应用代码写的再漂亮,但是每次请求都会去查询数据库,并发数上来后,数据库就会占用大量的CPU负载,系统的IO飙升,甚至可能导致其他软件不得不等待mysql先执行完才能抢到CPU的时间分片. 系统的瓶颈积压到mysql这里,这个web应用的吞吐量一定不会很高
  此外,一般我们都是这样描述吞吐量: 在并发数为xxx时,系统的吐吞量为yyy
  并发用户数
  它指的是系统可以承载的, 可以同时正常使用网站的用户数量, 这个指标似乎看起来可以比吞吐量更加直观反应系统的性能, 但是往往系统中的用户又有不同的行为, 比如未**的, 在线的, 同时发送请求的等等, 简而言之, 可以考虑用在线的用户和同时发送请求的用户数作为性能指标, 把在线的用户当成性能指标更直观, 把同时发送请求的用户数量当成性能指标更准确
  QPS (query per seconds)
  每秒的查询率, 用来权衡服务器在规定的时间内处理的流量数
  计算公式: QPS = req / sec , 即平均每秒的请求量
  TPS (transition per seconds)
  TPS (transaction per second)代表每秒执行的事务数量,可基于测试周期内完成的事务数量计算得出。例如,用户每分钟执行6个事务,TPS为6 / 60s = 0.10 TPS。同时我们会知道事务的响应时间(或节拍),以此例,60秒完成6个事务也同时代表每个事务的响应时间或节拍为10秒。
  PV和UV
  PV访问量 (Page View) 每打开一次页面或者刷新一次页面 pv+1, 它反应的的网站的页面被访问的次数
  UV访问数(Unique Visitor) 即, 独立访客的访问数, 换句话就是一台电脑算一个访客,
  通过QPS估算PV
  公式1 : pv = QPS*3600*6
  公式2: pv = QPS*3600*8
  根据QPS,PV估算服务器的数量
  服务器的数量= 每天的总PV / 单台服务器的PV
  原理: 每天80%的访问集中在了当前的20%的时间段, 这20%的时间就叫做峰值时间
  峰值时间段 QPS = 总pv数*0.8 / 每天的秒数*0.2
  参考: 博文1
  参考:博文2
  Jmeter
  jmeter能做什么?
  Jmeter也是apache的顶级项目, 通过jmeter我们可以测试静态和动态资源,web动态应用程序的性能, 还可以用来模拟服务器,服务器中,网络或者对象上的高负载, 测试他们的强度,以及不同负载下的总体性能
  点击进入官网下载
  使用环境:Windows
  使用的思路: 在jmeter提供的可视化页面中,添加一个一个的指定的模块. 对我们的web项目中指定的接口进行压力测试,当然它不仅仅使用于发送http请求测试web项目的资源接口
  添加什么模块呢?
  线程组: 也就是启动多少条线程对系统压测, 线程是否并发的启动
  http的默认参数: 比如protocol host port 等等
  添加请求的参数/请求体/cookie等信息
  添加监听器来显示压测结果
  实例:
  添加线程组,每轮同时启动1000条线程对系统进行压测,重复1轮
     添加默认使用的请求参数, 这个默认的请求参数并不要求强制添加,只是为了以后在具体的某个http请求压测模块不写请求参数时,使用这里面的默认参数
     配置信息如下:
     添加一个sample, 这个sample其实就是http请求, 一个具体的http请求, 用大白话说 ,我们想压测系统中的登录方法,就添加一个登录sample, 想压测系统中拉取个人信息的方法, 就添加一个 个人信息sample
    sample详细配置
     可以看到上图中我们可以添加request Param request body, 上传文件, 甚至可以添加一个模块添加请求的cookie模块
  添加Listenner, 选择聚合报告 ,开始压测得到下面的结果,我们关注图中的吞吐量
     支持使用配置文件中的数据当成压测的参数, 使用场景: 通过这个配置文件的配置,我们可以模拟出多用户并发访问系统的场景,下面配置中的每一行都是一个用户的信息,jmeter会自动读取这个配置文件中的每一行,使用这里面的信息进行压力测试,直到达到了用户指定的请求量才结束
  编写配置文件

导入配置文件
   使用配置文件,详细的配置细节我都标在了图片中
   发送请求
   使用环境: linux
  第一步: 在window上录好 XXX.jmx 文件
  第二步: 启动
 sh jmeter.sh -n -t XXX.jmx -l result.jtl
   第三步:将result.jtl导回到window上的jmeter中在可视化页面中查看结果

 
      以上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8 052),我们将立即处理。
 
 
 
 
 
 
      了解更多课程内容及课程安排,可咨询QQ 2852509883 或致电客服 400-821-0951(工作日9:00-17:30)
【看这里】技术交流、拓展人脉、领取福利欢迎加入博为峰网校大课堂>>>

 


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar