Jmeter与压测相关概念
相关概念
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
Jmeter
jmeter能做什么?
Jmeter也是apache的顶级项目, 通过jmeter我们可以测试静态和动态资源,web动态应用程序的性能, 还可以用来模拟服务器,服务器中,网络或者对象上的高负载, 测试他们的强度,以及不同负载下的总体性能
使用
使用的思路: 在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会自动读取这个配置文件中的每一行,使用这里面的信息进行压力测试,直到达到了用户指定的请求量才结束
编写配置文件
导入配置文件
使用配置文件,详细的配置细节我都标在了图片中
发送请求
Jmeter与压测相关概念的更多相关文章
- lesson5:利用jmeter来压测消息队列(activemq)
本文讲述了利用jmeter来压测消息队列,其中消息队列采用apache的activemq,jmeter本身是支持符合jms标准消息队列的压测,由于jmeter的官方sampler配置比较复杂,本文直接 ...
- lesson4:利用jmeter来压测数据库
本文讲述了如何利用jmeter来压测数据库,事例中选取了mysql作为测试数据库,其它的数据库也是一样,只需要更换驱动程序即可. 准备工作:a.mysql数据库安装,请自行百度:b.jdbc驱动包,请 ...
- jmeter 分布式压测(windows)
单台压测机通常会遇到客户端瓶颈,受制于客户机的性能.可能由于网络带宽,CPU,内存的限制不能给到服务器足够的压力,这个时候你就需要用到分布式方案来解决客户机的瓶颈,压测的结果也会更加接近于真实情况. ...
- jmeter简单压测设置
参数化 随机参数 时间参数 顺序自增函数 文件读取 直接引用 响应断言 用来查看sessionid 关联 关联引用 jmeter操作数据库 安装连接程序包 ip 端口号 哪个数据库 可以执行多条s ...
- Jmeter阶梯式压测
https://www.cnblogs.com/Zfc-Cjk/p/11639219.html 什么是阶梯式压测? 阶梯式压测,就是对系统的压力呈现阶梯性增加的过程,每个阶段压力值都要增加一个数量值, ...
- jmeter接口压测的反思
jmeter接口压测的反思 1.keepalive的坑:连接数满了,导致发起的请求失败. 2.token关联?是数据库取做参数化,还是随机数生成(需要改代码) 3.签名问题如何处理? 4.压测负载机端 ...
- 压力测试(八)-多节点JMeter分布式压测实战
1.Jmeter4.0分布式压测准备工作 简介:讲解Linux服务器上jmeter进行分布式压测的相关准备工作 1.压测注意事项 the firewalls on the systems are tu ...
- JMeter分布式压测实战(2020年清明假期学习笔记)
一.常用压力测试工具对比 简介:目前用的常用测试工具对比 1.loadrunner 性能稳定,压测结果及颗粒度大,可以自定义脚本进行压测,但是太过于重大,功能比较繁多. 2.Apache ab(单接口 ...
- Jmeter让压测随时做起来(转载)
为什么要压测 这个问题问的其实挺没有必要的,做开发的同学应该都很清楚,压测的必要性,压力测试主要目的就是让我们在上线前能够了解到我们系统的承载能力,和当前.未来系统压力的提升情况,能够评估出当前系统的 ...
随机推荐
- 不就是SELECT COUNT语句吗,竟然能被面试官虐的体无完肤
数据库查询相信很多人都不陌生,所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查. 在数据库的增删改查操作中,使用最频繁的就是查询操作.而在所有查询操作中,统计数量操作更 ...
- vue中百度地图API的调用
1.使用百度地图api需要使用jsonp,来获取百度api的返回,因为vue不自带jsonp所以需要下载 安装jsonp npm i vue-jsonp -S 引入jsop import Vue fr ...
- Redis学习三(进阶功能).
一.排序 redis 支持对 list,set 和 zset 元素的排序,排序的时间复杂度是 O(N+M*log(M)).(N 是集合大小,M 为返回元素的数量) sort key [BY patte ...
- windows显示文件后缀名
win+E 进入到计算机 点击组织 点击文件夹和搜索选项 先点击查看,然后去掉勾选隐藏已知文件类型的扩展名
- 上传文件夹或上传文件到linux
http://jingyan.baidu.com/article/d169e18658995a436611d8ee.html https://www.cnblogs.com/nbf-156cwl/p/ ...
- TomCat中间件漏洞复现总汇
TomCat中间件漏洞复现 前言 在渗透测试过程中,遇到php的站相对多一点,所以对apache了解的也多一点.TomCat中间件的站了解的比较少一点,这是自己第一次搭建环境测试漏洞,所以在自己摸索的 ...
- vue-cli 3.x 自定义插件并发布到 npm
干货转载——https://www.cnblogs.com/wisewrong/archive/2018/12/28/10186611.html 全是知识点呐 赶紧记下来啊 一.调整项目结构 首先用 ...
- postman设置环境变量与全局变量
1.环境变量可以设置多组 设置环境变量 编辑环境变量 2.全局变量只能设置一组 可以在Pre-request Script和Tests中设置全局变量 如:pm.globals.set("na ...
- epoll(2) 使用及源码分析的引子
epoll(2) 使用及源码分析的引子 本文代码取自内核版本 4.17 epoll(2) - I/O 事件通知设施. epoll 是内核在2.6版本后实现的,是对 select(2)/poll(2) ...
- redis之Scan
scan 相比keys 具备有以下特点:1.复杂度虽然也是 O(n),但是它是通过游标分步进行的,不会阻塞线程;2.提供 limit 参数,可以控制每次返回结果的最大条数,limit 只是一个 hin ...