架构设计

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

2021-02-15  本文已影响0人  Wales_Kuo

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

背景

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

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

性能测试

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

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

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

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

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

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

  1. Counter(计数器)
    请求次数等
  2. Gauge(测量器)
    瞬时内存占用情况,CPU使用情况等。
  3. Histogram(柱状图)
    响应时间等。
  4. Meters(码表)
    CPU Load数等。
  5. Timers(计时器)
    请求执行时长等。

性能分析

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

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


性能分析

性能优化

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

总结

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

参考

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

上一篇下一篇

猜你喜欢

热点阅读