如何总结软件性能测试分析与调优实践中的调优思想与技术?
摘要:本文主要阐述软件性能测试中的一些调优思想和技术,节选自作者新书《软件性能测试分析与调优实践之路》部分章节归纳。 一、 性能分析与调优思想 -> 关注清哥聊技术公众号,了解更多技术文章 1、性能
本文主要阐述软件性能测试中的一些调优思想和技术,节选自作者新书《软件性能测试分析与调优实践之路》部分章节归纳。
一、 性能分析与调优思想->关注清哥聊技术公众号,了解更多技术文章
1、性能分析调优模型
性能测试除了为获取性能指标外,更多是为了发现性能瓶颈和性能问题,然后对性能问题和瓶颈进行分析和调优,在当今互联网高速发展的时代,性能调优的模型可以归纳总结如下图所示。
系统模型中相关的组件描述如下表所示
组件
描述
网络分发
网络分发是高速发展的互联网时代常用的降低网络拥塞,快速响应用户请求的一种技术手段,最常用的网络分发就是CDN(Content Delivery Network,即内容分发网络),依靠部署在世界各地的边缘服务器,通过中心平台的负载均衡、源服务器内容分发、调度等功能模块,使世界各地用户就近获取所需内容,而不用每次都到中心平台的源服务器获取响应结果,比如南京的用户直接访问部署在南京的边缘服务器,而不需要访问部署在遥远的北方的北京的服务器
Web服务器
Web服务器用于部署Web服务,Web服务器的作用就是负责请求的响应和分发以及静态资源的处理
Web服务
Web服务指运行在Web服务器上的服务程序,最常见的Web服务就是Nginx和Apache
Web Cache
Web Cache指Web层的缓存,一般都是临时缓存HTML、CSS、图像等静态资源文件
应用服务器
应用服务器用于部署应用程序,如Tomcat、WildFly、普通的Java应用程序(如jar包服务),IIS等
应用程序服务
应用程序服务指运行在应用服务器上的程序,比如Java应用,C/C++应用、Python应用,一般用于处理用户的动态请求
应用缓存
应用缓存指应用程序层的缓存服务,常用的应用缓存技术有Redis、Memcached等,这些技术手段也是动态扩展的高并发分布式应用架构中经常使用的技术手段
数据库(DB)
用于数据的存储,可以包括关系型数据库以及NoSql数据库(非关系型数据库),常见的关系型数据库有Mysql、Oracle、Sqlserver、DB2等,常见的NoSql数据库有Hbase、MongoDB、ElasticSearch等
外部系统
指当前系统依赖于其他的外部系统,需要从其他的外部系统中通过二次请求获取数据,外部系统有时候可能会存在很多个
上图中的系统模型是一个互联网中常见的用户请求的分层转发和处理的过程,在性能调优时就是不断采集系统中的性能指标以及系统模型中各层的资源消耗,从中发现性能瓶颈和性能问题,然后对瓶颈和问题进行分析诊断来确定性能调优方案,最后通过性能压测进行验证调优方案是否有效,如果无效继续重复这个过程进行性能分析,直到调优方案有效,瓶颈和问题得到解决。这个过程一般是非常漫长,因为很多时候性能调优方案往往不是一次就能有效或者一次就能解决所有的瓶颈和问题,或者解决了当前的瓶颈和问题,但是继续性能压测又可能会出现新的瓶颈和问题。
转载请注明出处:来源于博客园,作者:张永清,https://www.cnblogs.com/laoqing/p/13660768.html
2、性能分析与调优思想
2.1、分层分析
分层分析指的就是按照系统模型以及系统架构分层按照调用链进行监控分析和问题排查,如下图所示。
分层排查一般需要对系统的应用架构层次以及部署架构非常的熟悉,需要熟悉请求的处理链过程。
分层排查一般需要对每一层建立checklist,然后按照每层的checklist逐一进行分析。
分层排排查效率较低,但是往往能发现更多的性能问题。
分层排查可以自上而下也可以自下而上。
2.2、科学论证
科学论证一般包括发现问题、问题假设、预测、试验论证、分析这5个步骤,如下图所示。
发现问题:指通过性能采集和监控,发现了性能瓶颈或者性能问题,比如并发用户数增大后TPS并不增加、每台应用服务器的CPU消耗相差特别大等。
问题假设:指根据自己的经验判断,假设是某个因素导致了出现瓶颈和问题。
预测:指根据问题假设,预测可能出现的一些现象或者特征。
试验论证:根据预测,去检查预期可能出现的现象或者特征
分析:根据获取到的实际现象或者特征进行分析,判断假设是否正确,如果不正确,就重新按照这个流程进行分析论证。
科学论证法进行性能分析与调优的示例如下图所示。
