《学习性能测试、分析、优化的方法.docx》由会员分享,可在线阅读,更多相关《学习性能测试、分析、优化的方法.docx(14页珍藏版)》请在优知文库上搜索。
1、前言理论来源于实践乂服务于实践,在W者多年的IT经验中,性能何时一直是相时发杂的高阶问题,从性能测试到分析再到优化,考验的是工程师的踪合IT技能。一个系统整体的性般牵扯到方方面面,硬件配置、网络配置、操作系统、中间件、应用架构、代码侦量等等都会影响到系统的整体性能,初入性能领域的工程师可能感觉到无从下手。本文主要介绍相关性能测试、分析、优化的方法论。希望通过方法论的学习,可以帮助工程师在更杂纷乱的环境下明确性链目标,制定合理可行的性链测试计划,有针对性的进行性能分析,发现系统真正的性能胭预,并最终能够进行有效的性能优化.1相关概念介绍1.1软件制试分类软件测试按照测试阶段、是否运行程序、是否查
2、看源代码以及其他方式,可以用下图所示来描述软件测试的各种分类。小元测试集成涛试就件测试1.2性能制试分类系统的性能是一个很大的概念,覆溢而非常广泛,对个软科系统而言,包括:执行效率、资源占用、系统稔定性、安全性、兼容性、可靠性、可扩展性等。性链测试是为描述测试对象与性能相关的特征并对其进行评价,而实施和执行的一类测i.它主要通过自动化的测试工具模拟多种正常、峰值以及异常负我条件来时系统的各项性能指标进行测试.通常大家把性能测试、负载测试、压力测试统称为性能测试,1.基准测试:在给系统施加较低压力时,查看系线的运行状况并记录相关数作为基础.2.负效测试:是指对系统不断地增加压力或增加一定压力下的
3、持续时间,直到系统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等。3.压力测试:压力测试是评估系统处于或越过预期负载时的运行情况,关注点在于系统在峰值负载或超出收大载荷情况下的处理能力.4.稳定性测试:在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否梗定.5.并发测试:测试多个用户同时访阿同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问超。1.3不同视角下的软件性能用户视角的软件性能从用户的角度来说,软件性能就是用户操作软件的响应时间;用户所体会到的“响应时间”既有客观的成分,也有主观的成分.例如,用户执行了某个操作,谈操作返回大In数据
4、,从客观的角度来说,事务的结束应该是系统返回所有的数据响应时间应该是从用户操作开始到所有数据返回完成的整个耗时;但从用户的主观速知来说,如果采用一种优化的数据呈现策略,当少部分数据返El之后就立刻将数据呈现在用户面前,则用户感受到的响应时Wl就会远远小于实际的事务响应时间。对于典型的交互系统,2s之内的响应时间通常是被用户所接受的;如果响应时间为5s时.用户的满意程度将会受到定的影响;当交易响应时间为IOsItf,那么大多数用户将会不耐烦地关闭交易页面,显然这是作常柑林的用户体验.管理员视角的软件性能管理员视角有时候也就是运维人员的视角,对于运维人员来说响应时间当然也很重要,运维方关注更多的是
5、系统运行是否平稳(响应时间或者交易吞吐砧是否有皿烈波动),CPU、内存、存储等关键资源是否充足,另外对于银行这样拥有海量用户和较高交易吞吐地的企业来说,系统是否具有较好的可扩展性是很关檀的(这决定了是否能够通过资源调配和扩充平稳度过业务高蜂),包括:1.系统的响应时间2.系统状态的相关信息,lCPU.内存、应用服务器状态、JVM可用内存、数据库的状态等3.系统的可扩展性,即处理并发的能力4.系统可能的最大容后和可能的性能瓶颈,通过更换碾些设笛或是进行哪组扩展能够提高系统的性能.5.长时间运行是否足鲂稳定,是否能够不间断地提供业务服务等开发视角的软件性能开发人员对性能的关注点更多的是系统投产上线
6、后,响应时间是否达到r用户需求说明书中的相关要求,此外,开发人员更加关注编写代码的运行效率、数据库访问是否按照设想的访问路径以及索引设巴是否合理等,包括用户和管理员关心的软件性能.如何通过调整设计和代码实现,或是如何通过调整系统设置等方法提高软件的性能表现,如何发现并解决软件设计和开发过程中产生的由于多用户访问引发的软件障,也就是通常所说的“性能瓶颈”和系统中存在的在大fit用户访问时表现出来的缺陷。1.4性能衡量指标哨应时间请求响应时间指的是客户端发出请求到科到响应的整个过程的时间。这个过程是从客户湘发起一个请求开始计时,到,客户前接收到从服务洪端返IUl的响应结果为止计时结束.在某些工具中
7、,请求响应时间通常会被称为TT1.B,即TimetOl.astByte,意思是从发起一个请求开始,到客户端收到最后一个字节的响应所耗费的时间。请求响应时间的单位一般为“杪(三)”或者亳秒(ms)”.请求响应时间的分斛如卜图所示:从图中可以看出,请求响应时间为“网络响应时间”和“应用程序与系统响应时间”之和,具体由七个部分组成,即(Nl+N2+N3+N4)+(A1+A2+A3).并发用户数并发用户数也经常被用来作为衡值系统并发处理能力的指标,并发用户数是指系统可以同时承载的正常使用系统功他的用户数V。这个指标也经常被当作衡量系统处理能力的市要指标。实际上,笼统地将并发用户数的大小作为衡量系统并发
8、处理能力的指标并不是十分科学的,因为并发用户又可以细分为在税用户数和严格的并发用户。在税用户是指在同一时刻处于登录状态的用户,在线用户数仅仅表明有多少用户处于登录状态并不能说明这些用户正在进行操作,在某些情况下,系统在线用户数可俄比较高,但是每秒处理交易数量有可能并不高,严格的并发用户是指在同一时刻执行统一操作的活跃用户。较少的严格并发明户数可能就仑给系统造成较大的乐力,实际上绝大多数未经过性能测试和未做调优的应用系统,5-10个严格并发用户就能或多或少地给系统造成性能间超。系统用户数是指系统注册的总用户数,三者之间的关系:系统用户数在线用户数个严格的并发用户数.吞吐量单位时间内处理的客户端请
9、求数直接体现软件系统的性能承载能力。通常情况下,吞吐率可以用“请求数,,秒”“页面数/秒”来衡成,从网络角度,吞吐量一般以“字节/秒”来衡量.TPS(TransectionPerSecond)是指每秒钟系统能够处理的交易或者事务的数量,用来衡fit系统业务处理施力的至要指标.对于一些日交易量比较大的系统,通常在测试报告中用年秒完成多少万整或8/12/24小时完成多少万笔交易来描述系统的业务处理能力.这样Ur以感觉更直观.人体来说,对干交互式应用,用户直接的体验是响应时间,通过并发用户数和响应时间可以确定系统的性能规划,但对于非交互式应用,用“吞吐量”来描述我们对系统性能的期望会更加合理。对于交
10、互式应用来说,吞吐量指标反映的是服务着承受的压力.在容曜规划的测试中,吞吐量是一个重点关注的指标,因为它能够说明系统级别的负载能力.另外,住性能调优的过程中,吞吐量指标也有市要的价值。如在Web系统的性能测试过程中,吞吐量以请求数/秒来体现,吞吐量指标可以在两个方面发挥左右:用于协助设计性能测试场景,以及衡做性能测试场景是否达到预期的实际目标,用于协助分析性能瓶颈,吞吐城的限制是性能瓶颈的一种重要表现形式,因此,由针对性的对吞吐城进行测试,可以尽快定位到性能瓶颈所在位置.比如说,RBI(rapidbottleneckidentify)方法就主要通过吞吐俄测试发现性能瓶颈,2性能测试方法论2.1
11、性能清试方法2.1.1RBI(rapidbottleneckidentify)方法RBI(rapidbottleneckidentify)方法是Eepirix公司提出的一种用于快速识别系统性能瓶颈的方法。该方法基于以下一些,实:1.发现的80%系统的性能瓶颈都由吞吐量制约。2.并发用户数和存吐量瓶颈之间存在一定的关联.3.采用吞吐量测试可以更快速的定位问SS,.RBl方法首先访问服务器上的小页面和简限应用,从应用服务器,网络等基础的层面上了解系统吞吐量表现。其次选择不同的场景,设定不同的并发用户数使其吞吐量保持基本一致的增长趋势,通过不断增加并发用户数和吞吐St观察系统的性能表现。在确定具体的
12、性能机颈时,RBI将性能胭我的定位按照一种“自下而上”的分析方式遂行分析,首先确定是由并发还是由吞吐量弓I发的性能表现限制,然后从网络,数据库,应用服务器和代码本身4个环门确定系统性链具体的瓶颈.RBl方法在性能照颈的定位过程中能发挥良好的作用,其对性能分析和瓶颈定位有很强的借鉴意义。SaturationPointIZBucklePointSectionSectionABQ封gWdIIen24USectionC1502.1.2性能下降曲线分析法性潴下降曲线实际上描述的是性能随客户数量增加而出现下降趋势的曲线。这里的性能可以是响应时间,也可以是吞吐屈,S6060WO110120ll1Concur
13、rentUsrsSectionA-1.lghteruserloadzone.SectionB-Heavyloadzone.SectionC-Bucklezone性能曲线大体分成以卜几个部分:1.性能平坦区在不进行性能调优的情况卜.所能期望达到的最佳性能.这个区域可以被用来做性能基线或者benchmark.2.压力区应用出现性能轻微下降的地方。典型的,城大的建议用户负载是压力区域的开始。3.性能初点性能开始急剧卜降的点。这几个区域实际上明确标识了系统性能最优秀的区间,系统性能开始变坏的区间,以及性能出现急剧下肾的点,对于性能测试来说,找到这些区间和拐点,就可以找到性能脱颈产生的地方,2.2压力制
14、试工具针对不同场嵬,一般有不同层面的性豌测试工具.系统层面,比如1.inUX环境下,针对不同的系统组件存在不同的系统压测工具。最常见的是系统的SySbeneh组件包所包含的工具。下图是性能领域领域专家BrendanGregg的提供IinUXsystembenchtoolsRR.供参考。命令的详细用法可以通过num查阅.1.inuxFdonnanoeBenchmarkToolsHardwvegccllvmIVOBusprfbnch_*ijdram1hping3gBnd90IpeirfttcpsysbnchZzZUniXBencha*OpefabnflSystemysbnchwrkjmeterop11sslCPUCPUInterconnectSExpanderlntexxvectatslabtopfr