服务端性能测试——性能测试体系
发布时间:2024年01月08日
目录:
- 1.性能测试介绍
- 性能测试介绍
- 性能体系:
- 性能测试与分析优化:
- 行业流行性能压测工具介绍
- 行业流行性能监控工具介绍
- 行业流行性能剖析工具介绍
- 性能测试流程与方法
- 性能测试计划
- 计划:
- DAU,PV(perday),订单量(天)等等业务数据。
- 测试数据准备和构造
- 环境搭建
- 性能指标预期
- 发压时间线:
- 常?命令:
- 测试结果:
- 测试报告:
- 性能测试报告
- 性能测试场景设计
- 性能测试概念
- 经典技术架构解析
1.性能测试介绍
性能测试介绍
- 有效的性能测试能给研发,运维团队提供有效的容量规划能力,系统风险识别,系统瓶颈识别,性能调优指导,保障尽量避免如上问题的发生
假设:以下场景,不可用10分钟,带来的经济损失
- 天猫双十一峰值处理订单58.3万笔每秒,
- 京东金融618战报:白条交易额10秒破亿京东支付峰值同比增长132%
降本增效大前提下:
性能测试能?是测开?程师精华加分项
性能体系:?
?性能测试与分析优化:
?
上述图中,三线,三区,两点,三状态
- 三条曲线:吞吐量的曲线(紫色),使用率/用户数曲线(绿色),响应时间曲线(深蓝色)
- 三个区域:轻负载区(Light Load),重负载区(Heavy Load),塌陷区(Buckle Zone)
- 两个点:最优并发用户数(The Optimum Number of Concurrent Users),最大并发用户数(The Maximum Number of Concurrent Users)
- 三个状态描述:资源饱和(Resource Saturated),吞吐下降(Throughput Falling),用户受影响(End Users Effected)
2.行业流行性能压测工具介绍
- Apache AB = Apache HTTP server benchmarking tool ?快灵的?具
- Apache JMeter
- Grinder是?个?于在多台 机器上运??jython(在 JVM上 运?的python)编写 的测试脚本的应?程序。它 的内部引 擎是基于 Grinder。nGrinder分别? 控制器和agent将 Grinder 的控制台和agent包装起 来,并扩展了?持多个 并发 测试的特性。
- Locust
?3.行业流行性能监控工具介绍
- Linux自带命令 Vmstat,Top等
- 机器监控工具 Nmon
- 物理机监控Collectd + InfluxDB+ Grafana
- Docker+ Mysql + Redis一体化监控:Prometheus + Grafana
- (node_exporter,mysqld_exporter,redis_exporter,自定义exporter,全家桶)
- 全链路Tracing监控,Zipkin
4.?行业流行性能剖析工具介绍
- JConsole
- JVirusalVM
- JStack
- FlameGraph
- SkyWalking
- Zipkin
5.性能测试流程与方法
性能测试?法
- 并发模式(虚拟?户模式) 并发是指虚拟并发?户数,从业务?度,也可以理解 为同时在线的?户数。如果需要从客户端的?度出发,摸底业务系统各节点能同 时承载的在线?户数,可以使?该模式设置?标并发。 RPS 模式(吞吐量模式)
- RPS(Requests Per Second)是指每秒请求数。RPS 模 式即“吞吐量模式”,通过设置每秒发出的请求数,从服务端的?度出发,直接衡 量系统的吞吐能?,免去并发到 RPS 的繁琐转化,?步到位。?
?6.性能测试计划
计划:?
- 需求分析与测试设计
- 环境设计与搭建
- 测试数据准备
- 性能指标预期设定
- 发压?具配置及脚本编写
- 测试执? & 监控
DAU,PV(per day),订单量(天) 等等业务数据。
- 案例 ?. 业务已经在线上运?, 或有相似业务在运?。 A ?为?志。? 当前业务数据。=> 业务模型 => 预估接? TPS/QPS ?问题:?志怎么取,取?整天算平均值么??
- 案例 ?. 新业务,或新活动,从未接触过,如何来做? A. 友商经验。 B. 产品,运营共同梳理评估 1.核?场景路径 2.??及对应转化率 3. 问题收 敛页? => 业务模型 =>对应测试场景,数据量级,接??例。
测试数据准备和构造
- 接口请求参数:??构造/?志获取/上下关联;
- 数据表的数据填充;
- 如果是多接口,则需结合业务场景设计请求?例?
环境搭建
- 设计:根据需求,结合线上机器部署情况,搭建线下测试环 境,要求具有?定的 参考价值,?般同?1/2,1/4
- 环境搭建: (1)起压环境:压测?具的安装与调试、 机器参数记录; (2)被压环境:基础服务的搭建、web机代码部署及代码改 造、机器 参数记录
- 环境调试:查看接?是否正常?
性能指标预期
- 每秒请求数(QPS)
- 请求响应时间(最?、最?、平均)
- 错误率
- 机器性能:cpu idle 45%、memory?剧烈抖动或者飙升
- 压测过程接?功能是否正常 不同性能测试?式下指标预期会有差异?
发压时间线:
- 测试前环境检查:记录机器参数
- 起压:根据被压情况,调节并发量到适合的情况
- 查看记录各项性能指标 (1)nginx?志查看每秒请求数 (2)查看nginx错误请 求 (3)查看机器参数:cpu idle、mem等 (4)查看db、cache等数据是否写?正常 (5)访问接?,查看功能是否正常?
常?命令:
- 查看nginx每秒请求数:tail -f access.log | awk '{print $4}' | uniq -c 2.
- 查看某个接?每秒请求数:tail -f access.log | grep p_getorderstatus |awk '{print $4}' | uniq -c
- 查看cpu idle:vmstat 1
- 查看内存:free -m
- 查看nginx?志是否有错误请求:tail -f access.log |cut -d ' ' -f 10 |grep -v 200
- 查看进程:top、ps aux|grep xxx
- 查看nginx?志某接?访问数量:cat access.log.xxxx|grep p_getorderstatus |wc -l
- 杀进程: 指定进程号:kill xxx; 指定部分进程名:pkill xxx; ?定义特征:for i in `ps aux |grep xxxx|awk '{print $2}'`;do kill $i ;done 或者kill `pgrep -f xxxx`
- 查看TIME_WAIT数量:ss -s 或者 netstat -tnlp |grep TIME_WAIT|wc -?
测试结果:
- 测试前环境检查:记录机器参数
- 起压:根据被压情况,调节并发量到适合的情况
- 查看记录各项性能指标 (1)nginx?志查看每秒请求数 (2)查看nginx错误请 求 (3)查看机器参数:cpu idle、mem等 (4)查看db、cache等数据是否写?正常 (5)访问接?,查看功能是否正常?
测试报告:
- 根据测试过程中记录的各项参数,结合压测?具产 ?的?志,对测试结果进?分析,并产出测试报告
- 测试完成后,及时与相关?员沟通,确认是否满?需求
- 发送测试报告邮件?
7.性能测试报告?
~
8.性能测试场景设计
- 负载测试(Load Test):负载测试是?种性能测试,指数据在 超负荷环境中运 ?,程序是否能够承担。 关注点:how much
- 压?测试(Stress Test): 压?测试(又叫强度测试)也是? 种性能测试,它在系统 资源特别低的情况下软件系统运?情况,? 的是找到系统在哪?失效以及如何失 效的地?。
- 极限测试 Extreme testing:在过量?户下的负载测试 Hammer testing:连续执?所有能做的操作
- 容量测试(Volume Test):确定系统可处理同时在线的最??户数 关注点:how much(?不是how fast) 容量测试,通常和数据库 有关,容量和负载的区别在于:容量关注的是?容量,?不需要关注使?中的实际 表现。
?
9.性能测试概念?
并发:并发是指虚拟并发?户数,从业务?度,也可以理解为同时在线的?户数。并? 技术上提升压?的?式:
- 多进程:启动多个进程,每个进程虽然只有?个线程,但是多个进程可以?起执?多个任务
- 多线程:启动?个进程,在?个进程的内部启动多个线程,这样多个线程也可以?起执?多个任务
- 多进程+多线程:启动多个进程,每个进程再启动多个线程
维度 | 多进程 | 多线程 | 优劣 |
数据共享,同步 | 数据是分开的:共享复杂,需要用IPC;同步简单 | 多线程共享进程数据︰共享简单;同步复杂 | 各有优势 |
内存,CPU | 占用内存多,切换复杂,CPU利用率低 | 占用内存少,切换简单,CPU利用率高 | 线程占优 |
创建销毁,切换 | 创建销毁、切换复杂,速度慢 | 创建销毁、切换简单,速度快 | 线程占优 |
编程调试 | 编程简单,调试简单 | 编程复杂,调试复杂 | 进程占优 |
可靠性 | 进程间不会相互影响 | 一个线程挂掉将导致整个进程挂掉 | 进程占优 |
分布式 | 适应于多核、多机分布﹔如果一台机器不够,扩展到多台机器比较简单 | 适应于多核分布 | 进程占优 |
?
?
?
?
?
?
?
?
?
?
?
TPS(Transaction per Second):系统每秒处理交易数, 单位是笔/秒。 QPS(Query per Second):系统每秒处理查询次数,单 位是次/秒。对于互联?业务中,如果某些业务有且仅有 ?个请求连接,那么TPS=QPS, ?般情况下?TPS来衡量整个业务流程,?QPS来衡量接? 查询次数。?并发数 = QPS * 平均响应时间
指标分位 Mean P90 P95 P99
?10.经典技术架构解析
~
文章来源:https://blog.csdn.net/qq_56444564/article/details/135458581
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!