服务端性能测试——性能测试体系

news2025/1/12 0:52:27

目录:

  1. 1.性能测试介绍
    1. 性能测试介绍
    2. 性能体系:
    3. 性能测试与分析优化:
  2. 行业流行性能压测工具介绍
  3. 行业流行性能监控工具介绍
  4. 行业流行性能剖析工具介绍
  5. 性能测试流程与方法
  6. 性能测试计划
    1. 计划:
    2. DAU,PV(perday),订单量(天)等等业务数据。
    3. 测试数据准备和构造
    4. 环境搭建
    5. 性能指标预期
    6. 发压时间线:
    7. 常⽤命令:
    8. 测试结果:
    9. 测试报告:
  7. 性能测试报告
  8. 性能测试场景设计
  9. 性能测试概念
  10. 经典技术架构解析

1.性能测试介绍

性能测试介绍
  • 有效的性能测试能给研发,运维团队提供有效的容量规划能力,系统风险识别,系统瓶颈识别,性能调优指导,保障尽量避免如上问题的发生

假设:以下场景,不可用10分钟,带来的经济损失

  • 天猫双十一峰值处理订单58.3万笔每秒,
  • 京东金融618战报:白条交易额10秒破亿京东支付峰值同比增长132%

降本增效大前提下:

  • 良好的容量规划能力+性能调优能力=为老板省钱 

性能测试能⼒是测开⼯程师精华加分项

性能体系: 

 性能测试与分析优化:

 

上述图中,三线,三区,两点,三状态

  1. 三条曲线:吞吐量的曲线(紫色),使用率/用户数曲线(绿色),响应时间曲线(深蓝色)
  2. 三个区域:轻负载区(Light Load),重负载区(Heavy Load),塌陷区(Buckle Zone)
  3. 两个点:最优并发用户数(The Optimum Number of Concurrent Users),最大并发用户数(The Maximum Number of Concurrent Users)
  4. 三个状态描述:资源饱和(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.性能测试计划

计划: 
  1. 需求分析与测试设计
  2. 环境设计与搭建
  3. 测试数据准备
  4. 性能指标预期设定
  5. 发压⼯具配置及脚本编写
  6. 测试执⾏ & 监控
DAU,PV(per day),订单量(天) 等等业务数据。
  • 案例 ⼀. 业务已经在线上运⾏, 或有相似业务在运⾏。 A ⾏为⽇志。⼆ 当前业务数据。=> 业务模型 => 预估接⼜ TPS/QPS ⼩问题:⽇志怎么取,取⼀整天算平均值么? 
  • 案例 ⼆. 新业务,或新活动,从未接触过,如何来做? A. 友商经验。 B. 产品,运营共同梳理评估 1.核⼼场景路径 2.⼊⼜及对应转化率 3. 问题收 敛页⾯ => 业务模型 =>对应测试场景,数据量级,接⼜⽐例。
测试数据准备和构造
  1. 接口请求参数:⾃⼰构造/⽇志获取/上下关联;
  2. 数据表的数据填充;
  3. 如果是多接口,则需结合业务场景设计请求⽐例 
环境搭建
  1. 设计:根据需求,结合线上机器部署情况,搭建线下测试环 境,要求具有⼀定的 参考价值,⼀般同⽐1/2,1/4
  2. 环境搭建: (1)起压环境:压测⼯具的安装与调试、 机器参数记录; (2)被压环境:基础服务的搭建、web机代码部署及代码改 造、机器 参数记录
  3. 环境调试:查看接⼝是否正常 
性能指标预期
  1. 每秒请求数(QPS)
  2. 请求响应时间(最⼩、最⼤、平均)
  3. 错误率
  4. 机器性能:cpu idle 45%、memory⽆剧烈抖动或者飙升
  5. 压测过程接⼜功能是否正常 不同性能测试⽅式下指标预期会有差异 
发压时间线:
  1. 测试前环境检查:记录机器参数
  2. 起压:根据被压情况,调节并发量到适合的情况
  3. 查看记录各项性能指标 (1)nginx⽇志查看每秒请求数 (2)查看nginx错误请 求 (3)查看机器参数:cpu idle、mem等 (4)查看db、cache等数据是否写⼊正常 (5)访问接⼜,查看功能是否正常 
常⽤命令:
  1. 查看nginx每秒请求数:tail -f access.log | awk '{print $4}' | uniq -c 2.
  2. 查看某个接⼜每秒请求数:tail -f access.log | grep p_getorderstatus |awk '{print $4}' | uniq -c
  3. 查看cpu idle:vmstat 1
  4. 查看内存:free -m
  5. 查看nginx⽇志是否有错误请求:tail -f access.log |cut -d ' ' -f 10 |grep -v 200
  6. 查看进程:top、ps aux|grep xxx
  7. 查看nginx⽇志某接⼜访问数量:cat access.log.xxxx|grep p_getorderstatus |wc -l
  8. 杀进程: 指定进程号:kill xxx; 指定部分进程名:pkill xxx; ⾃定义特征:for i in `ps aux |grep xxxx|awk '{print $2}'`;do kill $i ;done 或者kill `pgrep -f xxxx`
  9. 查看TIME_WAIT数量:ss -s 或者 netstat -tnlp |grep TIME_WAIT|wc - 
测试结果:
  1. 测试前环境检查:记录机器参数
  2. 起压:根据被压情况,调节并发量到适合的情况
  3. 查看记录各项性能指标 (1)nginx⽇志查看每秒请求数 (2)查看nginx错误请 求 (3)查看机器参数:cpu idle、mem等 (4)查看db、cache等数据是否写⼊正常 (5)访问接⼜,查看功能是否正常 
测试报告:
  1. 根据测试过程中记录的各项参数,结合压测⼯具产 ⽣的⽇志,对测试结果进⾏分析,并产出测试报告
  2. 测试完成后,及时与相关⼈员沟通,确认是否满⾜需求
  3. 发送测试报告邮件 

7.性能测试报告 

~

8.性能测试场景设计

  1. 负载测试(Load Test):负载测试是⼀种性能测试,指数据在 超负荷环境中运 ⾏,程序是否能够承担。 关注点:how much
  2. 压⼒测试(Stress Test): 压⼒测试(又叫强度测试)也是⼀ 种性能测试,它在系统 资源特别低的情况下软件系统运⾏情况,⽬ 的是找到系统在哪⾥失效以及如何失 效的地⽅。
  3. 极限测试 Extreme testing:在过量⽤户下的负载测试 Hammer testing:连续执⾏所有能做的操作
  4. 容量测试(Volume Test):确定系统可处理同时在线的最⼤⽤户数 关注点:how much(⽽不是how fast) 容量测试,通常和数据库 有关,容量和负载的区别在于:容量关注的是⼤容量,⽽不需要关注使⽤中的实际 表现。

 

9.性能测试概念 

并发:并发是指虚拟并发⽤户数,从业务⾓度,也可以理解为同时在线的⽤户数。并⾏ 技术上提升压⼒的⽅式:

  1. 多进程:启动多个进程,每个进程虽然只有⼀个线程,但是多个进程可以⼀起执⾏多个任务
  2. 多线程:启动⼀个进程,在⼀个进程的内部启动多个线程,这样多个线程也可以⼀起执⾏多个任务
  3. 多进程+多线程:启动多个进程,每个进程再启动多个线程
维度多进程多线程优劣
数据共享,同步数据是分开的:共享复杂,需要用IPC;同步简单多线程共享进程数据︰共享简单;同步复杂各有优势
内存,CPU占用内存多,切换复杂,CPU利用率低占用内存少,切换简单,CPU利用率高线程占优
创建销毁,切换创建销毁、切换复杂,速度慢创建销毁、切换简单,速度快线程占优
编程调试编程简单,调试简单编程复杂,调试复杂进程占优
可靠性进程间不会相互影响一个线程挂掉将导致整个进程挂掉进程占优
分布式适应于多核、多机分布﹔如果一台机器不够,扩展到多台机器比较简单适应于多核分布进程占优

 

 

 

 

 

 

 

 

 

 

 

TPS(Transaction per Second):系统每秒处理交易数, 单位是笔/秒。 QPS(Query per Second):系统每秒处理查询次数,单 位是次/秒。对于互联⽹业务中,如果某些业务有且仅有 ⼀个请求连接,那么TPS=QPS, ⼀般情况下⽤TPS来衡量整个业务流程,⽤QPS来衡量接⼜ 查询次数。 并发数 = QPS * 平均响应时间

指标分位 Mean P90 P95 P99

 10.经典技术架构解析

~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1369145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

混淆技术概论

混淆技术概论 引言 在逆向工程领域,混淆技术是一种非常重要的技术手段,通过打破人们的思维惯性,使得逆向分析变得更加困难。本文将会介绍混淆技术的概念、分类及其应用,以及如何使用IPA Guard进行iOS IPA重签名。 混淆技术概述…

2024 运维监控方案解读

WGCLOUD监控系统是一款免费开源的运维工具,具有部署简单,上手容易,轻量高效,性能突出,对新手友好,安全稳定,私有化部署等特点 1、WGCLOUD可以监控大部分的主机和服务器,比如Linux、…

Java索引优先队列设计思路与实现

Java 学习面试指南:https://javaxiaobear.cn 1、实现思路 存储数据时,给每一个数据元素关联一个整数,例如insert(int k,T t),我们可以看做k是t关联的整数,那么我们的实现需要通过k这个值,快速获取到队列中t这个元素&a…

加速科技ST2500 数模混合信号测试设备累计装机量突破500台!

国产数字机,测试中国芯!新年伊始,国产半导体测试设备领军企业加速科技迎来了振奋人心的一刻,ST2500 数模混合信号测试设备累计装机量突破500台!加速科技凭借其持续的创新能力、完善的解决方案能力、专业热忱的本地化服…

【记录】一次内存泄漏造成的内存溢出

记录一下这个问题,前一阵子同事离职了,接手了他的一个项目,然后测试同事说程序连续运行半天就会崩溃,看了下crash文件的关键信息是最后oom了,oom上面的log是logutils写日志,以为是频繁的日志写造成的内存溢…

js viewer 图片浏览器

示例1 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title></head><script src"js/viewer.min.js"></script><link rel"stylesheet" href"css/viewer.min.css…

<Python>PyQt5中UI界面和逻辑函数分开写的一种方式

前言 如果经常使用PyQt5这种模块来编写带UI界面的程序&#xff0c;那么很自然的就会涉及到&#xff0c;一旦程序比较大&#xff0c;UI控件多的时候&#xff0c;需要将UI和逻辑程序分离&#xff0c;这样方便管理&#xff0c;也方便维护。 配置&#xff1a; 平台&#xff1a;win…

工程监测中振弦采集仪的数据处理方法研究

工程监测中振弦采集仪的数据处理方法研究 工程监测中振弦采集仪的数据处理方法研究是针对振弦采集仪所采集到的数据进行分析和处理&#xff0c;以获得需要的监测信息和结构响应。以下是一种常见的数据处理方法&#xff1a; 1. 数据清洗: 首先对采集到的原始数据进行清洗&#…

python爬取豆瓣影评,涉及知识点:bs4,requests、time、random

页面源代码: <!DOCTYPE html> <html lang="zh-CN" class="ua-windows ua-webkit"> <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="renderer" conten…

Low Poly Cartoon House Interiors

400个独特的低多边形预制件的集合,可以轻松创建高质量的室内场景。所有模型都已准备好放入场景中,并使用一个纹理创建,以提高性能!包含演示场景! 模型分类: - 墙壁(79件) - 地板(28块) - 浴室(33个) - 厨房(36件) - 厨房道具(68件) - 房间道具(85件) - 灯具(…

【HarmonyOS4.0】第四篇-ArkUI基础实战

一、ArkUI框架简介 ArkUI开发框架是方舟开发框架的简称&#xff0c;它是一套构建 HarmonyOS / OpenHarmony 应用界面的声明式UI开发框架&#xff0c;它使用极简的UI信息语法、丰富的UI组件以及实时界面语言工具&#xff0c;帮助开发者提升应用界面开发效率 30%&#xff0c;开发…

Uibot (RPA设计软件)培训前期准备指南————课前材料三

(本博客中会有部分课程ppt截屏,如有侵权请及请及时与小北我取得联系~&#xff09; 紧接着小北的前两篇博客&#xff0c;友友们我们即将开展新课的学习~RPA 培训前期准备指南——安装Uibot(RPA设计软件&#xff09;-CSDN博客https://blog.csdn.net/Zhiyilang/article/details/1…

2024-01-09 Android.mk 根据c文件名插入特定的宏定义,我这里用于定义log LOG_TAG 标签

一、在Android的构建系统中&#xff0c;使用Android.mk构建脚本可以根据特定需求来定义宏。如果你想根据C文件的名称来插入特定的宏定义&#xff0c;可以使用条件语句检查文件名&#xff0c;并相应地设置宏。 在Android的构建系统中&#xff0c;使用Android.mk构建脚本可以根据…

灵活使用Redis高可用

1 Redis高可用 1.1 Redis的高可用方式 主从复制&#xff1a; 主从复制时高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制的基础上实现高可用。主从复制主要实现了数据的多机备份&#xff0c;以及对于读操作的负载均衡和简单的故障恢复。缺陷&#xff1a;复制恢复无法…

期货日数据维护与使用_日数据维护_主力合约计算逻辑

目录 主力合约换月规则&#xff08;文化财经&#xff09; 主力合约计算逻辑 数据准备 代码 ​下载 主力合约换月规则&#xff08;文化财经&#xff09; 主力合约计算逻辑 数据准备 本文以沪银为例&#xff0c;将沪银所有日数据文件放入一个文件夹中&#xff0c;文件名命…

OBD汽车

相当于客户端与服务器 诊断设备流程 》》》》诊断服务 OBD很多的定死了 Vme就很灵活 WWH 就是两个的结合 OBD15031 SID PID 可以自己定义一些 一个字节255个 两个有效字节 02 01 0D 5555&#xff08;随机值&#xff09;这是请求 两个有效字节 01 OD&#xff08;请求速…

C# Emgu.CV4.8.0读取rtsp流录制mp4可分段保存

【官方框架地址】 https://github.com/emgucv/emgucv 【算法介绍】 EMGU CV&#xff08;Emgu Computer Vision&#xff09;是一个开源的、基于.NET框架的计算机视觉库&#xff0c;它提供了对OpenCV&#xff08;开源计算机视觉库&#xff09;的封装。EMGU CV使得在.NET应用程序…

Java药物不良反应ADR智能监测系统源码

药物不良反应&#xff08;Adverse Drug Reaction&#xff0c;ADR&#xff09;是指在使用合格药品时&#xff0c;在正常的用法和用量下出现的与用药目的无关的有害反应。这些反应往往因药物种类、使用方式、个体差异等因素而异&#xff0c;可能导致患者身体不适、病情恶化。 为保…

多PC文件夹同步方案

在多个工作终端独立具备svn版本库的情况下&#xff0c;可使用本工具进行一键同步。 相较于传统的SVN中心检出更新方案中移动存储设备硬件及文件目录系统多终端间易损坏&#xff0c;本方案更加稳定 资料同步结构&#xff1a; 使用步骤&#xff1a; 1.修改config.ini配置文件 2…

通付盾受邀出席2024安全市场年度大会,荣获“数字安全产业杰出贡献奖”!

1月5日&#xff0c;由国内数字产业独立的第三方调研咨询机构数世咨询主办&#xff0c;以“数字安全&#xff0c;未来可期”为主题的2024安全市场年度大会在北京举办。来自国内网络安全厂商300多人以线上线下方式参加本次大会&#xff0c;通过4个多小时高能演讲&#xff0c;聚焦…