03-揭秘大厂性能方案的奥秘!(上)

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 03-揭秘大厂性能方案的奥秘!

性能方案在性能项目中是重要文档之一,它指导整个项目的执行过程,也约束项目边界,定义相关人员职能。但如今变得“微不足道”。


很多常见的性能项目中,性能方案就是个文档,且是个静态文档。里面写的东西是啥,项目后续会不会按这内容做,没人关心。它就成了形式,只有评审方案时才拿出看看。甚至一些第三方测试项目中,有些甲方连方案内容都不看,直接问有没有?有,就过去了。一个必需的交付物无人关心。


性能方案是个重量级文档。性能项目中被叫成“性能测试方案”。在我这,我把“测试”二字拿掉,因为这取决于我性能工程理念,我希望把整个项目的过程都描述在方案。


0 我的性能方案 V.S 那些常见性能方案

经常看到有这样目录的性能测试方案:

这样的目录大纲组成

  • 常规项目信息:如测试背景、测试范围、测试准则、测试环境、实施准备、组织结构、项目风险、里程碑。
  • 性能实施信息:如测试模型、测试策略、监控策略。
  • 项目输出:如测试脚本、测试用例/测试场景、监控采集数据,测试报告、调优报告。

从性能测试方案的角度来说,这些内容似乎够。但若抛弃“测试”视角,从一个完整的性能项目的角度来看,这些内容还不够。

以前经常有人问我要一个性能项目方案模板,我一直不理解,就这么一个目录,为什么还非得要?自己一个字一个字也照样写得出来吧。后来我慢慢理解,他们要的其实不是大纲目录,而是一个完整的性能方案内容。


项目实施的性能方案基本不可能直接发出来,即便脱敏,一些内容也可以看出是属于某些企业。所以网上看不到完整的性能方案。尽管网上方案不完整,在性能市场上,还是看到有太多性能方案抄来抄去,总体结构大同小异。这也就导致性能项目中,大量方案都只流于形式。


因为我们需要基于一个完整的项目来编写,所以,我把这个项目整体的方案写在这里。你将看到,我认为的真正完整并且有意义的性能方案是啥样。


由于性能方案的内容比较多,并且相对琐碎,整理了一张性能方案的目录表格,你可以对应这张表格,学习具体内容。

来看真实的性能项目实施方案:

1 背景

1.1 项目背景

由于各企业的商业软件有限制,只能选择一个开源项目,并且这个项目最好可以覆盖常见的技术栈,以便能给你提供更多可借鉴内容。因此搭建了一套电商项目:

  • 这个项目是较为完整的
  • 当前电商的系统比较典型,并且这个项目完全开源,便于改造

不过,也因为这是一个开源的项目,功能和性能都不知道会有什么样的问题,我们只有在性能实施的过程中一步步去发掘,所以这是一个非常符合我们当前目标的项目。

1.2 性能目标

  1. 根据经典的电商下单流程,测试当前系统的单接口最大容量。
  2. 根据业务比例设计容量场景,充分利用当前资源,找到当前系统的性能瓶颈,并优化,以达到系统的最佳运行状态。
  3. 根据稳定性场景,判断当前系统可支持的系统最大累加容量。
  4. 根据异常场景,判断当前系统中的异常对性能产生的影响。

在每一个性能项目中,性能目标都会影响项目的整个过程。因此,对目标的把握将决定一个性能项目的走向。

某项目,客户要求做到支持1000万人在线,项目不算小,开发团队有300人左右。到那一看只有两个性能测试人员,其中一个还刚毕业。于是,我就过去找他们科技部老大,说这项目我做不了。因为根据这个目标和这样的人员配置,这坑不是我能填上的,得赶紧认怂。后来,那个科技部的老大问,需要什么样资源才能做下去?于是我提几个必需条件,直到这些条件都满足,才接这项目。


性能目标在上下级眼中根本不一样,而我这样的处理,是希望把性能目标在上下级的脑袋中变得一致。这很重要。


2 测试范围

2.1 需要测试的特性

电商主流程:

2.2 不需要测试的特性

批量业务。

3 准则

3.1 启动准则

  1. 确定系统逻辑架构和部署架构和生产一致。
  2. 确定基础数据和生产一致或按模型缩放。
  3. 确定业务模型可以模拟生产真实业务。
  4. 环境准备完毕,包括:

4.1. 功能验证通过。
4.2. 各组件基础参数梳理并配置正确。
4.3. 压力机到位,并部署完毕。
4.4. 网络配置正确,连接通畅,可以满足压力测试需求。

  1. 测试计划、方案评审完毕。
  2. 架构组、运维组、开发组、测试组及相关专家人员到位。

3.2 结束准则

  1. 达到项目要求的性能需求指标。
  2. 关键性能瓶颈已解决。
  3. 完成性能测试报告和性能调优报告。

3.3 暂停/再启动准则

1. 暂停准则
  • 系统环境变化:举例:系统主机硬件损坏、网络传输时间超长、压力发生器出现损坏、系统主机因别的原因需升级暂停等。
  • 测试环境受到干扰,比如服务器被临时征用,或服务器的其他使用会对测试结果造成干扰。
  • 需要调整测试环境资源,如操作系统、数据库参数等。
  • 该测试机型无法达到规划指标要求。
  • 出现测试风险中列出的问题。

2. 再启动准则

  • 测试中发现问题得以解决。
  • 测试环境恢复正常。
  • 测试风险中出现的问题已解决。
  • 环境调整完毕。

4 业务模型和性能指标

4.1 业务模型/测试模型

这个模型是直接从生产环境中取得的业务比例,通过统计日志就能做到。

有些企业的生产数据都在运维手里,性能团队怎么也得不到,因为没有权限,就连做业务模型的数据都没有。那性能项目可直接终止,因为做了也没多大意义,最多也就是找那些瞎吹牛的架构师和乱写代码的开发人员,犯的一些错而已。

业务模型一般还可以由项目组提供生产上的业务报表,根据业务报表查看业务频繁的交易进行按比例,设计测试模型

业务指标/性能指标

在不清楚项目目标TPS的情况下,我暂定目标TPS为1000。根据经验来说,在这样的硬件环境下,定为1000并不算高,除非是没有合理的软件架构。

5 系统架构图

架构图的重要性:方便测试人员根据架构判断是否存在隐患及问题排除

5.1 系统技术栈

系统技术栈是让我们知道整个架构中用了哪些技术组件。而这些技术组件中有哪些常见的性能瓶颈点,有哪些性能参数,我们都可以在查看技术栈时得到一些相关信息。而在后续的工作中,我们也要整理出相应的关键性能参数配置。


下面这张表格,就是我们在后续案例分析中,会用到的技术栈。我在搭建这个系统时,考虑的是尽量覆盖当前技术市场中的主流技术组件。


5.2 系统逻辑架构图

为后续性能分析的时候,脑子里能有一个业务路径。做性能分析时,要做响应时间的拆分,只有了解逻辑架构图才知道从哪拆到哪。

5.3 系统部署架构图

画部署架构图是为让我们知道有多少节点、多少机器。在执行容量场景时,要有概念,这样的部署架构最大应该可以支持多少的容量上限。

对一些无理的性能需求,你看了部署架构后,就可拒绝。比如说前段时间有个人跟我说,他们有一个CRM系统,在做性能的时候,说要达到1万的并发用户。而实际上,那个系统就算是上线了,总用户数可能都不到1万。


系统部署架构图是不是就是系统各个层用了那些东西,这些是不是都要知道?是的。就是要知道各个层面用了哪些技术组件。同时还要知道业务路径是从哪里到哪里。

根据系统部署架构图,咋就能知道支持多少容量上限?有啥评判方法吗?这个问题,动手实践即知道。对你测试的系统,验证单节点的容量上限是多少,就能大概判断整个架构能支持多少,当然这过程中要有模型的创建过程。如在一个2C 4G机器,我直接用一个post接口做一个insert动作,在我的经验中,大概就是在500-600TPS左右。



相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
分布式计算 NoSQL Java
局部性原理——各类优化的基石(2)
CDN的全称是Content Delivery Network,即内容分发网络(图片来自百度百科) 。CDN常用于大的素材下发,比如图片和视频,你在淘宝上打开一个图片,这个图片其实会就近从CDN机房拉去数据,而不是到阿里的机房拉数据,可以减少阿里机房的出口带宽占用,也可以减少用户加载素材的等待时间。
101 0
|
2月前
|
缓存 监控 前端开发
性能优化方案详解,史上最全,必知必备!
本文详细解析了 9 大必备大厂优化方案,性能优化是一线互联网公司程序员的必备技能,非常重要。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
性能优化方案详解,史上最全,必知必备!
|
5月前
|
缓存 前端开发 JavaScript
优化前端性能:从理论到实践的全面指南
前端性能优化是提升用户体验的关键环节,但这一过程常被技术细节和优化策略所困扰。本文将系统地探讨前端性能优化的理论基础及实践技巧,包括关键性能指标、有效的优化策略、以及常见工具的应用。我们将从最基本的优化方法入手,逐步深入到高级技巧,为开发者提供一套全面的性能提升方案,以实现更快的加载时间、更流畅的用户交互体验。
|
2月前
|
缓存 算法 数据库
性能优化实战——从理论到实践
性能优化实战——从理论到实践
52 1
|
2月前
|
缓存 监控 数据库
接口性能飞跃:一次成功的优化实践
在软件开发中,接口性能优化是一个永恒的话题。一个高效的接口不仅能提升用户体验,还能减轻服务器压力,降低运营成本。本文将分享一次成功的接口优化案例,从问题诊断到解决方案实施,详细介绍我们的优化过程。
44 0
|
3月前
|
安全 虚拟化 UED
探究现代操作系统的架构与挑战
本文旨在深入探讨现代操作系统的核心架构及其面临的主要挑战。通过对操作系统设计原理、关键技术和未来趋势的分析,揭示其在提高系统性能、安全性和用户体验方面的重要性。不同于传统的摘要,本文在摘要部分即引入具体实例和数据支持,力求为读者提供直观且具有说服力的信息。
62 2
|
4月前
|
存储 人工智能 算法
探究现代操作系统的架构与性能优化
本文将深入探讨现代操作系统的核心架构,并重点分析其性能优化的关键策略。我们将从宏观和微观两个角度出发,解释操作系统的基本组成部分及其相互作用,并通过具体实例展示如何通过各种技术手段提升系统性能。无论是软件开发者还是计算机专业的学生,都能从中受益,获得对操作系统更深层次的理解。
|
8月前
|
缓存 编译器 数据处理
【C/C++ 性能优化】循环展开在C++中的艺术:提升性能的策略与实践
【C/C++ 性能优化】循环展开在C++中的艺术:提升性能的策略与实践
769 0
|
8月前
简述几种常用数值方法的优势及适用性
这篇文章简要介绍了几种常见的数值计算方法在解决偏微分方程中的应用。偏微分方程被用来描述自然界的物理现象,而当它们难以直接求解时,数值方法如有限元法(FEM)、有限差分法(FDM)、有限体积法(FVM)和边界元法(BEM)成为常用工具。有限元法适用于复杂问题,但计算量大;有限差分法简单但对复杂几何形状处理困难;有限体积法对网格质量要求低,适合流体力学;边界元法则仅需处理边界,适合边界主导的问题。各种方法各有优劣,常结合实际问题组合使用。例如,云道智造的伏图仿真平台集成多种数值方法,支持多物理场耦合仿真。
411 0
|
8月前
|
存储 缓存 监控
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(场景问题分析+性能影响因素)
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(场景问题分析+性能影响因素)
128 0