负载压力测试工具实践_第1页
负载压力测试工具实践_第2页
负载压力测试工具实践_第3页
负载压力测试工具实践_第4页
负载压力测试工具实践_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

负载压力测试工具实践October231目录一、负载压力测试工具二、负载压力测试流程三、负载压力测试心得四、负载压力测试实践2负载压力测试工具HP公司〔原MI〕LoadrunnerIBM公司〔原Rational〕RationalPerformanceTesterCompuware公司QAloadMicrosoft公司WAS3负载压力测试工具体系结构图4负载压力测试工具应用组件5负载压力测试工具VuGen虚拟用户生成器(VUGen)完成脚本记录。VUGen是在客户桌面上运行的部件,它捕获实际客户应用和效劳器之间的通讯。VUGen通过将各种用户请求发送至效劳器来完全模拟一个真实用户的实际行为。VUGen能支持Netscape和InternetExplorer浏览器,或任何其它第三方的支持代理效劳器设置的浏览器。完成录制后,一个测试脚本就生成了6负载压力测试工具ControllerLoadRunner控制器提供一组性能监测器,在负载测试过程中监测系统各层面的每一部件的性能。通过记录整个系统所有性能数据,测试人员可以将这些信息对应最终用户的负载和响应时间,以定位瓶颈所在。LoadRunner为网络、网络效劳器和大多数的常规Web效劳器,应用效劳器和数据库效劳器提供性能监测。性能监测以一种完全不干扰被测系统的方式进行,最大限度地减少对性能的影响。所有的这些监测器都与硬件、操作系统无关,特别是不需要在目标效劳器上安装任何探针软件。7负载压力测试工具AnalysisLoadRunner的Analysis提供一个集成环境,集中收集所有在测试周期中产生的数据。由于这个工具功能强大且使用简单,测试人员可以创立跨场景的图表数据比较,增强数据分析的能力和速度。8负载压力测试工具LoadGeneratoragentLoadGenerator是负载生成器,在多台机器上运行vuService方式运行agent可以运行全部类型〔GUI(WinRunner,QuickTestProfessional,etc.)orGUI-likescripts(Citrix,SAPGUI,etc.)的vuser脚本,运行magentservice.exe程序。Process方式运行agent可以模拟更多vuser,但是不能够运行〔GUIandSAPVusers〕,运行magentproc.exe程序。两种模式切换cd\PROGRA~1\MERCUR~1\MERCUR~1\LAUNCH~1\bin

magentservice.exe-remove;asprocessmagentservice.exe-install;asserver9负载压力测试工具recording&scripting生成的脚本文件位置缺省情况下.htm和资源文件存放在X:\ProgramFiles\MercuryInteractive\LoadRunner\scripts每个脚本运行设置的配置文件vuser.cfg放在每个vuser脚本目录〔thinktime,iterations,log,web〕vuser.usp文件包括了脚本运行逻辑数据文件位置:缺省情况系统保存它们到脚本目录运行结果文件C:\DocumentsandSettings\Tester.LOADTEST\LocalSettings\Temp--Tester.LOADTEST为当前用户名10负载压力测试工具在“虚拟用户发生器”中:执行单用户操作ServerClientApp在“控制台〞中运行已录制的脚本,多个用户并发访问效劳器VirtualUsersServer单用户与并发用户11目录一、负载压力测试工具二、负载压力测试流程三、负载压力测试心得四、负载压力测试实践12负载压力测试流程系统分析建立虚拟用户脚本建立负载测试场景运行测试,同步监测应用性能分析结果13负载压力测试流程系统分析性能测试需求分析测试数据分析测试用例制定系统结构掌握,包括:网络拓扑结构效劳器拓扑结构效劳器负载平衡测试机要求测试工具要求14创立脚本1、选择VirtualUserGenerator,vugen主窗口翻开2、选择File>New3、从ProtocolType列表中选择协议4、点StartRecording按狃负载压力测试流程156、对于win32应用程序:Programtorecord:输入需要记录的win32应用程序ProgramArguments:对上面指定的应用程序指定一个可执行的命令参数,例如:如果上面的应用程序为plus32.exe,你在这里指定一个参数peter@neptune,这个将连接用户peter到效劳器neptune当在开始plus32.exe的时候。WorkingDirectory:为应用程序指定一个工作路径创立脚本5、对于internet应用程序:Programtorecord:选择浏览器或者需要记录的internet应用程序URLAddress:指定一个需要开始的url地址WorkingDirectory:为应用程序指定一个工作路径

负载压力测试流程16创立脚本1、结束录制,转换到vuser_end,执行关闭程序。2、在记录工具条上点StopRecording3、点save来保存记录的局部4、可以将整个脚本保存为压缩文件;可以只保存runtime文件负载压力测试流程17负载压力测试流程知识点_Protocol正确的协议选择将决定着测试能否正常执行并且得到预期的测试结果18负载压力测试流程知识点_transaction用于衡量某个事务的性能,需要在action的开始和结束位置插入这样一个范围,工具运行到该事务的开始点时,工具就会开始计时,直到运行到该事务的结束点,计时结束。19负载压力测试流程知识点_rendezvous是一个并发访问的点,在测试中,可能会要求系统能够承受1000人同时提交数据,可以通过在提交数据操作前面参加集合点,这样当虚拟用户运行到提交数据的集合点时,工具就会检查同时有多少用户运行到集合点,如果不到1000人,工具就会命令已经到集合点的用户在此等待,当在集合点等待的用户到达1000人时,工具命令1000人同时去提交数据,到达并发访问的目的20负载压力测试流程知识点_Parameter用变量代替常量,所有的性能测试尽可能考虑参数化,不参数化的测试结果将不能模拟实际运行情况,导致测试结果出现偏差21负载压力测试流程关联数据CorrelatedDataisdatawhichissenttotheclientformtheserver,andlatersendbacktotheserverbytheclient所谓的关联就是把脚本中某些写死的数据,转变成效劳器所发送的、动态的、每次都不一样的数据。工具提供二种方式找出需要做关联的值:自动关联和手动关联,包括:ManualcorrelationAutomaticcorrelationafterrecordingAutomaticcorrelationduringrecording关联函数:web_reg_save_param22负载压力测试流程自动关联VuGen内建自动关联引擎,可以自动找出需要关联的值,并且使用关联函数建立关联自动关联提供以下二种机制:RulesCorrelation:在录制过程中VuGen会根据制定的规那么,实时自动找出要关联的值。规那么来源有两种:内建、使用者自定CorrelationStudio:那么是在执行脚本后才会建立关联,也就是说当录制完脚本后,脚本至少须被执行过一次才会作用。CorrelationStudio会尝试找出录制时与执行时,效劳器响应内容的差异局部,藉以找出需要关联的数据,并建立关联23负载压力测试流程自动关联RuleCorrelation1、在RecordingOptions菜单,选择InternetProtocol>Correlation,勾选Enablecorrelationduringrecording,启用关联2、假设录制的应用系统属于内建关联规那么的系统,请勾选相对应的应用系统。或者也可以针对录制的应用系统参加新的关联规那么3、设定当工具侦测到符合关联规那么的数据时,要如何处理:跳出一个讯息对话窗口,询问您是否要建立关联直接自动建立关联录制脚本24负载压力测试流程自动关联CorrelationStudioCorrelationStudio会尝试找出录制时与执行时,效劳器响应内容的差异局部,藉以找出需要关联的数据,建立关联使用CorrelationStudio的步骤如下:1、录制脚本并执行2、执行完毕后,VuGen会跳出下面的ScanActionforCorrelation窗口,询问您是否要扫描脚本并建立关联,扫描完后,可以在脚本下方的CorrelationResults中看到扫描的结果3、对其中的扫描进行关联如果没有弹出,需要选择【Tools】->【GeneralOption】选中的Correlation,选中ShowScanforcorrlerationspopupafterreplayofVuser即可25负载压力测试流程手动关联1、录制两份业务执行过程的脚本2、使用WinDiff工具比较两份脚本的区别3、使用web_reg_save_param函数手动建立关联有时候手动关联更可靠26负载压力测试流程手动关联举例找出要捕捉的变量找出要捕捉的变量的左右边界找出文本边界在请求要捕捉变量的页面前,增加web_reg_save_param函数增加parameter名,左右边界等在脚本里对每次出现的该动态变量数值用该参数代替验证是否能正确执行27负载压力测试流程如何找出要捕捉的变量用相同步骤录制2个脚本假设捕捉的动态变量是: --依赖于某输入数据,,重录制时要改变该数据 --不依赖于任何输入数据,那么用相同数据重新录制比较脚本 Tools>ComparewithVuser比较不同的行并高亮显示(wdiff.exe)28负载压力测试流程找出要捕捉的变量的左右边界从wdiff里拷贝第1个脚本的动态变量到notepad中在执行日志中,双击引起错误的行,那么指针跳到脚本树的相关行上并翻开该html页面找出边界(推荐在TREEVIEW中的HTMLView中,而不是在SCRIPTVIEW):翻开查找对话框(Ctrl+F),将wdiff中拷贝的字符串粘贴到查找对话框并进行查找LB应尽可能的唯一,RB不应出现在捕捉的字符串中在录制日志中查找边界29负载压力测试流程找出文本边界在ExecutionLog中查找出现位置:只在回放前Run-TimeSettings里选中了Datareturnedfromserver时生效30负载压力测试流程在脚本中增加函数在请求变量值前增加函数web_reg_save_param()在回放中,当VuGen执行了web_reg_save_param(),发生3件事情:1.VuGen创立parameter2.当下一步执行时,VuGen搜索HTML页面源代码,寻找左右边界中间的文本3.找到变量值后,VuGen将其存到指定parameter中,这样,以后当VuGen遇到脚本里引用了该parameter名后,就插入存储的变量数值31负载压力测试流程在脚本中增加函数如果你不确认在哪步获取了变量值,那么:在ExecutionLog里,查找左边界双击ExecutionLog里的该行,跳到对应的ScripteView或TreeView里对应的位置插入web_reg_save_param()输入parameter名和属性后,点OKVuGen就插入正确了32负载压力测试流程增加函数参数Web_reg_save_param(“param_name〞,〞LB=“,〞RB=“,ORD=“,LAST);命名parameter从HTML中拷贝边界文本增加Executionlog里出现的序号到ORD参数中33负载压力测试流程参数化脚本中的变量值选择Edit>Replace.在FindWhat文本框里拷贝或输入录制时的变量值在ReplaceWith文本框里输入parameter名(必须和web_reg_save_param函数里定义的一样,用{}包围)点FindNext查找当工具找到后,点ReplaceAll按钮34负载压力测试流程35建立负载测试场景1、手动创立一个场景2、面向目标的场景负载压力测试流程36建立负载测试场景通过Schedule的设置完成对性能测试运行设计。如:模拟用户递增的情况;模拟用户自动运行等负载压力测试流程37建立负载测试场景带宽、浏览器、网关等的设置负载压力测试流程38建立负载测试场景测试用机的全面调用〔别忘了“\\测试用机〞用administrator登录〕负载压力测试流程39建立负载测试场景对某个系统进行多个功能同时操作的性能测试同样的脚本在多个测试用机上模拟运行….负载压力测试流程40负载压力测试流程建立负载测试场景可以增加包括效劳器系统资源、应用效劳器的利用情况等的所有视图41负载压力测试流程执行测试在Run选项卡中点击StartScenario运行脚本,脚本运行时添加的计数器将显示时实监测的数据,如图:右上角出现红色的区域,显示有错误出现,或者有失败的事务处理点击Errors行的红色区域,那么弹出所有错误信息的窗口42负载压力测试流程结果分析事件统计报表错误汇总报告整体统计结果43负载压力测试流程结果分析增加一个新的视图:Web资源视图系统资源视图等等44负载压力测试流程结果分析指标的交叉拟合45目录一、负载压力测试工具二、负载压力测试流程三、负载压力测试心得四、负载压力测试实践46负载压力测试心得

具体问题具体分析〔由于不同的应用系统,不同的测试目的,不同的性能关注点〕查找瓶颈时按以下顺序,由易到难效劳器硬件瓶颈-〉网络瓶颈-〉操作系统瓶颈〔参数配置〕-〉效劳器软件瓶颈〔参数配置,数据库,web效劳器等〕-〉应用瓶颈〔SQL语句、数据库设计、业务逻辑、算法等〕以上过程并不是每个分析中都需要的,要根据测试目的和要求来确定分析的深度。对一些要求低的,我们分析到应用系统在将来大的负载压力〔并发用户数、数据量〕下,系统的硬件瓶颈在哪儿就够了。分段排除法很有效47负载压力测试心得根据测试结果收集到的监控指标数据根据场景运行过程中的错误提示信息48负载压力测试心得实例:Error:Failedtoconnecttoserver"0:8080":[10060]ConnectionError:timedoutError:Server"0"hasshutdowntheconnectionprematurely分析:A、应用效劳死掉:程序或者数据库的问题B、应用效劳没有死:应用效劳参数设置问题许多客户端连接Weblogic应用效劳器被拒绝,而在效劳器端没有错误显示,那么有可能是Weblogic中的server元素的AcceptBacklog属性值设得过低。如果连接时收到connectionrefused消息,说明应提高该值,每次增加25%C、数据库的连接:1、在应用效劳的性能参数可能太小了2、数据库启动的最大连接数〔跟硬件的内存有关〕49负载压力测试心得最大并发用户数:应用系统在当前环境〔硬件环境、网络环境、软件环境〔参数配置〕〕下能承受的最大并发用户数如果出现了大于3个用户的业务操作失败,或出现了效劳器shutdown的情况,那么说明在当前环境下,系统承受不了当前并发用户的负载压力,那么最大并发用户数就是前一个没有出现这种现象的并发用户数如果测得的最大并发用户数到达了性能要求,且各效劳器资源情况良好,业务操作响应时间也到达了用户要求,那么OK。否那么,需根据各效劳器的资源情况和业务操作响应时间进一步分析原因所在50负载压力测试心得业务操作响应时间:分析运行情况应从平均事务响应时间图和事务性能摘要图开始。使用“事务性能摘要〞图,可以确定在方案执行期间响应时间过长的事务细分事务并分析每个页面组件的性能。查看过长的事务响应时间是由哪些页面组件引起的?问题是否与网络或效劳器有关如果效劳器耗时过长,使用相应的效劳器图确定有问题的效劳器度量并查明效劳器性能下降的原因。如果网络耗时过长,使用“网络监视器〞图确定导致性能瓶颈的网络问题51负载压力测试心得内存:UNIX资源监控中的内存页交换速率〔Pagingrate〕,如果该值偶尔走高,说明当时有线程竞争内存。如果持续很高,那么内存可能是瓶颈。也可能是内存访问命中率低Windows资源监控中,如果Process\PrivateBytes计数器和Process\WorkingSet计数器的值在长时间内持续升高,同时Memory\Availablebytes计数器的值持续降低,那么很可能存在内存泄漏在Unix/linux操作系统,当CPU利用率低,但是事务响应时间仍然较长时,还需要观察I/OWait的变化,以鉴别是否因为I/O导致CPU利用率低52负载压力测试心得内存成为性能瓶颈的征兆:

很高的换页率(highpageoutrate)进程进入不活动状态交换区所有磁盘的活动次数过高很高的全局系统CPU利用率内存不够出错(outofmemoryerrors)53负载压力测试心得处理器:UNIX资源监控〔Windows操作系统同理〕中的指标CPU占用率〔CPUutilization〕,如果该值持续超过95%,说明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。如果效劳器专用于SQLServer,可接受的最大上限是80-85%,合理使用的范围在60%至70%Windows资源监控中,如果System\ProcessorQueueLength大于2,而处理器利用率〔ProcessorTime〕一直很低,那么存在着处理器阻塞54负载压力测试心得CPU成为性能瓶颈的征兆:

很慢的响应时间(slowresponsetime)CPU空闲时间为零(zeropercentidleCPU)过高的用户占用CPU时间(highpercentuserCPU)过高的系统占用CPU时间(highpercentsystemCPU)长时间的有很长的运行进程队列(largerunqueuesizesustainedovertime)55负载压力测试心得磁盘I/O:UNIX资源监控〔Windows操作系统同理〕中的指标磁盘交换率〔Diskrate〕,如果该参数值一直很高,说明I/O有问题。可考虑更换更快的硬盘系统Windows资源监控中,如果DiskTime和Avg.DiskQueueLength的值很高,而PageReads/sec页面读取操作速率很低,那么可能存在磁盘瓶颈56负载压力测试心得I/O成为性能瓶颈的征兆:过高的磁盘利用率(highdiskutilization)太长的磁盘等待队列(largediskqueuelength)等待磁盘I/O的时间所占的百分率太高(largepercentageoftimewaitingfordiskI/O)太高的物理I/O速率:largephysicalI/Orate(notsufficientinitself)过低的缓存命中率(lowbuffercachehitratio(notsufficientinitself))太长的运行进程队列,但CPU却空闲(largerunqueuewithidleCPU)57负载压力测试心得1、如果自由内存接近于0而且库快存或数据字典快存的命中率小于0.90,那么需要增加SHARED_POOL_SIZE的大小快存〔共享SQL区〕和数据字典快存的命中率:select(sum(pins-reloads))/sum(pins)fromv$librarycache;select(sum(gets-getmisses))/sum(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论