性能测试过程中遇到的一些问题总结.docx_第1页
性能测试过程中遇到的一些问题总结.docx_第2页
性能测试过程中遇到的一些问题总结.docx_第3页
性能测试过程中遇到的一些问题总结.docx_第4页
性能测试过程中遇到的一些问题总结.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1. LoadRunner录制脚本时为什么不弹出IE浏览器?答:启动浏览器,打开Internet选项对话框,切换到高级标签,去掉“启用第三方浏览器扩展(需要重启动)”的勾选,然后再次运行VuGen即可解决问题;如果系统中安装多个浏览器,使用IE6录制脚本,IE6-工具-internet选项-高级 ,把启用第三方浏览器扩展前面的勾取消掉,再确定.重启一次IE也许可以解决;2. HTML-based script与URL-based script的脚本有什么区别?答:使用“HTML-based script”的模式录制脚本,VuGen为用户的每个HTML操作生成单独的步骤,这种脚本看上去比较直观;使用“URL-based script”模式录制脚本时,VuGen可以捕获所有作为用户操作结果而发送到服务器的HTTP请求,然后为用户的每个请求分别生成对应方法。通常,基于浏览器的Web应用会使用“HTML-based script”模式来录制脚本;而没有基于浏览器的Web应用、Web应用中包含了与服务器进行交互的Java Applet、基于浏览器的应用中包含了向服务器进行通信的JavaScript/VBScript代码、基于浏览器的应用中使用了HTTPS安全协议,这时使用“URL-based script”模式进行录制。3. Loadrunner录制脚本时Vuser_init,Action,Vuser_end的区别?录制脚本时工具栏内默认会有Vuser_init,Action,Vuser_end3个脚本。Vuser_init,Vuser_end是必须存在,并且不能改名;Action脚本可以删除,改名或增加若干新的脚本。Vuser_init通常用来存放初始化的脚本,例如登录信息;Vuser_end通常用来存放结束脚本,例如退出信息;这两个脚本只运行一次,而Action脚本可以被设置运行多次。4. 为什么录制脚本的时候要关闭浏览器?static authenticateLicense(); /* * alex:每隔一个小时移除超时的Session * 为什么把时间搞这么久呢? * * 浏览器非正常关闭时,不会通知服务器closeSession * 本来想通过浏览心跳机制来解决,却没想到浏览器端每30秒通知用的setInterval与ajax冲突 * 当ajax没有得到反馈时,setInterval的调用也停止了,不会每30秒做一次,很诡异,还要追查一下 * * 于是,6.5.3给SessionIDInfor设置一个isActive的属性,每次updateSession时设置为true,每次ReportServlet结束一个request时设置为false * 只有isActive为false,才会被定时检查删除 * * 但这么做导致了代码的复杂度 * * 于是在code里面就这么解决处理一下,因为这个定时操作是移除非正常关浏览器遗留的session,没有必要太频繁 */ new Timer().schedule(new TimerTask() public void run() if (ConfigManager.getInstance().isLicUseLock() authenticateLicense(); removeTimeoutSessions(); , 600000, 600000); 当客户端浏览器访问报表服务器端的某张报表时,便会产生一个session会话,当用户关闭浏览器的时候就会通知报表服务器关闭这个session。那么如果访问的用户多,每个用户都产生=1个session的话,可以看到session将会很多。如果session设置的为100个,session保持时间为3分钟,那么如果3分钟有105个session,超过的5个session就进入等待状态,如果没有关闭session,那么等待的session一直会占用线程,lr并发时,造成服务器线程不够现象,事务无法通过。5. 在Controller中运行Web相关测试场景时,经常会有很多超时错误提示,如何处理这类问题?答:这主要有脚本的默认超时设置引起。当回放Web脚本时,有时候由于服务器响应时间较长,会产生超时的错误。这时需要修改脚本的运行时配置。进入“Run-time Setting”对话框后,依次进入“Internet ProtocolPreference”。然后点击“Options”按钮,进入高级设置对话框,可以修改各类超时设置的默认值。 6. LoadRunner如何自动创建脚本关联?遇到sessionID之所以要用到关联,是因为每次访问被测页面时sessionID都是不同的,如果不关联sessionID,录制后的脚本就把 sessionID写死了,测试时,每次访问的都是同一个sessionID的页面,这是不符合实际的。而创建关联,就是把产生的sessionID保存 在一个变量中,供后面访问使用。录制好脚本之后,查看脚本,找到sessionID,选中,右击scan for correlations,就会弹出创建关联的界面,在最底下的 show differences in下拉框中选择all action,然后loadrunner就会reply这个脚本,查看在sessionID部分,是不是和之前录好的不一样,如果是的,就会在下面显示出 来,然后我们点击右下角的 correlation ,那么关联就已经自动帮你创建好了,你可以打开脚本找到关于关联的参数定义。7. 为什么Windows系统中的CPU、内存等资源仍然充足,但是模拟的用户数量却上不去?答:在Windows计算机的标准设置下,操作系统的默认限制只能使用几百个Vuser,这个限制与CPU或内存无关,主要是操作系统本身规定了默认的最大线程数所导致。要想突破Windows这个限制,须修改Windows注册表。以Windows XP Professional为例。(1)打开注册表后,进入注册表项HKEY_LOCAL_MACHINE中的下列关键字:SystemCurrentControlSetControlSession ManagerSubSystems。(2)找到Windows关键字,Windows关键字如下所示:%SystemRoot%system32csrss.exe bjectDirectory=WindowsSharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2ProfileControl=Off MaxRequestThreads=16SharedSection=1024,3072,512关键字的格式为xxxx,yyyy,zzz。其中,xxxx定义了系统范围堆的最大值(以KB为单位),yyyy定义每个桌面堆得大小。(3)将yyyy的设置从3072更改为8192(即8MB),增加SharedSection参数值。通过对注册表的更改,系统将允许运行更多的线程,因而可以在计算机上运行更多的Vuser。这意味着能够模拟的最大并发用户数量将不受Windows操作系统的限制,而只受硬件和内部可伸缩性限制的约束。8. 如何让场景的用户执行发生错误继续运行,以保证不间断进行压力测试?答:用VuGen打开虚拟用户脚本后,进入“Run-time Settings”对话框后,依次进入“GeneralMiscellaneous”,可以看到Miscellaneous设置中关于“Error Handling”的配置。勾选“Continue on error”即可让虚拟用户发生错误继续运行。 9. LR运行场景时如何监控windows资源图1、首先保证被监视的windows系统开启以下二个服务Remote Procedure Call(RPC) 和Remote Registry Service。这两项服务在“管理工具”下的“服务”。2、被监视的WINDOWS机器:右击我的电脑,选择管理-共享文件夹-共享 在这里面要有C$这个共享文件夹,若没有进行手动添加3、测试机使用运行.输入被监视机器IPC$ 然后输入管理员帐号和密码,如果能看到被监视机器的C盘了,就说明你得到了那台机器的管理员权限。 完成了以后的准备工作,就可以在LoadRunner的controller中监控windows了,操作步骤:在“windows resources”监视图中右击鼠标,选择“add measurements”跳出“windows resources”框,点击“add”输入被监控的IP。在“resource measurement on”选项框中选择要用到的计数器。10. 为什么LoadRuner负载测试设置超过1000并发,运行时加压不上去?因为loadRunner默认的vuser最大值为1000,需要修改vuser默认值。点击Controller设计界面的Generators -Disable,将Vuser Limits设置为想要的值11. 问题描述 wsa_io_pendingIO Overlapped是一种异步IO,在socket层,只有少量数据发送的时候,只要create new thread,send, receive,就可以了。但是,当数据量增加的时候,要考虑资源的充分利用,也要避免资源的拥塞队列,如果创建线程过多,和CPU内存磁盘等资源的交互过多,可能导致拥塞出现。解决方法,调整tomcat的线程12. TOMCAT的线程解释maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100这两个值如何起作用,请看下面三种情况情况1:接受一个请求,此时tomcat起动的线程数没有到达maxThreads,tomcat会起动一个线程来处理此请求。情况2:接受一个请求,此时tomcat起动的线程数已经到达maxThreads,tomcat会把此请求放入等待队列,等待空闲线程。情况3:接受一个请求,此时tomcat起动的线程数已经到达maxThreads,等待队列中的请求个数也达到了acceptCount,此时tomcat会直接拒绝此次请求,返回connection refusedmaxThreads如何配置一般的服务器操作都包括量方面:1计算(主要消耗cpu),2等待(io、数据库等)第一种极端情况,如果我们的操作是纯粹的计算,那么系统响应时间的主要限制就是cpu的运算能力,此时maxThreads应该尽量设的小,降低同一时间内争抢cpu的线程个数,可以提高计算效率,提高系统的整体处理能力。第二种极端情况,如果我们的操作纯粹是IO或者数据库,那么响应时间的主要限制就变为等待外部资源,此时maxThreads应该尽量设的大,这样 才能提高同时处理请求的个数,从而提高系统整体的处理能力。此情况下因为tomcat同时处理的请求量会比较大,所以需要关注一下tomcat的虚拟机内 存设置和linux的open file限制。现实应用中,我们的操作都会包含以上两种类型(计算、等待),所以maxThreads的配置并没有一个最优值,一定要根据具体情况来配置。最好的做法是:在不断测试的基础上,不断调整、优化,才能得到最合理的配置。acceptCount的配置,我一般是设置的跟maxThreads一样大,这个值应该是主要根据应用的访问峰值与平均值来权衡配置的。如果设的较小,可以保证接受的请求较快相应,但是超出的请求可能就直接被拒绝如果设的较大,可能就会出现大量的请求超时的情况,因为我们系统的处理能力是一定的。13. Loadrunner的think time设置“Think Time”顾名思义思考时间。它效仿真实用户在实际操作过程中的等待时间。也就是说,实际用户在浏览网页,操作B/S系统的时候,不可能像机器一样不停 的点啊点,在操作和操作之间会有一定的间隔。如:你浏览网页,打开一个或几个网页后,你会阅读,读过之后才会继续打开新网页。你阅读时所消耗的时间就是 Think Time。对于服务器来说,这段时间是没有压力的。我们做性能测试,很多时候就要模拟这种状态。例如:某系统,要求满足100用户同时在线操作,响应时间在5秒。如果不设置Think Time,我觉得,你的测试是失败的。大家想想为什么?答案将在文章的结尾揭晓。下面我来讲解一下LR中Think Time的设置。设置Think Time有两种方式,一种是使用Record think time在录制过程中根据实际等待时间自动的写入脚本。另一种是在脚本录制结束后手动加入到脚本中。接下来我们详细介绍。自动:位置及操作:RecordingOptionAdvanced:勾上Record think time,这样在你录制的时候,Think Time就会自动添加入你的脚本。需要注意的是,后面还有一项Think time threshold,它的作用是定义你所要录制的Think Time的最小时间。举个例子,如果你把这个值设置为5秒,那么如果录制过程中等待的时间小于秒,那么就不会在脚本中记录这个Think Time。手动:位置及操作:脚本中任何你想要插入的地方。注意,不要将Think Time插入到你定义的事务当中,否则,测出的事务时间需要减去Think Time的时间呦。操作:在你想要插入Think Time的地方,右键,InsertNew Step在Time To Think () second在空中填写你为想要设置的时间。也可以在脚本中直接写函数lr_think_time();添加好后,我们在Run-time Settings中设置执行的策略。位置:Run-time SettingsThink Time。进入后,我们会看到两个选项。Ignore think time:忽略think time,也就是即使你添加了think time,脚本执行的时候也不会理睬,忽略不执行。Replay the think time:下面还有3个子项。As recorded:按照录制的执行。不用多说。Multiply recorded think time by:这就是我录制的think time乘一个系数。如,你录制的think time是4秒,在这里设置2,最后执行时就会按4秒28秒来执行。如果你想要执行秒,就在这里填0.5。Use random percentage of the recorded think time:这里随机设置一个百分比,并规定上下限。如,录制的think time为4秒。Min为50,Max为200。那么执行的时候它就会从2秒到8秒内随机取一个数来执行。Limit think time to:为think time设置一个上限,不管上面的如何设置,执行的时候,取值都不会操过这个上限。讲到这里,think time的设置大家应该很明白了。不知道让大家思考的问题是否想通了。需求说的是100用户同时在线操作,注意,是在线!大家想想,100人在线肯定有人 在操作,也有人只是在线,没有对服务器发出任何请求。如果不设置think time,相当于100人并发操作,每个人都不停的向服务器发送请求,这比需求的压力可是大很多的呦14. 问题描述 step download timeout (120 seconds)这是一个经常会遇到的问题,解决得办法走以下步骤:1、 修改run time setting中的请求超时时间,增加到600s,其中有三项的参数可以一次都修改了,HTTP-request connect timeout,HTTP-request receieve timeout,Step download timeout,分别建议修改为600、600、5000;run time setting设置完了后记住还需要在control组件的option的run time setting中设置相应的参数;2、 办法一不能解决的情况下,解决办法如下:设置runt time setting中的internet protocol-preferences中的advaced区域有一个winlnet replay instead of sockets选项,选项后再回放就成功了。切记此法只对windows系统起作用。15. 问题描述Connection reset by peer 这个问题不多遇见,一般是由于下载的速度慢,导致超时,所以,需要调整一下超时时间。解决办法:Run-time setting窗口中的Internet ProtocolPreferences设置set advanced options(设置高级选项),重新设置一下“HTTP-request connect timeout(sec),可以稍微设大一些”; 16. 问题描述connection refused 这个的错误的原因比较复杂,也可能很简单也可能需要查看好几个地方,解决起来不同的操作系统方式也不同;1、 首先检查是不是连接weblogic服务过大部分被拒绝,需要监控weblogic的连接等待情况,此时需要增加acceptBacklog,每次增加 25%来提高看是否解决,同时还需要增加连接池和调整执行线程数,(连接池数*Statement Cache Size)的值应该小于等于oracle数据库连接数最大值; 2、 如果方法一操作后没有变化,此时需要去查看服务器操作系统中是否对连接数做了限制,AIX下可以直接vi文件limits修改其中的连接限制数,还有 tcp连接等待时间间隔大小,wiodows类似,只不过wendows修改注册表,具体修改方法查手册,注册表中有TcpDelayTime项;17. 问题描述Failed to connect to server 这个问题一般是客户端链接到服务失败,原因有两个客户端连接限制(也就是压力负载机器),一个网络延迟严重,解决办法:1、 修改负载机器的tcpdelaytime注册表键值,改小;2、 检查网络延迟情况,看问题出在什么环节;建议为了减少这种情况,办法一最好测试前就完成了,保证干净的网络环境,每个负载机器的压力测试用户数不易过大,尽量平均每台负载器的用户数,这样以上问题出现的概率就很小了。18. 问题描述:Overlapped transmission of request to . WSA_IO_PENDING这个问题,解决方法:1、方法一,在脚本前加入web_set_sockets_option(OVERLAPPED_SEND, 0),禁用TTFB细分,问题即可解决,但是TTFB细分图将不能再使用,附图。2、方法二,可以通过增加连接池和应用系统的内存,每次增加25%。19. 问题描述:Failed to transmit data to network: 10057 Socket is not connected这个错误是由网络原因造成的,PC1 和PC2上面都装了相同的loadrunner 9.0,且以相同数量的虚拟用户数运行相同的业务(机器上的其他条件都相同),PC1上面有少部分用户报错,PC2上的用户全部执行通过。20. 最佳并发数,最大并发数看过陈雷写的一篇关于理发店模型的文章,里面就分析了系统最佳并发数和最大并发数,引用一下原文:假设理发店有3个理发师,每剪一个头需要1小时,客户的忍耐时间为3小时,那么,这个理发店的最佳并发用户数为3,最大并发数为9,根据以上的说法,我个人认为:我们在做性能测试时,系统的最佳并发数为系统的最大连接数(人为设置),系统的最大并发数为:当系统出现事物超时、用户运行失败、系统崩毁 时的并发数以上是个人理解21. LoadRunner重装遇到的问题如果安装LoadRunner最新版本失败,相信很多朋友都会遇到重新安装不成功的烦恼。原因可能是多种情况,可能是早 期的LoadRunner版本兼容性问题导致安装失败,也可能安装过程中弹出组件注册失败的各种错 误。如果正常重新安装,只能先让LoadRunner充分卸载。可以按以下的步骤操作:。1.保 证所有LoadRunner的相关进程(包括Dontroller、VuGen、Bnalysis和Bgent Process)全部关闭。2.备份好LoadRunner安 装目录下测试脚本,这些脚本一般 存放在LoadRunner安装目录下的“scrpts”子 目录里。3.在操作系统控 制面板的“删除与添加程序”中运行LoadRunner的卸载程序。如果弹出提示信息关于共享文件的,都选择全部删除。4.卸 载向导完成后,按照要求重新启动电脑。完成整个LoadRunner卸载过程。5.删 除整个LoadRunner目录。(包括Bgent Process)。6.在操作中查找下列文件,并且删除它们。1)wlrun.*2)vugen.*7.运 行注册表程序(开始 运行regedit)。8.删 除下列键值:如果只安装了MI公司的LoadRunner这一个产品,请删除:HKEY_LODBL_MBDHINESOFTWBREMercury Interactive.HKEY_DURRENT_USERSOFTWBREMercury Interactive.否则请删除:HKEY_LODBL_MBDHINESOFTWBREMercury InteractiveLoadRunner.HKEY_DURRENT_USERSOFTWBREMercury InteractiveLoadRunner.9.最后清空回收站。如果你完成了以上操作,你就可以正常的重新安装LoadRunner.最 好保证安装LoadRunner时关闭所有的杀毒程序。因为以往在安装LoadRunner时同时运行杀毒程序会出现不可预知的问题。License的 问题:卸载:因为之前一直 没有分析正确问题的所在,所以卸载和重新安装loadrunner好几次,关于卸载的一些问题,及 时你按照卸载工具卸载了loadrunner,下次装的时候还是会包license失效,解决方法,要登录到注册表regedit中。删除如下内容:HKEY_DLBSSES_ROOTMercury.Lm70DontrolHKEY_DLBSSES_ROOTMercury.Lm70Dontrol.1同时删除Mercury.Lm70DontrolMgrMercury.Lm70D

温馨提示

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

评论

0/150

提交评论