《性能测试、分析、优化的方法论.docx》由会员分享,可在线阅读,更多相关《性能测试、分析、优化的方法论.docx(13页珍藏版)》请在优知文库上搜索。
1、前言理论来源于实践又服务于实践,在笔者多年的IT经脸中,性能问题一直是相对复杂的高阶问题,从性能测试到分析再到优化,考验的是工程炖的综合IT技能.一个系统整体的性能牵扯到方方面面,硬件配置、网络配置、操作系统、中间件、应用架构、代码质砧等等都会影响到系统的整体性能,初入性能领域的工程师可能感觉到无从下手。本文主要介绍相关性能测试、分析、优化的方法论。希望通过方法论的学习,可以招助工程师在”杂纷乱的环境下明确性能目标,制定合理可行的性能测试计划,有针对性的进行性能分析,发现系统真正的性俄瓶颈并最终能够进行有效的性能优化.1相关概念介绍1.1软件涌试分类软件测试按照测试阶段、是否运行程序、是否查看
2、源代码以及其他方式,可以用卜图所示来描述软件测试的各种分类,从图中可以看出,请求响应时间为“网络晌应时间”和“应用程序与系统响应时间”之和,具体由七个部分组成,即(Nl招2+N3+N4)+(A1+A2+A3)并发用户效并发用户数也经常被用来作为衡埴系统并发处理能力的指标,并发用户数是指系统可以同时承载的正常使用系统功能的用户数量,这个指标也经常被当作衡量系统处理能力的电要指标。实际上,笼统地将并发用户数的大小作为衡量系统并发处理能力的指标并不是十分科学的,因为并发用户又可以细分为在镂用户数和严格的并发用户。在观用户是指在同一时刻处于登录状态的用户,在线用户数仅仅表明有多少用户处,登录状态,并不
3、能说明这些用户正在进行操作,在某些情况卜.,系统在线用户数可能比较高,但是每秒处理交易数量有可能并不高.严格的并发用户是指在同一时刻执行统一操作的活跌用户”较少的严格并发明户数可能就会给系统造成较大的压力,实际上绝大多数未经过性能测试和未做调优的应用系统,5I0个严格并发用户就能或多或少地给系统造成性能间题。系统用户数是指系统注册的总用户数.三者之间的关系:系统用户数)在线用户数H严格的并发用户数.吞吐量单位时间内处理的客户端请求数盘,直接体现软件系统的性能承我能力。通常情况下,吞吐率可以用“请求数/秒”“页面数/秒”来衡成,从网络角度,吞吐量一般以“字节/秒”来衡量TPS(Transacti
4、onPerSecond)是指每秒钟系统能够处理的交易或者事务的数量,用来衡量系统业务处理能力的重要指标.对于一些日交易量比较大的系统,通常在测试报告中用每秒完成多少万笔或8/12/2.1小时完成多少万电交易来描述系统的业务处理能力,这样可以感觉更直观。大体来说,对于交互式应用,用户直接的体验是响应时间,通过并发用户数和响应时间可以确定系统的性能规划,但对于非交互式应用,用“吞叶量”来描述我们对系统性俄的期望会更加合理.对于交互式应用来说,吞吐量指标反映的是服务战承受的压力.在容fit规划的测试中,吞吐量是个重点关注的指标,因为它能钓说明系统级别的负我能力。另外,在性能诩优的过程中,吞吐量指标也
5、有市要的价值.如在WCb系统的性能测试过程中,吞吐量以请求数/秒来体现,吞吐量指标可以在两个方面发挥左右:用于协助设计性能测试场景,以及衡量性能测试场景是否达到了预期的实际目标.用于协助分析性於粒颈,吞吐量的限制是性能版颈的一种包耍发现形式,因此,由针时性的对吞吐币进行测试,可以尽快定位到性能瓶颈所在位置。比如说,RBl(rapidbottleneckidentify)方法就主要通过吞吐量测试发现性能瓶颈.2性能测试方法论2.1性能窝诚方法2.1.1RBI(rapidbottleneckidentify)方法RBl(rapidbottleneckidentify)方法是EmPiriX公司提出的
6、一种用于快速识别系统性能瓶颈的方法。该方法基于以卜一些事实:1.发现的80%系统的性能瓶颈都由吞吐盘制约.2.并发用户数和吞吐量瓶颈之间存在一定的关联.3.采用吞吐量测试可以更快速的定位问题。RBl方法首先访问服务器上的小法面和简单应用,从应用服务器,网络等菸础的层面上了解系统吞吐量表现,其次选择不同的场景,设定不同的并发用户数,使其吞吐量保持基本一致的增长趋势,通过不断增加并发用户数和吞叶t观察系统的性货表现.在确定具体的性俄视颈时,RBI将性能瓶颈的定位按照一种“自下而上”的分析方式进行分析,首先确定是由并发还是由吞吐M引发的性能表现限制,然后从网络,数据库,应用服务器和代码本身4个环节确
7、定系统性能具体的瓶颈,RBl方法在性能瓶颈的定位过程中能发挥良好的作用,其对性能分析和瓶颈定位有很强的借鉴意义。2.1.2性能下降曲线分析法性链下降曲线实际上描述的是性般随客户数量增加而出现下降趋势的曲线,这里的性能可以是响应时间,也可以是吞吐砧。aesb三.弓dqnoBUlSectionA31.Ighteruserloadzone.SectionB-Heavyloadzone.SectionC=BuckIezone性能曲线大体分成以卜几个部分:i.性能平坦区在不进行性能调优的情况卜.所能期望达到的最佳性能.这个区域可以被用来做性能基线或者benchmark.2.压力区应用出现性能轻微下肾的地
8、方。典理的,最大的建议用户负我是压力区域的开始。3.性能拐点性能开始急刷下降的点。这几个区域实际上明确标识了系统性能最优秀的区间系统性能开始变林的区间,以及性能出现急剧卜降的点.对于性能测试来说,找到这些区间和拐点,就可以找到性般Si颈产生的地方.2.2压力费试工具针对不同场景,一般有不同层面的性能测试工具。系统层面,比如1.inUX环境下,针时不同的系统组件存在不同的系统压测工具。最常见的是系统的SySbenCh组件包所包含的工具。下图是性能领域领域专家BrendanGregg的提供IinuXsystembenchtools图.供参考。命令的详细用法可以通过num查阅.gccIlvmOper
9、atingSyslmsysbenchwrkjmeteropenssl*ApplicationsFSFileSystemsolumoManagerBlockDeviceInterlaceIPHardwaresysbenchUnixBenchSystom1.ibrariesCPUSystemCallInterfaceImbenchKKVirtualSOCkotSTCPJDPEthernetDeviceDnversprfbnchfioddIUOBus_ithpng3ExpanderInterconnectI0BrtSe】iperfttcpDRAMUOControllerInterlaceTransp
10、ortsDiskDiskNetworkControllerPOrtIPortPingtraceroutemtrpchar应用层面,目前web应用整体一般采用IUadrUnner或者Jmeter进行压力测试.(IoadrUnner可以通过录制掾作自动生成测试脚本.Jmeter可以使用badboy录制操作步骤,生成jmeter运行脚本)。对于没有web的些后端应用,特别是暴于webservice的微服务,一般采用soapui或者postman进行压力测试(SoaPUi和postman的另一个强大功能是可以根据测试结果自动创建桩代码服务器,这在存在大量关联应用的环境F.尤为有用).2.3性能观窝工具
11、在1.inUXM,境下,存在不同层面的性能观测工具,用于分析不同层面的系统性能。比如常见的nmon、top命令用于系统全局性的观测,sarHj于统计性的观测”下面是BrendanGre即提供的图,供参考。stracIsofpcstatpidstatSystemHardwarenetstatsysdig1/OControIIeriostatIotopVFSSchedulerFileSystemsDeviceperftiptopExpanderInterconnectVirtualMemoryPerfftracstapIttngbCC(BPF)bpftrace3VolumeManagOrBlock
12、DeviceIntodacoSystemCallInterfaceTCPJDPDDfcSwap;perftatPUVarious:sar/procdstatdmesgturbostatrdmsrCPUtopps._Pidt*tMemoryBus,vmstatslabtopfreeB?dgeIptraftcpdumpIDRAMnumastatswaponNetworkControllernicstatnetstatInterfaceTransports-nNFS-nNFSDDeviceDriversXnUnVoumeManagefIP;virtualBlockDeviceInterfaceEth
13、ernet、Memory、I/OController-nSOCK-nTCPOperatngSystem-n-nS0CK6-nETCP-nUDP-n、*-v.中间件、数据库层面也有类似工具1WAS(IBMWebSphereApplicationServer),就有自带的TPY(TivoliPerformanceViewer)IXxxSlAtBU,即幽aWXSgJshX4FfMFdS4MI10:17:339.810:17:28981017239810UJ98IOa1398IOiPOS9.810:17:039.810:16S898IOrU$39.810:16“90SJUOIIxoI1.PnIrifi
14、iMntfrtr*ervrri期靴5面更朋!修在女Bxa三。工憔EPlCg储财B*11FNuUVX图,匿阳VSA白UPI“n.伊=rx)ae用11ArqACag*王口DrCCrv01g*xecg*lCif.s.口川ME9H13s三l3箸冷999999999夕卜部监控工具PTT(IebSphereApplicationServerPerformanceTuningToolkit)者找到性能瓶颈的可疑点。24性能分析方法2.4.1AdHOC核对清单法当需要检查和调试系统时,技术支持人员通常会花一点时间一步步地过一遍核对清电”一个典型的场J.在产M环境部署新的服务器或应用时,技术支持人员会花半天的时
15、间来核查塔系统在真实压力下的常见问即,该类核对清单就是RdHoC(基于对该系统类型的经验和之前所遇到的问题所罗列的清单)举个例子.如下是核对清单中的一项:运行iostat-xl检查mrait列.如果该列在负载下持续超过10(ms),那么说明磁盘太慢或是磁盘过城份核时清电会包含很多这样的板杳项目,这类清电能在最短的时间内提供鼓大的价值,一般需要频繁更新以保证反映当前状态。这类清单处理的多是脩及方法容易记录的问侬,例如设置可调参数.而不是针对源代码或环境做定制的修更.AdHoC核对清单能有效保证所有人都知道如何检查最粕桂的问题.能覆旗到所有显而易见的问题.核对清华必须写得湎楚而规范,详细说明如何辨别每一个问题和如何做修包。举例:Bre