架构设计70-质量管理02-性能优化01-介绍

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 架构设计70-质量管理02-性能优化01-介绍

架构设计系列文章,请参见连接。

背景

性能优化是技术治理的一部分,也是体现出技术人员真正价值的工作。从经验来看对于性能优化的认识与过程了解影响着系统的可持续发展的能力,正因如此性能优化就决定了系统是否可以有序的发展为一个优良的系统。在性能优化过程中对于系统中瓶颈的识别以及解决就成了性能优化的需求与目标。

性能优化会有几篇文章,分别说明性能优化的不同的内容,包括:环境定义,测试策略,测试过程,测试工具,优化办法。而对于性能优化来说整体步骤可以简单的划分为:$\color{red}{性能测试}$->$\color{red}{性能分析}$->$\color{red}{性能优化}$。

性能测试

性能优化过程中性能测试是发现问题的过程,是性能优化的先决条件。根据克努特优化原则:过早优化是万恶之源。在没有实际数据指导的情况下就开启优化过程是很不明智的过程,而且很容易方向跑偏。所以,必须在明确的数据作为支撑的情况下再开始进行性能优化过程。

虽然经常能够听到性能测试这个词,但是在这个词背后具体包含哪些内容,在未经过深入了解时也不可能一目了然的知道。这里就本着技术的深度决定着成就的高度的态度,重新挖掘一下性能测试的内容。

  • 性能测试定义

性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

  • 性能测试分类

下面一段来自百度百科中《性能测试》。根据不同的测试目的,性能测试可以分为多种类型,常见的有如下几类:

  • 负载测试(Load Testing):负载测试是一种主要为了测试软件系统是否达到需求文档设计的目标,譬如软件在一定时期内,最大支持多少并发用户数,软件请求出错率等,测试的主要是软件系统的性能。
  • 压力测试(Stress Testing):强度测试也就是压力测试,压力测试主要是为了测试硬件系统是否达到需求文档设计的性能目标,譬如在一定时期内,系统的cpu利用率,内存使用率,磁盘I/O吞吐率,网络吞吐量等,压力测试和负载测试最大的差别在于测试目的不同。
  • 容量测试(Volume Testing):确定系统最大承受量,譬如系统最大用户数,最大存储量,最多处理的数据流量等。
  • 性能测试类型:

下面一段来自百度百科中《性能测试》。性能测试中包含以下测试类型:

  • 基准测试:比较新的或未知测试对象与已知参照标准(如现有软件或评测标准)的性能。
  • 争用测试:核实测试对象对于多个主角对相同资源(数据记录、内存等)的请求的处理是否可以接受。
  • 性能配置:核实在操作条件保持不变的情况下,测试对象在使用不同配置时其性能行为的可接受性。
  • 负载测试:核实在保持配置不变的情况下,测试对象在不同操作条件(如不同用户数、事务数等)下性能行为的可接受性。
  • 强度测试:核实测试对象性能行为在异常或极端条件(如资源减少或用户数过多)之下的可接受性。
  • 容量测试:核实测试用户同时使用软件程序的最大数量。
  • 性能评价:通常是和用户代表一起协作并且以多级方法执行的。
  • 性能指标

4.DevOps-4.度量指标--0.度量指标(Metrics)》中已经描述过指标体系的建立与使用过程,而针对性能来说指标几乎已经固定为几个特殊的指标。不过还是有很多性能指标可以为性能分析提供很多帮助,在度量指标中我们讨论过指标类型可以分为:

  1. Counter(计数器)

请求次数等

  1. Gauge(测量器)

瞬时内存占用情况,CPU使用情况等。

  1. Histogram(柱状图)

响应时间等。

  1. Meters(码表)

CPU Load数等。

  1. Timers(计时器)

请求执行时长等。

  • 其他

  • 测试内容

具像化测试内容,例如对于区块链交易频次测试,那肯定是对整个区块链系统中数据同步的过程进行测试。对IoT环境进行测试就要理清设备接入时使用的协议是那种,做通信的就要对于系统的整体交换速率作为系统性能表现。

  • 环境定义

测试环境与被测环境的定义确定着要优化的范围。

性能分析

性能分析是针对性能测试结果数据或着性能测试过程数据进行分析已找到性能瓶颈的方法。在性能测试完成后不可分析就代表着不可以进行优化。故结果的可分析性至关重要。现在性能分析已经有了长足的进步,有很多现成的程序可以帮助进行性能分析的工作。而且还可以可视化的展示分析结果。不过有些时候仍然需要进行人工的分析工作。性能分析的主要目标是可视化。

在借助现阶段流行的《可观测性》的实现方式之后,性能分析过程可以分为两类:APM,事后分析类。APM可以得到运行期间的运行情况,而对性能测试结果进行分析可以得到整体用户直观感受。一般情况下会结合两种方式进行。
性能分析

性能优化

针对性能分析的结果进行优化,不管是找到业务问题还是技术问题都需要在这里输出相关的解决方案。在技术上有一些通用的调优方案,例如:阿里PTS上描述的性能测试 PTS > 性能测试基础知识 > 测试分析及调优,有赞的一次假期故障引发的性能优化思考

总结

本文最主要说明的内容是性能优化的步骤以及步骤中可能的内容,还有很多细节未明确出来。例如:通用性能指标体系TPCC、SPEC、SAP SD,性能分析过程中的分析方法,性能调优过程中的验证过程等,性能调优架构级别调优方法等等。这些都会在后面的文章中进行更详细的讨论。

参考

过早优化是万恶之源——克努特优化原则 (Knuth's optimization principle)
性能测试的概念
性能优化指南:性能优化的一般性原则与方法
常用性能测试指标解读与使用价值分析
一次假期故障引发的性能优化思考
【性能系列连载一】开篇:性能测试不可不知的“干货”
Web「性能测试」知多少?
性能分析
测试分析及调优

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
11月前
|
消息中间件 缓存 测试技术
企业微信针对百万级组织架构的客户端性能优化实践
本文主要分享的是企业微信在百对百万级大规模组织架构(后文简称大架构)时,是如何对客户端进行性能优化过程的,希望带给你启发。
69 0
|
3月前
|
缓存 监控 算法
Python性能优化面试:代码级、架构级与系统级优化
【4月更文挑战第19天】本文探讨了Python性能优化面试的重点,包括代码级、架构级和系统级优化。代码级优化涉及时间复杂度、空间复杂度分析,使用内置数据结构和性能分析工具。易错点包括过度优化和滥用全局变量。架构级优化关注异步编程、缓存策略和分布式系统,强调合理利用异步和缓存。系统级优化则涵盖操作系统原理、Python虚拟机优化和服务器调优,需注意监控系统资源和使用编译器加速。面试者应全面理解这些层面,以提高程序性能和面试竞争力。
37 1
Python性能优化面试:代码级、架构级与系统级优化
|
3月前
|
缓存 负载均衡 API
微服务架构下的API网关性能优化实践
【5月更文挑战第10天】在微服务架构中,API网关作为前端和后端服务之间的关键枢纽,其性能直接影响到整个系统的响应速度和稳定性。本文将探讨在高并发场景下,如何通过缓存策略、负载均衡、异步处理等技术手段对API网关进行性能优化,以确保用户体验和服务的可靠性。
|
3月前
|
缓存 负载均衡 Java
基于微服务架构的后端性能优化研究
基于微服务架构的后端性能优化研究
48 0
|
3月前
|
消息中间件 缓存 API
微服务架构下的API网关性能优化实践
在现代的软件开发中,微服务架构因其灵活性和可扩展性被广泛采用。随着服务的细分与增多,API网关作为微服务架构中的关键组件,承担着请求路由、负载均衡、权限校验等重要职责。然而,随着流量的增长和业务复杂度的提升,API网关很容易成为性能瓶颈。本文将深入探讨API网关在微服务环境中的性能优化策略,包括缓存机制、连接池管理、异步处理等方面的具体实现,旨在为开发者提供实用的性能提升指导。
|
3月前
|
设计模式 缓存 Java
Java新时代:微服务架构下的性能优化实践
【2月更文挑战第12天】 在当今快速发展的软件工程领域,微服务架构因其灵活性和可扩展性而成为主流。随着应用程序变得日益复杂,性能优化成为了开发者不可回避的挑战。本文将探讨在Java环境下,利用微服务架构进行性能优化的策略和实践。我们将从微服务的基本概念出发,深入分析如何通过设计模式、数据库优化、缓存机制以及并发处理等手段,有效提升Java应用的性能。此外,本文还将分享一些实际案例,以帮助读者更好地理解和应用这些优化技术。
|
3月前
|
SQL 缓存 关系型数据库
从架构师角度全局理解Mysql性能优化
从架构师角度全局理解Mysql性能优化
|
3月前
|
Kubernetes Java 数据库
Java性能优化: 什么是微服务架构,与单体架构相比有什么优势?
Java性能优化: 什么是微服务架构,与单体架构相比有什么优势?
99 1
|
3月前
|
SQL 缓存 关系型数据库
MySQL(终结篇一)- 性能优化(配置及架构)
MySQL(终结篇一)- 性能优化(配置及架构)
691 0
|
10月前
|
负载均衡 安全 微服务
服务网格和性能优化:介绍如何通过服务网格提高微服务架构的性能和可扩展性
服务网格和性能优化:介绍如何通过服务网格提高微服务架构的性能和可扩展性
83 0

热门文章

最新文章