jmeter性能测试执行过程
2022-06-29 18:19阅读:
一、确认性能测试目标
1、性能指标确认,(需要测试,开发双方给出):
QPS/tps要求,
1、其中qps等可以根据以往经验值值估计(比如新环境搭建,同比之前数据;如果有优化,根据经验值提供)
2、根据pv等计算
参考:pv可以查看数据统计平台,比如金刚等;

响应时间确认可接受范围;根据要求制定一个基础指标
相对于平均响应时间来说,百分位响应时间通常更能反映服务的整体效率。现实世界中用的较多的是 99%
、98%的百分位响应时间;99% 的百分位响应时间 ,指的是 99% 的请求响应时间,都处在这个值以下。
如果有100个请求,其中 98 个耗时为 1ms,其他两个为 100ms。那么平均响应时间为 (98 * 1 + 2 *
100) / 100.0 = 2.98ms 。但 99% 的百分位响应时间却是 100ms。
二、制定测试方案
1、确认压测接口范围
2、根据接口的业务场景和数据要求确认压测场景:
比如双师直播接口互动
需要签到完再进行答题等互动,如果签到和答题同流程,那循环的时候就会签到+答题一起循环,但是签到都是一次性的操作答题可以循环执行答题,无法一起设置;
还比如发起答题和答题,发起之后可以循环答题,但是不会循环发起,鉴于场景限
制和复杂数据,所以按照场景划分;
比如一次准备的数据签到,发起答题,单做压力(本身压力也不是很大);答题和红包过程加压多线程执行;
三、准备脚本,数据(这个过程中还会继续调整压测场景)
1、脚本可以自己编写,也可以用工具录制 (badboy或是代理录制 https://blog.csdn.net/heye13/article/details/83590397)
录制后的脚本根据需要删减信息;(一般录制的接口很多接口附带的请求,比如图片,资源等,按需求删减)
2、准备数据(单条数据循环请求和多数据循环请求,都可以,但多数据时会更接近真实环境,相对比较真实),脚本参数化;
数据读取可以从csv中读取,读取的时候注意配置轮询获取数据,压测之前小量循环查看读取数据正确性;
三、确认压测环境配置
1、包括cpu 配置,带宽,io等
2、和线上真实环境对比
3、监测资源指标方式、
4、涉及web项目的tomcate链接数配置;(如果设置较少会存在压力上不去的现象,提前避免此影响)
四、压测执行
1、建议先用GUI模式执行脚本,保证环境稳定和脚本数据正确性;
2、稳定后,根据线程由少到多的阶梯方式进行压力,同时设置脚本压测循环时间和线程数;
可以先设置后场景保存脚本后上传服务器,也可在服务器上直接改脚本文件执行;
线程数:是并发数,阶梯变化,由少到多,10 ,50 ,100,300,500,。。。
Ramp-up period:多少秒启动
循环次数:永远
调度器:勾选
持续时间:根据需要设置,单位秒
![jmeter性能测试执行过程]()
3、将脚本和数据上传到linux服务器上;
单机只上传到对应服务器,路径可以根据自己需求设定;
分布式要保证master和slave都上传脚本和数据文件;
同时注意脚本中csv的文件路径,可以直接配置文件名称,csv文件上传到脚本上传路径,在脚本根目录下,总之要保证能读取到linux中的路径,参见:
https://www.cnblogs.com/baihuitestsoftware/articles/9186112.html

4、上传脚本和数据文件之后,使用非GUI模式执行脚本;参考:
jmeter环境搭建
单机模式,指定好脚本路径和报告存储路径,直接执行命令,执行结束导出报告,查看并记录数据;

分布式模式,slave分别启动
jmeter-server,等待master发起执行命令,每次发起和结束,slave机器上都有Starting和Finishing,如下图;
分布式结束之后,报告在master机器上;
linux 上执行jmeter的方式:(如果已经有同名报告,执行会报错)
单台执行,只产出聚合报告:
./jmeter -n -t
/usr/local/jmeter/apache-jmeter-5.1.1/bin/temp/shuangshi.jmx -l
/usr/local/jmeter/apache-jmeter-5.1.1/bin/temp/result.jtl
单台执行,一次性完成测试执行和生成HTML可视化报告和.jtl 的聚合报告:
./jmeter -n -t /usr/local/sstest/ss_init_10.jmx -l
/usr/local/sstest/result1.jtl -e -o
/usr/local/sstest/html
远程执行:-R 后边加ip -r不加ip,全部远程机器并行压测,只产出聚合报告:
./jmeter -n -R 47.93.163.61,47.93.178.82 -t
/usr/local/jmeter/apache-jmeter-5.1.1/bin/temp/shuangshi_400u.jmx
-l
/usr/local/jmeter/apache-jmeter-5.1.1/bin/temp/result_800u.jtl
非 GUI 模式运行测试脚本时可以使用的一些命令:
-h 帮助 -> 打印出有用的信息并退出
-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
-t 测试文件 -> 要运行的 JMeter 测试脚本文件
-l 日志文件 -> 记录结果的文件
-r 远程执行 -> 启动远程服务
-H 代理主机 -> 设置 JMeter 使用的代理主机
-P 代理端口 -> 设置 JMeter 使用的代理主机的端口号
-R:指定使用那些slave节点压测
# -e:在脚本运行结束后生成html报告
# -o:用于存放html报告的目录
5、监控
执行脚本的过程中,需要同步观察服务器和压力机的资源指标;资源指标参见:
基本概念
观察服务器性能:
1、可以登录阿里云的控制后台,查看每个服务器的性能指标;
地址:
https://signin.aliyun.com/login.htm
用户名:readonly@gaosiedu
密码:readonly
2、也可以使用其他工具;
3、在jmeter中使用性能检测工具 ;ServerAgent插件
https://blog.csdn.net/qq_39247153/article/details/79374278
记录数据并查看整体趋势,如
基本概念
中各个指标随着并发增大的变化趋势;
如果出现其中某些数据随着压力增大
无明显变化,需要确认是否有某些瓶颈导致压力无法增大,比如io,带宽,连接数,,一个个确认,必要时,修改后重新执行确认影响;如
基本概念
中最后案例;、
五、数据整理
结果文件即之前保存过的
gaosi.jtl格式文件
该文件可以使用 GUI 模式下的聚合报告查看,可以打开 JMeter GUI 界面 -> 测试计划 ->
添加线程组 -> 添加聚合报告 -> 点击 '浏览...' 按钮找到你刚生成的 jtl
文件打开即可统计结果进行分析。
生成的html报告可以直接打开

梳理数据,产出数据横向对比,产出趋势图,找到数据拐点,主要是qps和响应时间,确认压测环境下的最优值,评估实际流量需要多少机器承载;
备注:压测过程中要提前执行几次数据,待系统环境稳定后继续,且要由少到多
入错压测过程中有数据比较异常,可以剔除此组数据,应为压测或有数据压坏的场景,要满足基本规律;
六、性能调优优化
如果期间有需要修改优化的点,修改后需要再次执行,看性能是否有提升,循环进行调优,测试过程;