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

目录:

  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.经典技术架构解析

~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大模型LLM训练的数据集

引言 2021年以来,大预言模型的开发和生产使用呈现出爆炸式增长。除了李开复、王慧文、王小川等“退休”再创业的互联网老兵,在阿里巴巴、腾讯、快手等互联网大厂的中高层也大胆辞职,加入这波创业浪潮。 通用大模型初创企业MiniMax完成了新一…

使用 matlab 求解最小二乘问题

有约束线性最小二乘 其标准形式为: min ⁡ x 1 2 ∥ C x − d ∥ 2 2 \mathop {\min }\limits_x \quad \frac{1}{2}\left\| Cx-d \right\|_2^2 xmin​21​∥Cx−d∥22​ 约束条件为: A ⋅ x ≤ b A e q ⋅ x b e q l b ≤ x ≤ u b \begin{aligned} …

黑马苍穹外卖学习Day3

目录 公共字段自动填充问题分析实现思路代码实现 新增菜品需求分析和设计接口设计代码开发开发文件上传接口功能开发 菜品分页查询需求分析和设计代码开发 菜品删除功能需求分析与设计代码实现代码优化 修改菜品需求分析和设计代码实现 公共字段自动填充 问题分析 员工表和分…

洗地机哪种牌子好?智能洗地机排行

选择一款性能稳定、使用方便的洗地机,对于家庭清洁至关重要。近年来,随着懒人经济的兴起,智能家电不断涌现。特别是在家居清洁领域,人们追求更加轻松便捷的清洁体验。洗地机行业近年来迎来了快速增长,各大厂商竞相推出…

Java学习笔记(六)——基本数据类型及其对应的包装类

文章目录 包装类基本数据类型及其对应的包装类获取Integer对象的方式(了解)获取Integer对象两种方式的区别(掌握) 包装类的计算:自动装箱和自动拆箱Integer成员方法综合练习练习1练习2练习3练习4练习5 包装类 包装类:基本数据类型对应的引用数据类型。 …

基于ssm的常见小儿疾病中医护理系统的设计+jsp论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本小儿疾病中医护理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据…

一款完整的单节锂离子电池采用恒定电流/恒定电压线性充电器

一、基本概述 TX5806是一款完整的单节锂离子电池采用恒定电流/恒定电压线性充电器。芯片外部元件少,使芯片成为便携式应用的理想选择。芯片可以适合 USB 电源和适配器电源工作。由于采用了内部P-MOS架构,加上防倒充电路,所以不需要外部隔离二…

大创项目推荐 深度学习大数据物流平台 python

文章目录 0 前言1 课题背景2 物流大数据平台的架构与设计3 智能车货匹配推荐算法的实现**1\. 问题陈述****2\. 算法模型**3\. 模型构建总览 **4 司机标签体系的搭建及算法****1\. 冷启动**2\. LSTM多标签模型算法 5 货运价格预测6 总结7 部分核心代码8 最后 0 前言 &#x1f5…

基于SSM图书管理系统【源码】【最详细运行文档】

SSM图书管理系统【源码】【最详细运行文档】 系统简介系统涉及系统运行系统演示源码获取 系统简介 以往的图书馆管理事务处理主要使用的是传统的人工管理方式,这种管理方式存在着管理效率低、操作流程繁琐、保密性差等缺点,长期的人工管理模式会产生大量…

k8s的集群调度

k8s的集群调度: scheduler: 负责调度资源,把pod调度到node节点。 预算策略 优先策略 List-watch k8s集群当中,通过list-watch的机制进行每个组件的协作,保持数据同步,每个组件之间的解耦。 kubectl配置文件,向APIserver发送命令---apiserve…

解压方法之一 tar

文章目录 解压方法之一 tar语法压缩文件查看压缩文件的内容解压文件更多信息 解压方法之一 tar … note:: 十年磨一剑,霜刃未曾试。 贾岛《剑客 / 述剑》 Linux的tar命令可以用来压缩或者解压缩文件。 官方定义为: tar - an archiving utility 语法 …

7.27 SpringBoot项目实战 之 整合Swagger

文章目录 前言一、Maven依赖二、编写Swagger配置类三、编写接口配置3.1 控制器Controller 配置描述3.2 接口API 配置描述3.3 参数配置描述3.4 忽略API四、全局参数配置五、启用增强功能六、调试前言 在我们实现了那么多API以后,进入前后端联调阶段,需要给前端同学提供接口文…

花七天时间整理了3.5W字的全栈自动化测试面试题(答案+学习路线)!(适合各级软件测试人员)

在面试战场上,我们需要像忍者一样灵活,像侦探一样聪明,还要像无敌铁金刚一样坚定。只有掌握了这些技巧,我们才能在面试的舞台上闪耀光芒,成为那个令HR们心动的测试人 前言: 我相信大多测试开发的或多或少经…

微服务概述之单体架构

微服务概述 互联网始于 1969年美国的阿帕网(ARPA),最开始的阿帕网只在美国军方使用。随着时间的推移,一些大学也开始加入建设,慢慢演化成了现在的因特网 (Internet)。随着计算机网络的普及&…

猫头虎分享已解决Bug || Error: ImagePullBackOff (K8s)

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通Golang》…

FPGA——时序分析与约束

FPGA时序分析与约束 FPGA结构基础数据传输模型Quartus II 时序报告Quartus II 中TimeQuest的操作实操 时序分析:通过分析FPGA内部各个存储器之间的数据和时钟传输路径,来分析数据延迟和时钟延迟的关系,保证所有寄存器都可以正确寄存数据。 数…

云卷云舒:【实战篇】云主机/虚拟机迁移

1. 简介 用户原有业务通过不同版本型号、不同操作系统的主机承载,形式上包括物理服务器、虚拟机、公有云主机等。随着业务不断扩张,需要将其业务云化转型,必须保证上云过程数据完整,业务平滑过度。 如果将所有业务系统都重新部署…

JS加密/解密之常见的JS代码加密

JS混淆加密是一种将JS代码转换为更难理解和阅读的格式的技术,目的是为了保护JS代码的版权和安全,防止被恶意修改或盗用。JS混淆加密通常包括以下几种方法: 变量重命名:将变量名替换为随机的字母或符号,使得代码的逻辑…

vue3 修饰符大全(近万字长文)

系列文章目录 TypeScript 从入门到进阶专栏 文章目录 系列文章目录前言一、事件修饰符(Event Modifiers)1、.stop(阻止事件冒泡)2、.prevent(阻止事件的默认行为)3、.capture(使用事件捕获模式…

6.4 通过IO实现文件的读取与写入

6.4 通过IO实现文件的读取与写入 1. File类及常用方法2. 通过字节字符流实现文件读取与写入1. 流2. 字节输入输出流 InputStream与OutputStream3. 字符输入输出流实现文本读取与写入4. 字节流与字符流的相互转化 3. 缓冲区及应用4. 1. File类及常用方法 package com.imooc.io;i…