压力测试-Jmeter
我们在开发的过程中,如果遇到系统预估访问量会比较大的时候,或者我们再做底层基础服务的时候,往往需要对我们的服务性能做一些压力测试和稳定性测试,市面上有很多压测工具,今天我们主要讲解的是Jmeter压力测试工具,鉴于最近做的一次项目正儿八经的做了一次压测,加上以前零零碎碎的学习,本次我打算总结一下。
一、Jemter的安装
我所下载的Jmeter是5.4版本的,解压过后进入bin目录,双击jmeter.sh,如图表示软件启动成功.
二、如何构建一个接口的压测脚本
接下来我们启动一个接口服务,新增压测脚本
1、新增线程组
创建100个线程,指定在1s内生成这全部100个线程,循环跑10次,整个压测跑下来执行接口请求1000次。
2、构建http取样器
输入采样器的名称、协议、服务器域名或者IP、端口号、Method及Url信息。
3、监听器里添加查看结果树(比较耗服务器性能,不需要可以不加)和聚合报告
4、补充知识点:计数器
上面的请求,我们的参数是写死的,但是多数时候,我们需要构建不同的参数,这个时候,如果没有规则,我们可以使用计数器。
新增一个计数器原件,引用名称studentId,从1开始到10000结束,步长为1.
使用方法:${studentId}
结果:
5、读取csv文件
有的时候,参数并不能像上面这样用一个计数器随便变量替代,而是必须是真实有效的数据,这个时候我们可以从数据库里先把数据拿出来,整理成csv格式,由Jmeter去读取.
三、报告详解
看下我们第一次的的压测结果,
本次的接口完全是通过mysql来提供数据的,没有做任何的缓存,性能是非常之差,我们详细解释下各个参数的意思.
样本:就是本次我们一共进行了多少次接口请求
平均值:就是接口的平均响应时间,单位是ms
中位数:就是接口响应时间的中位数,单位是ms
90%百分数:就是90%的接口响应时间不超过这个数值,单位是ms
95%百分数:就是95%的接口响应时间不超过这个数值,单位是ms
99%百分数:就是99%的接口响应时间不超过这个数值,单位是ms
最小值:接口的最小响应时间,单位是ms
最大值:接口的最大响应时间,单位是ms
异常:接口异常的百分比
吞吐量:单位时间(1s)的接口请求次数
接收:收到的千字节每秒的吞吐量测试
发送:发送的千字节每秒的吞吐量测试
接下来我们做三次性能优化
①:加缓存Redis
②:加缓存Redis且用protobuf序列化
③:加缓存EhCache
这样我们可以通过压测工具一步步测试我们程序优化的效果,最终达到我们要求的压测指标。
四、如何在服务器上跑压力测试
上述我们是在windows的界面开发下进行的压力测试,一般在公司里,我们会搭建专门的施压服务器,用于进行压力测试。
首先把我们的服务部署到服务器上去:
在压测服务器上需要安装jdk,配置Jmeter环境,上传apache-jmeter-5.4.tgz到服务器解压
Jmeter命令参数解释:
利用GUI工具编写测试计划,生成一个jmx文件(包括监控、聚合报告、tps、服务器资源监控等),上传到服务器。
执行JMeter文件:在Linux服务器中找到文件所在的目录,然后开始执行
jmeter -n -t /opt/test/获取学生信息.jmx -l result.jtl -e -o /opt/test/result
执行完毕后将jtl文件下载到本地,利用GUI工具可以查看压测结果。
Jmeter多机压测(分布式压测),在有些时候,我们的压测服务器单机产生的请求量不一定能够满足压测要求,这个时候我们需要开多台压测服务器协调。
分别在两台机器上安装jmeter软件,一台是控制机,一台是Agent节点
在Agent节点的jmeter.properties上修改 server.rmi.ssl.disable=true
启动Agent:jmeter-server -Djava.rmi.server.hostname=<Ip>
修改控制机配置jmeter.properties remote_hosts=121.36.136.241:1099
启动控制机: jmeter-server
执行压测脚本,多一个参数 -r 表示全部agent启动并参与测试
jmeter -n -t /opt/test/获取学生信息.jmx -r -l result.jtl -e -o /opt/test/result
在Agent节点上也会打印2行日志
五、Jmeter安装插件拓展功能
Jmeter作为一个开源工具,相比一些商用工具(如LoadRunner),在功能上就稍显不足,好在Jmeter可以集成第三方插件来丰富功能。
插件下载地址:jmeter-plugins.org
下载plugins-manager.jar文件后,将其放入jmeter的安装目录的lib/ext目录下,重启jmeter
重启后,我们为压测脚本添加监听器可以用来监测接口响应时间和tps的变化情况:
在做压测的时候,我们除了关心接口性能的指标数据外,还有一点非常重要,我们也要时刻关注服务器资源的消耗情况,试想一下,如果服务器费了九牛二虎之力跑出了我们需要的性能指标,但是服务器消耗过大,随时都有宕机的风险,这样的压测结果没有任何意义,但是我们怎么监测服务器性能呢?如下:
我们需要安装PerfMon插件
同时我们在服务器也需要开启一个Agent
总结:
压力测试只能帮我们发现程序中的性能问题,但是它并不能帮我们解决问题,我们程序员除了要掌握压测的能力外,更重要的是优化程序的能力,包括但不限于数据库连接池调优、引入缓存、序列化调优、JVM调优、容器调优等,同时我们还需要不断监控服务器的CPU、内存、磁盘等硬件情况,我们要达到的目的是服务器能够在维持硬件资源正常工作的状态下,让我们的接口性能达到最优。
本次用到的软件:
链接:https://pan.baidu.com/s/1YajIPjQgqrtBNEtAvs-58A
提取码:xdjl
压力测试-Jmeter相关推荐
- 压力测试-Jmeter自动化测试教程
目录 Jmeter目录 1.Jmeter的安装与部署 1.1 环境要求 1.2 安装Jmeter 1.3 配置Jmeter环境变量 1.4 Jmeter的使用 手写自动化测试脚本(不建议用) 通过录制 ...
- 压力测试Jmeter+badboy
压力测试Jmeter+badboy 前言:很多人都想学习压力测试,但是一开始手动写脚本着实蛋疼,所以今天我教大家的是利用badboy来录制压测脚本,然后用Jmeter来做压力测试. 流程:badboy ...
- 压力测试-Jmeter脚本录制方案
使用Jmeter时在特殊场景下需要用到脚本录制的功能,本文将分享如何使用Jmeter进行脚本的录制及相关的注意事项. 准备工作: 创建基础API框架:新建测试计划-创建线程组-创建HTTP请求-创建查 ...
- 【高性能】Web性能压力测试JMeter、测试秒杀Red
高性能问题 内容管理 JMeter web性能测试 JMeter配置原件 取样器 Sampler 配置原件 config Element 逻辑控制器 Logic Controller 前置处理器 Pr ...
- 压力测试-Jmeter测试移动APP
如果刚刚入门Jmeter,请参考Jmeter测试教程-入门 jmeter资源包 首先,确保手机和电脑连接在同一个热点下(不是公共局域网) 进入win的cmd,输入ipconfig Jme ...
- jmeter json断言_Jmeter接口测试+压力测试
jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单.因为jmeter是java开发的,所以运行的时候必须先要 ...
- jmeter压力测试linux,JMeter压力测试
JMeter压力测试 整体目标: 安装虚拟机,并安装一套LAMP(Linux+Apache+Mysql+PHP)待测系统,推荐ECShop(http://www.ecshop.com),基于此进行Jm ...
- (转)使用JMeter进行Web压力测试
使用JMeter进行压力测试 说到压力测试,一般第一反应都是LoadRunner.这个软件也确实是自动化测试的一个事实标准.无奈这个软件太过庞大,以及不能在MacOS上使用.我由于项目的需要,需要对一 ...
- Jmeter接口测试+压力测试
jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单.因为jmeter是java开发的,所以运行的时候必须先 ...
- jmetter持续时间_【转】Jmeter做web压力测试时设置持续时间注意点
头一回使用jmeter做web的压力测试,遇到个很莫名其妙的问题,不管我的线程组怎么设置,它就是执行一次就结束了. 设置循环次数为300,不使用调度器--〉执行一次就结束了,循环次数未生效 设置循环次 ...
最新文章
- 软件工程(2019)第一次结对作业
- Elasticsearch搜索引擎:ES的segment段合并原理
- 四川一级计算机课程编码,四川省计算机一级考试真题
- 设计模式札记——单例模式(Singleton Pattern)
- 华为麒麟990芯片发布;谷歌宣布开源创新隐私保护技术;阿里20亿美元全资收购网易考拉;中国联通将设立100亿5G创新基金……...
- SpringCloud创建Config多客户端公共配置
- 我认为的android入门学习策略
- sql实现从两个表获取字段组成表数据再插入到函数表中
- android书籍和教程推荐--不断更新
- 开课吧:深入了解C++语言应用方向有哪些?
- php 递归穿件文件夹,PHP递归复制整个文件夹
- 如何将windows桌面默认位置修改为D盘
- PR期刊投稿要求(整体要求、Title page、Highlight)
- ps切图怎么做成html,PS切图怎么导出网页 PS切图怎么生成源代码
- 苹果笔记本安装系统显示英文的解决办法
- rhel7添加静态路由
- Matlab 仿真——直流电机速度控制(1)直流电机建模
- 据说这是国外最火的55套PS实用教程!
- OPPO跨越 “挑战者深渊”
- 012 Rust死灵书之分解借用