1.什么是性能测试以及性能测试的价值和目的
2.真实企业性能测试指标详解以及指标测算
3.真实企业中性能测试流程以及细节剖析
4.性能压测脚本自动生成以及脚本增强和组件详解
理论–》指标->压测脚本-》脚本完善和增强->模拟真实场景->压测场景->监控平台->瓶颈定位和性
能调优
性能测试就是通过性能压测工具(jmeter,loadrunner),通过特定方式,对系统施加一定的压力:正
常、异常负载以及峰值来对系统实施压力,得到各项性能指标。保证系统的性能需求。
价值和目的:
1.评估系统的能力
2.识别系统的弱点:瓶颈,弱点
3.检查系统的隐藏的问题
4.检验系统的稳定性和可靠性
【虚拟用户数】:线程=用户
【并发数】:指在某一时间,一定数量的虚拟用户同时对系统的某个功能进行交互。一般通过集合点
实现。
【事务】:一个接口可以是事务,多个接口也可以是事务,一个流程可以是事务,事务代表一个完整
的功能。由测试人员决定的。
【场景】:性能测试的用例
【响应时间】:Response Time
平均响应时间:
中位数:从小到大排序,选择第50个。
90%:从小到大排序,选择第90个。
95%:从小到大排序,选择第95个。
99%:从小到大排序,选择第99个。
基准测试:1个用户请求接口。200-500MS
一、什么是性能测试以及性能测试的价值和目的
二、性能测试指标理解透彻以及测算
压力测试:N个用户并发请求接口,2秒
【TPS】TPS是系统的重要性能指标,用于衡量系统在一定时间内能够处理的事务数(交易数)。
Transactions per sencond
计算公式:总的事务数/总的运行时间
比如:某一系统1分钟处理1000个事务,那么TPS=1000/60=16.7
比如:按去年的经营数据,2022年最高的一天有10万笔交易。预测2023年TPS需要多少合格?
总事务数=10万,时间=246060=86,400秒
理论上TPS = 100000/86400=1.2
(1)没有更详细的数据:根据二八定律(80%的事务在20%的时间完成)计算:
TPS = 1000000.8 / 864000.2=80000/17280=4.6
(2)如果有更详细的数据:5万比交易是晚上的8-9点完成的。
TPS=50000/3600=13.9
业务的增长:30%
TPS=50000+50000*0.3/3600=18
【QPS】每一秒的查询率。
TPS,QPS,RPS HPS(每一秒的点击率)
【吞吐量】衡量网络成功传输的数量量,单位Byte/S
【资源利用率】服务器:CPU,内存,磁盘,网络。
1.需求分析以及需求确定(指标值,场景,环境,人员)
合理?
客户:OA,1万员工,并发一万。
产品经理:单台阿里云服务器。支撑1万并发。
项目组领导:3年之后需要达到什么样的性能。
2.性能测试计划和方案制定。
基准测试:
负载测试:
压力测试:
稳定性测试:
其他:配置测试,极限测试,浪涌测试?
3.性能测试准备阶段
人力,硬件,软件,环境折算。
干净。
4.测试执行阶段
脚本生成和增强:冰山一角
三、性能测试流程
场景设计
指标监控
性能瓶颈定位和性能调优
php+nginx+mysql+centos
5.测试报告和总结
通过jmeter代理服务器录制脚本
1.设置客户端的代理
控制面板–>Internet选项–>连接–>局域网设置–>勾上代理输入jmeter所在电脑的ip和8888端口。
2.录制脚本
完善脚本以及增强脚本
token:一般用于鉴权
JMeter的聚合报告中的吞吐量==TPS
性能脚本完善以及增强
1.性能测试脚本完善以及增强
2.Jmeter插件安装以及监控使用
3.性能压测场景设置(基准,负载,压力,稳定性鞥)
4.无界面压测场景详解
1.逻辑控制器:事务控制器,仅一次控制器,吞吐量控制器
吞吐量控制器:
Based on:
Percent … (默认):按百分比分配流量,
Total… :代表总次数。
2.定时器
3.集合点:jmeter叫同步定时器。用于实现并发。
4.使用线程组:简单压一压
线程数:虚拟用户数100
Ramp-UP:多久加载完虚拟用户数。20
循环次数:3
每个接口的总请求:100*3=300个。
1.下载一个插件管理包jmeter-plugins-manager版本.jar,放到jmeter的lib/ext目录下
重启jmeter,那么就有了插件管理。
一、性能测试脚本完善以及增强
二、JMeter的插件的安装以及监控使用
TPS和RT那么直接增加就可以了。
如果我们想要去监控服务器的性能:CPU,内存。
PerfMon Metrics Collector使用原理:
1.需要在服务器安装一个ServerAgent.zip,用于收集服务器的性能参数。
然后通过4444端口输出。
2.在PerfMon Metrics Collector组件中通过4444端口去捕获服务器性能参数。
监控图的作用主要是:
1.看趋势,找性能拐点
2.写性能测试报告
场景:性能测试用例
1.旧系统来自于运维
2.新系统来自于合理预估
按场景和规则预估:做OA,总用户10000个,测试打卡功能做并发,8.30-9/00
一般大部分的公司很难超过500。5000以上,1万,十万,百万一定要集群。
服务器(集群)和压力机(集群)
1.单接口基准测试:使用一个用户测试接口5分钟。
目的:为了在没有任何压力的情况下:查看各项性能指标。
2.单接口负载测试场景:
通过逐渐的对一个接口进行施压直到出现性能拐点。 获得被测接口的最大处理能力以及它的相关的性
能指标。
3.混合负载压测场景:(不是只有一个场景,有多个)
目的是为了验证整个业务的最大的最优的性能体现。重点在于模型的设计。模型来自于数据(来自生
产环境的日志或者产品经理给出的)。
压测策略,压测场景,压测用例:
this group will start 启动多少个线程,100
First wait for 等待多少秒才开始压测,一般为0
Then start 一开始有多少个线程数,一般为0
三、实际性能压测的场景设置
Next add
threads every
using ramp-up
每多少秒启动多少个虚拟用户数,每组数据持续运行多少秒
Then hold load for 60 全部加载完成后,负载运行60秒。
Finally stop
threads every
每一秒停止5个虚拟用户数。
3.压力测试场景:
验证系统的极限。直到有任何一个性能指标超出预期。
4.稳定性测试场景。
在压力测试的场景下持续的运行4-24个小时。
1.节约系统资源。
2.更快捷,只需要启动命令即可进行压测
3.主要是用于性能压测集成。
-n 表示无界面压测
-t 制定你的jmx脚本
-l 生成jtl测试报告
注意:
jmeter.save.saveservice.output_format=xml
jmeter.save.saveservice.response_data=true
jmeter.save.saveservice.samplerData=true
命令:E:\test> -n -t test.jmx -l result.jtl
直接生成报告:
-e -o
命令:jmeter -n -t test.jmx -l result.jtl -e -o reports
注意:
jmeter.save.saveservice.output_format=csv
五、无界面压测
很重要的两个参数:用于分布式集群压测
-r:表示启动所有的远程压力机执行压测。
-R:指定特定的远程压力机执行压测。多态用,隔开。
命令:
jmeter -n -t test.jmx -l result.jtl -e -o reports -r
jmeter -n -t test.jmx -l result.jtl -e -o reports -R 192.168.0.24:1001
1.Linxu服务器性能分析命令及详解
2.Garafana+influxDB监控Jmeter数据
3.Garafana+Prometheus监控服务器和数据库性能
4.性能瓶颈分析以及性能调优方案详解
jmeter -n -t test.jmx -l result.jtl -e -o reports -R 192.168.0.24:1001
top:
load average:平均负载
htop
centos + php + mysql +nginx
1.无界面压测中如何实时的监控。
grafana+influxdb+jmeter组合。
优点:
1.实时
2.美观
3.能够存储和对比
原理:
1.运行jmeter时会吧数据写入到influxdb
2.influxdb实时存储执行的结果
3.grafana链接.influxdb,将他的数据展示为图表。
2.安装influxdb以及部署
(1) 下载并且解压
(2)修改配置文件
(3)启动influxdb的服务
E:\influxdb>influxd --config influxdb.conf
(4)使用influxdb创建jmeter数据库
一、无界面压测时,查看Linux服务器的性能
二、grafana监控平台
3.在jmeter脚本中增加后端监听器
4.执行无界面压测,并且查看jmeter数据库中是否有数据
select * from jmeter
5.安装grafana,并从influxdb抽取数据并且通过仪表盘实时展示
rpm包
rpm -ivh garafana.rpm即可
配置数据源
阿里云:网络带宽