随着软件系统的规模越来越大,对性能的要求也越来越高,对性能测试的要求也越来越高。但是,仅通过性能测试很难满足当前软件系统的性能需求,因此需要做更多与性能相关的工作。对于这一系列与性能相关的工作,我们称之为性能工程。性能工程是发现和解决软件系统性能问题最重要的方法体系和技术手段。一般包括以下几个部分:性能测试、性能剖析、性能分析、性能优化和性能规划(容量规划)。性能测试:通过不同类型的测试,获取系统在不同情况下的性能,包括各种外部性能指标,是否满足实际性能要求等。辅助性能分析的工具。性能分析:通过对性能测试、性能剖析等得到的各种数据进行分析,找出性能瓶颈及其原因,辅助性能优化。性能优化:通过各种技术和业务手段,尽可能消除性能瓶颈,从而提升系统性能。性能规划:通过不同配置下不同规模的性能测试,获取系统性能变化规律。并根据不同的性能需求,使用此规则来规划服务器资源和容量,以满足不同的性能需求。在性能工程中,技术层面上最难的部分是性能分析和性能优化,而整体上最繁琐复杂的部分是性能规划,因为它包括性能测试、基础设施、性能建模和资源协调。工作,甚至需要做系统架构调整以满足相应的规划工作。性能规划对于用户数量较少的中小型系统,由于单机或少量多机即可满足所有业务性能需求,一般不需要进行性能规划。但是,随着业务性能要求的提高,对产品环境的资源要求也相应增加。但是,为了避免加入过多的资源,尽可能减少资源的浪费,需要找到满足业务性能需求的最小资源量。通过性能规划,可以找到这个最小资源量。其次,有些项目的生产环境和测试环境的资源是不一样的,甚至有巨大的差异。通过性能规划的一系列实践,可以通过测试环境的性能指标来推测或计算生产环境中的大概性能。以此来判断当前的产品环境是否满足业务性能要求。在传统的现代弹性云平台出现之前,如果要部署服务器系统,必须购买固定配置和数量的物理机,应用服务器扩展到多台机器相对困难,成本高也高。传统的数据库系统更难扩展。虽然以NewSQL为代表的TiDB等数据库已经支持横向扩展的能力,但是和应用服务器一样,横向扩展的硬件难度和成本都比较高。因此,传统基础设施在性能规划上存在很多痛点和难点。现代弹性云平台出现后,其上的硬件配置和服务实例数量可以很容易地改变,数据库的硬件能力也可以改变。因此,在这种基础架构下,可以更轻松地进行性能规划。实践在进行性能规划之前,必须熟悉整个系统的架构,并对网关、应用服务器、数据库三个关键点进行隔离分析。以目前的技术,很难对现有的网关系统本身进行横向扩展,只能在单机上进行扩展,包括升级CPU和内存。对于应用服务器,单机配置最好与生产环境中的实例保持一致,只更改服务器数量进行性能规划和测试。对于不能横向扩展的应用系统,一般不需要进行性能规划。最后,对于数据库,如果数据库系统不能横向扩展,可以使用云平台自带的数据库系统,因为现在大部分云数据库系统都支持扩展数据库的单机能力,比如AmazonRDS和AzureSQL数据库。如果使用的是分布式数据库,可以像应用服务系统一样在云平台上横向扩展。只有根据业务绩效需求,尽可能针对这三个关键点进行绩效规划,才能实现真正的全方位绩效规划。步骤:做性能规划,一般有以下六个基本步骤:准备测试环境,选择测试指标,建立测试模型,变更测试指标,进行性能测试,分析测试报告,拟合测试数据,发现性能变化,以及规划产品环境性能首先,准备测试环境,最好使用云平台作为测试环境。如果无法使用云平台,需要准备足够数量的物理机,获取足够的拟合数据。选择性能指标和建立测试模型是最关键和最重要的两个步骤。它们的正确性和有效性直接影响绩效规划的工作量和结果的有效性。针对不同的业务需求和系统架构,关键指标也不同。例如,对于数据密集型系统,一般会选择ResponseTime和TPS作为关键指标;对于数据存储系统,选择吞吐量和IO作为关键指标。关键指标。对于测试模型,可以考虑是基于独立功能还是基于场景。不管你是否需要ThinkTime,下图是一个简单的测试模型的例子:改变测试指标和进行性能测试是最繁琐的步骤,因为你需要改变各种配置和指标来测试,收集各种测试结果数据.最后两步是根据业务绩效需求,通过分析和数学拟合,生成绩效规划结果。最后,为了验证性能规划的有效性,需要在产品环境中使用各种监控手段,如应用系统埋点采集或日志采集、服务器探针等,获取应用系统的各种性能数据和服务器,以验证性能规划。效力。性能规划中拟合的步骤之一是对测试数据进行拟合。它是一种数学拟合方法。将测试数据绘制出来后,得到一条曲线和对应的数学函数,然后就可以通过这个数学函数来估计性能。系统的变化规则,从而规划硬件资源和系统配置。下表是一个测试结果数据,以实例数为变化指标,以特定时间段内完成的请求数为观察指标:然后将这些数据生成哈希图(生成下面的demo图通过MSExcel,以及任何其他数学工具或库生成以下演示图形,如SageMath、Mathematica等)拟合的方式有很多种,如指数拟合、线性拟合和多项式拟合。一般来说,多项式拟合可以获得更准确的结果。下面三幅图是Excel生成的多项式拟合(含方程)。其中,R=1表示多项式完全符合所有坐标点,斜率为正。但由于测试结果数据本身存在一定的不确定性,因此一般通过寻找R尽可能接近1、曲线尽可能平滑的拟合结果来计算。比如下图中,我会选择第一张图中的拟合函数来计算。Fitting图1:Fitting图2:Fitting图3:一般在做性能规划测试的时候,也可以选择下图中的指标进行测试,得到相应的数据进行二维拟合:除二维拟合外,还有也可以进行三维拟合。下图是一般情况下做三维拟合需要注意和改变的指标:总结性能规划在大型应用服务系统中越来越重要,因为它可以发现系统中的情况常规的性能测试,很难发现一些性能瓶颈,找出性能规律,根据不同的业务性能需求规划产品环境的资源和配置,从而有效防止服务器过载或节省资源和资源产品环境。成本,一举多得。
