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让压测随时做起来(转载)
为什么要压测 这个问题问的其实挺没有必要的,做开发的同学应该都很清楚,压测的必要性,压力测试主要目的就是让我们在上线前能够了解到我们系统的承载能力,和当前.未来系统压力的提升情况,能够评估出当前系统的 ...
随机推荐
- GUI tkinter (Menu)菜单项篇
"""添加顶层菜单:1.我们可以使用Menu类来新建一个菜单,Menu和其他的组件一样,第一个是parent,这里通常可以为窗口2.然后我们可以用add_command方 ...
- python requests自动化框架
一.项目结构 1.新建一个工程(一定要创建工程),工程名称自己定义,如:yoyo_jiekou 2.在工程的跟目录新建一个脚本:run_main.py,用来执行全部用例 3.在工程下创建以下几个pak ...
- 面试必备:高频算法题终章「图文解析 + 范例代码」之 矩阵 二进制 + 位运算 + LRU 合集
Attention 秋招接近尾声,我总结了 牛客.WanAndroid 上,有关笔试面经的帖子中出现的算法题,结合往年考题写了这一系列文章,所有文章均与 LeetCode 进行核对.测试.欢迎食用 本 ...
- windows服务隐藏后门之克隆帐号
windows服务隐藏后门之克隆帐号 1.CMD命令行下,建立了一个用户名为“test$”,密码为“abc123!”的简单隐藏账户,并且把该隐藏账户提升为了管理员权限. PS:CMD命令行使用&quo ...
- Android Studio 1.5运行问题
Error:Unable to start the daemon process: could not reserve enough space for object heap.Please assi ...
- Spring Boot2 系列教程(十四)CORS 解决跨域问题
今天和小伙伴们来聊一聊通过CORS解决跨域问题. 同源策略 很多人对跨域有一种误解,以为这是前端的事,和后端没关系,其实不是这样的,说到跨域,就不得不说说浏览器的同源策略. 同源策略是由 Netsca ...
- [Luogu1291][SHOI2002]百事世界杯之旅
题目描述 “……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字.只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更克赴日韩观看世界杯.还不赶 ...
- volatile关键字使用
1.volatile 使用场景(多线程情况下): 适合使用在 一写多读 的情况下: 2.volatile 理解分析: 使用 volatile 关键字修饰的变量,值在改变时会直接刷新到 主内存 中,而不 ...
- 【朝花夕拾】跨进程通信,你只知道AIDL,就OUT了
一.前言 提起跨进程通信,大多数人首先会想到AIDL.我们知道,用AIDL来实现跨进程通信,需要在客户端和服务端都添加上aidl文件,并在服务端的Service中实现aidl对应的接口.如果还需要服务 ...
- 查看线上日志利器less
less实用命令 搜索 很多关于命令的解释有点令人困惑,因为前字,forward是向前,before也是前面. 上表示backward 下表示forward 向下搜索 / - 使用一个模式进行搜索,并 ...