1.去掉ie设置中的第三方支持取消掉html
2.在系统属性-高级-性能-数据执行保护中,添加loadrunner安装目录中的vugen.exe文件.node
有多是因为录制的URL地址采用的是localhost的问题,改为分配的IP地址或127.0.0.1试试。web
三、插入文本检查点步骤时,使用web_reg_find,一般TextPfx和TextSfx中会包含双引号,须要进行转义(用斜杠),例如:面试
web_reg_find("Search=Body",ajax
"SaveCount=Welcome",算法
"TextPfx=欢迎<a class=\"drop\" id=\"viewpro\" onMouseOver=\"showMenu(this.id)\">",sql
"TextSfx=</a>",数据库
LAST)windows
遇到flight界面为空的解决的可能方法: 一、若是安装了IE之外的浏览器,而且IE不是默认浏览器,则没法生成录制脚本 二、若是录制脚本时IE不能打开,则须要将浏览器的IE工具高级选项中,将“启用第三方浏览器扩展”的勾选去掉 三、lr自带的webtours系统,若是点击Flights选项,出现空白页面,请检查本机oracle的 PERL5LIB环境api
当一台主机上安装多个浏览器时,LoadRunner录制脚本常常遇到不能打开浏览器的状况,能够用下面的方法来解决。
启动浏览器,打开Internet选项对话框,切换到高级标签,去掉“启用第三方浏览器扩展(须要重启动)”的勾选,而后再次运行VuGen便可解决问题
提示:一般安装Firefox等浏览器后,都会勾选上面得选项,致使不能正常录制。所以建议运行LoadRunner得主机上保持一个干净的测试环境。
使用“HTML-based script”的模式录制脚本,VuGen为用户的每一个HTML操做生成单独的步骤,这种脚本看上去比较直观;
使用“URL-based script”模式录制脚本时,VuGen能够捕获全部做为用户操做结果而发送到服务器的HTTP请求,而后为用户的每一个请求分别生成对应方法。
一般,基于浏览器的Web应用会使用“HTML-based script”模式来录制脚本;而没有基于浏览器的Web应用、Web应用中包含了与服务器进行交互的Java Applet、基于浏览器的应用中包含了向服务器进行通讯的JavaScript/VBScript代码、基于浏览器的应用中使用了HTTPS安全协议,这时使用“URL-based script”模式进行录制。
Pacing主要用来设置重复迭代脚本的间隔时间。共有三种方法:A:上次迭代结束后马上开始、 B:上次迭代结束后等待固定时间、C:按固定或随机的时间间隔开始执行新的迭代。
根据实际须要设置迭代便可。一般,没有时间间隔会产生更大的压力。
Enable logging选项仅影响自动日志记录和经过lr_log_message发送的消息。即便没有勾选,虚拟用户脚本中若是使用lr_message、lr_output_message、lr_error_message,仍然会记录其发出的消息。
不支持。目前的VuGen 8.0版本中仅支持Internet Explorer的客户端证书。录制脚本时能够先从Netscape中导出所需的证书,而后将其导入到Internet Explorer中,并确保以相同的顺序导出和导入这些证书。并且,在每台将要录制或运行须要证书的Web Vuser脚本的计算机上都要重复执行前面的过程。
会修改。在开始录制基于浏览器的Web Vuser脚本时,VuGen首先会启动指定的浏览器。而后,VuGen会指示浏览器访问VuGen代理服务器。为此,VuGen会修改录制浏览器上的代理服务器设置。默认状况下,VuGen会当即将代理服务器设置更改成Localhost:7777。录制以后,VuGen会将原始代理服务器设置还原到该录制浏览器中。所以,在VuGen进行录制的过程当中,不能够更改代理服务器设置,不然将没法正常进行。
LoadRunner提供了char *ctime(const time_t *time)函数,调用参数为一个Long型的整数指针,用于存放返回时间的数值表示。
调用语句与返回值以下示例:
typedef long time_t;
Action()
{
time_t t;
lr_message(“Time in seconds since 1/1/70: %ld\n”,time(&t));
lr_message(“System time and date: %s”,ctime(&t));
}
输出结果为:
Time in seconds since 1/1/70: 1185329968
System time and date:Wed Jul 25 10:19:28 2007
这种现象可能是因为在“Run-time Setting”的“Browse Emulation”的设置中,勾选了“Simulate a new user on each iteration”及其下面的选项“Clear cache on each iteration”这两个选项的含义是每次迭代时模拟一个新的用户及每次迭代时清除缓存。
因为脚本迭代时,init和end只能执行一次,若是每次迭代都模拟一个新的用户并清除缓存,则用户登陆信息将一并清除,所以迭代时可能会发生错误。
若是选择“Run Vuser as a process”,则场景运行时会为每个虚拟用户建立一个进程;选择“Run Vuser as a thread”则将每一个虚拟用户做为一个线程来运行,在任务管理器中只看到一个mmdrv.exe,这种方式的运行效率更高,能形成更大的压力,时默认选项。
另外,若是启用了IP欺骗功能,则先在Controller中选中Tools菜单下的“Expert Mode”,而后将Tools菜单下的“Options>General”标签页中的IP地址分配方式也设置为与Vuser运行方式一致,同为线程或进程方式。
这主要有脚本的默认超时设置引发。当回放Web脚本时,有时候因为服务器响应时间较长,会产生超时的错误。这时须要修改脚本的运行时配置。
进入“Run-time Setting”对话框后,依次进入“Internet Protocol→Preference”。而后点击“Options…”按钮,进入高级设置对话框,能够修改各种超时设置的默认值。
在Windows计算机的标准设置下,操做系统的默认限制只能使用几百个Vuser,这个限制与CPU或内存无关,主要是操做系统自己规定了默认的最大线程数所致使。要想突破Windows这个限制,须修改Windows注册表。以Windows XP Professional为例。
(1)打开注册表后,进入注册表项HKEY_LOCAL_MACHINE中的下列关键字:System\CurrentControlSet\Control\Session Manager\SubSystems。
(2)找到Windows关键字,Windows关键字以下所示:
%SystemRoot%\system32\csrss.exe bjectDirectory=\Windows
SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1
ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2
ProfileControl=Off MaxRequestThreads=16
SharedSection=1024,3072,512关键字的格式为xxxx,yyyy,zzz。其中,xxxx定义了系统范围堆的最大值(以KB为单位),yyyy定义每一个桌面堆得大小。
(3)将yyyy的设置从3072更改成8192(即8MB),增长SharedSection参数值。
经过对注册表的更改,系统将容许运行更多的线程,于是能够在计算机上运行更多的Vuser。这意味着可以模拟的最大并发用户数量将不受Windows操做系统的限制,而只受硬件和内部可伸缩性限制的约束。
loadruner报错:Error -27728: Step download timeout (120 seconds) 如何解决语法检查经过,可是在并发执行一个查询时候报错Action.c(16): Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s), 请问有啥子解决方法,我使用web_set_timeout ,好象不起做用,直接在option中设置timeout时间为600,(单位应该是秒吧)仍是没有起做用,结果都仍是提示(120seconds),说明仍是以120秒来判断的;使用lrs_set_recv_timeout,语法检查不过,说明库函数里面没有这个函数。尝试步骤:设置超时时间到600秒,回放仍是出错。后来我设置了runt time setting中的internet protocol-preferences中的advaced区域有一个winlnet replay instead of sockets选项,选项后再回放就成功了。
首先LR是经过Microsoft WinInet DLL去录制web协议的!可是在Control运行的时候它默认经过socket去模拟请求,由于这些能够真实的模拟带宽,而采用Microsoft WinInet DLL经过这个DLL去访问网卡方式去模拟带宽,使得模拟不是很精确!并且也不支持unix的应用,可是使用这个确实有时没法处理winnet Dll的一些请求,我认为是它的一些BUG,好比说:回放时它会检查Content-Length,可是网页支持receive more data时,这时socket模拟会一直等待直到timeout!先说了一些优缺点,最后回到这个问题!这个问题分两个方面分析:
第一:你要明白web_set_timeout()这个函数的适用范围!好比说一个web_submit_data()中实际涵盖了10个对Server 端的请求,这个函数是针对10个请求的总和时间的!(别犯低级错误,timeout分了connect,receive以及download三个部分:) ) 第二:就是我解释的上面的一些BUG问题!WinInet dll在新版本中处理请求时能够异步的,就是再也不是那种链接等待而后超时模式!可是LR用的socket是同步请求!只有等到timeout才会退出!microsoft已经明确表示INTERNET_OPTION_RECEIVE_TIMEOUT 再也不适用于 Microsoft Internet Explorer 5.0,显而易见,他们处理请求采起了异步处理的方式!呵呵!这下大概能够圆满解释你的问题了!呵呵这里,
我补充以下:VuGen专用的基于套接字的重播是一种可伸缩以便进行负载测试的轻型引擎。使用线程时是准确的。基于套接字的引擎不支持socks代理服务器。若是在这样的环境中录制,应该使用winInet重播引擎。
(1)编写SQL语句来插入数据
(2)使用DataFactory等专业的数据生成工具
(3)经过LoadRunner录制回放的方式重复执行生成大批量数据
Tips:
使用DataFactory插入nchar数据类型的数据时会出现空值的状况,能够先修改数据库的数据类型设置,插完数据后再改回来
把录制选项中的Support charset选中UTF-8
录制脚本后,切换到树视图中,打开相应的脚本页面。在右侧的PageView中录制的脚本呈现中文版式,可是当切换到Server Response中,全部的中文所有换成的乱码,如“勌缞仫訆”。
缘由是服务器端没有把响应的编码设置为gb2312
在IIS中找到Web.Config文件,在<system.web>….</system.web>节加入<globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312"/>后再次录制脚本,乱码变中文。
解决办法(1):
首先设置Run-Time Settings – Browser – Browser Emulation – User-Agent
而后设置IE:
查看-编码-钩上“自动选择”和Unicode(UTF-8)。
解决办法(2):
使用lr_convert_string_encoding函数来转换编码
下面是一个使用的例子:
lr_convert_string_encoding(lr_eval_string("{ReplyContents}"),LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"ReplyMessage");
web_submit_data("postreply.aspx_2",
"Action=http://127.0.0.1/postreply.aspx?infloat=1&topicid=2&&inajax=1",
"Method=POST",
"EncType=multipart/form-data",
"RecContentType=text/xml",
"Referer=http://127.0.0.1/showtopic-2.aspx",
"Snapshot=t9.inf",
"Mode=HTML",
ITEMDATA,
"Name=iconid", "Value=0", ENDITEM,
"Name=title", "Value=", ENDITEM,
"Name=wysiwyg", "Value=0", ENDITEM,
"Name=checkbox", "Value=0", ENDITEM,
"Name=message", "Value=[localimg=180,112]1[/localimg]\r\n\r\n{ReplyMessage}", ENDITEM,
"Name=e_mediatyperadio", "Value=on", ENDITEM,
"Name=sl_attachdesc", "Value=", ENDITEM,
"Name=attachid", "Value=", ENDITEM,
"Name=attachdesc", "Value=", ENDITEM,
"Name=localid", "Value=", ENDITEM,
"Name=attachdesc", "Value=", ENDITEM,
"Name=localid", "Value=1", ENDITEM,
"Name=attachdesc", "Value=", ENDITEM,
"Name=localid", "Value=2", ENDITEM,
"Name=emailnotify", "Value=on", ENDITEM,
"Name=postreplynotice", "Value=on", ENDITEM,
"Name=postfile", "Value=", "File=Yes", ENDITEM,
"Name=postfile", "Value=D:\\\\图片收集\\\\It's about time.JPG", "File=Yes", ENDITEM,
"Name=postfile", "Value=", "File=Yes", ENDITEM,
"Name=uploadallowmax", "Value=10", ENDITEM,
"Name=uploadallowtype", "Value=jpg,gif", ENDITEM,
"Name=thumbwidth", "Value=300", ENDITEM,
"Name=thumbheight", "Value=250", ENDITEM,
"Name=noinsert", "Value=0", ENDITEM,
LAST);
The parameter file is stored in the script directory as .dat file extension. It can be opened with a simple text editor like Notepad as it is stored in pure text format. Therefore, you can manipulate the files via the Notepad. You can also use office applications such as Microsoft Excel or OpenOffice.org Calc to work on the file. This greatly the amount of work required for maintaining a long list of data.
After upgrading to LoadRunner 9.x I started getting a window popup which said "Failed to connect to server" every time I opened virtual user generator (vugen.exe).
The solution to this was to close virtual user generator and delete the [vugen.ini] file.
vugen.ini is found in the %systemroot% folder on your Windows PC (usually C:\WINDOWS or C:\WINNT).
Once you've deleted the file, virtual user generator will open without any issues and create a new vugen.ini file automatically.
怎样抓取有相同左右边界的动态value?例如:
stateID="d7lg0ehmjkkm6uin3s4boei7oq">
stateID="cvopakp46ftsf8mh6l37ti3ubm">
stateID="bv9mja8gtgr39ddibm5t9163re">
web_reg_save_param里的ORD应该怎样设置?
ORD: Indicates the ordinal position or instance of the match. The default instance is 1. If you specify "All," it saves the parameter values in an array.
例子:
char outFlightParam[50]; // The name of the parameter for correlation
char outFlightParamVal[50]; // The formatted value of outFlightParam
web_reg_save_param("outFlightVal",
"LB=outboundFlight value=", "RB=>",
"ORD=ALL",
"SaveLen=18",
LAST);
web_submit_form("reservations.pl",
"Snapshot=t4.inf",
ITEMDATA,
"Name=depart", "Value=London", ENDITEM,
"Name=departDate", "Value=11/20/2003", ENDITEM,
"Name=arrive", "Value=New York", ENDITEM,
"Name=returnDate", "Value=11/21/2003", ENDITEM,
"Name=numPassengers", "Value=1", ENDITEM,
"Name=roundtrip", "Value=<OFF>", ENDITEM,
"Name=seatPref", "Value=None", ENDITEM,
"Name=seatType", "Value=Coach", ENDITEM,
"Name=findFlights.x", "Value=83", ENDITEM,
"Name=findFlights.y", "Value=16", ENDITEM,
LAST);
sprintf(outFlightParam, "{outFlightVal_%s}",
lr_eval_string("{outFlightVal_count}"));
sprintf(outFlightParamVal, "Value=%s",
lr_eval_string(outFlightParam));
lr_message("The value argument is : %s", outFlightParamVal);
web_submit_form("reservations.pl_2",
"Snapshot=t5.inf",
ITEMDATA,
"Name=outboundFlight",outFlightParamVal, ENDITEM,
"Name=reserveFlights.x", "Value=92", ENDITEM,
"Name=reserveFlights.y", "Value=10", ENDITEM,
LAST);
vuser_init.c(12): Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s)(出现个别,能够忽略)
vuser_init.c(12): Error -27727: Step download timeout (120 seconds) has expired when downloading resource(s). Set the "Step Timeout caused by resources is a warning" Run-Time Setting to Yes/No to have this message as a warning/error, respectively
vuser_init.c(12): Error -27796
若是以为下载一个页面超过2分钟不是错误的话,能够在Run-Time设置中选择Preferences->Options,修改Step download timeout(sec)的时间
或者把“Step timeout caused by resources is a warning”设置为Yes,这样下载资源超时也只是做为警告,不做为错误提示,可是对于非资源的下载超时,则老是会提示错误的
须要在loadrunner里面得到“15”(下面红色高亮的部分),并作成关联参数。
//Body response 内容: <BODY><; PRE>//OK[8,7,5,15,6,5,0,4,0,3,0,3,2,0,0,0,1
用web_reg_save_param取出“8,7,5,15,6,5,0,4,0,3,0,3,2,0,0,0,1”这一段,而后用strtok函数切割出一个个数字,第四个数字就是要找的值
例如:
extern char * strtok(char * string, const char * delimiters ); // Explicit declaration
char separators[] = ",";
char * token;
lr_save_string("1,2,3,4,5,6","str");
token = (char *)strtok(lr_eval_string("{str}"), separators); // Get the first token
if (!token) {
lr_output_message ("No tokens found in string!");
return( -1 );
}
while (token != NULL ) { // While valid tokens are returned
lr_output_message ("%s", token );
token = (char *)strtok(NULL, separators); // Get the next token
}
能够,参考:
http://blog.testsautomation.com/2009/01/web-services-performance-using-loadrunner/
http://blog.testsautomation.com/2009/05/validating-web-service-response-with-xpath/
在analysis中找到了设置是否在报告中包含思考时间的地方作相应的设置便可:
Another issue that I’m facing from time to time is that LoadRunner stops 50% of running users without any notification, issue, error message etc. I’ve find out that it happens only when running with log level set to ‘always send a message’. Because of that, I suggest to run with log level set to ‘Send message only when error occur’.
用flex协议
有这几个函数可用:
flex_rtmp_connect Connects a client to an RTMP server and sets connection options.
flex_rtmp_disconnect Disconnects a client from an RTMP server.
flex_rtmp_send Sends messages to an RTMP server.
flex_rtmp_receive Receives responses from an RTMP server
Flex can record and replay scripts involving RTMP (Real Time Messaging Protocol). In order to enable RTMP simulation, you must configure the recording options for the Flex protocol.
To enable RTMP:
1 Open the Recording Options dialog box by selecting Tools > Recording Options or clicking the Options button in the Start Recording dialog box.
2 In the Network > Port Mapping node click Options.
3 Set the Send-Receive buffer size threshold to 1500.
一、运行准备:
1)勾选QTP的Tools--Options--Run的"Alow other Mercury products to run tests and components"
2)录制须要在lr中运行的QTP脚本,而且在QTP脚本中设置事务,Services.StartTransaction "start"与Services.EndTransaction "start"
二、运行QTP脚本
在LR中运行时选择QTP脚本,为QTP脚本存放目录下文件扩展名为.usr的文件。
注:LR中运行QTP脚本时,只能有一个Vuser,不然将报错:
The load generator is currently running the maximum number of Vusers of this type
在LR中对Socket进行性能测试时,LR会本身判断lrs_receive回来的数据的长度,而若是长度不符的话会有时间延迟的状况(这是性能测试彻底不能接受的事情),若是作到这一点呢,通过反复尝试,发现一种简单的方法(用*代替具体的长度):
相似于将:
recv buf1 12
"Hello, Denny"
改成:
recv buf1 *
"Hello, Denny"
一切OK。
在C:\Program Files\HP\LoadRunner\dat\online_graphs中找到online_resource_graphs.rmd文件,修改[Apache]部分中的EnableInUI为1
参考:
http://forums11.itrc.hp.com/service/forums/questionanswer.do?admit=109447626+1274450165814+28353475&threadId=1229523
想在VB Vuser写入模拟数据操做的过程,而后在VB Vuser里定义了这个全局变量
Private m_Conn As ADODB.Connection '链接对象
Private m_Reco As ADODB.Recordset '结果集
可是在VB Vuser中不识别这个对象,报出user-defined type not defined
须要在Run-Time 设置中的VBA部分把ADO的库选上
若是用VB Script虚拟用户来开发就不要,直接用CreateObject来建立ADO对象便可
Office2007的问题,IE加载项禁用Groove GFSBrowser Helper 组件
LR自带的例子端口号是1080,我怎么样把这个端口设置我本身想用的端口号8088,在什么地方设置在LR安装目录下,找到Xitami.config文件,找到portbase,能够修改它(默认是1000);默认的端口号是portbase+80;要把端口号改为8088,就把portbase改成8008,保存以后就是了(8088=8008+80)。
脚本文件里有个default.cfg ,里面有个参数是 UTF8InputOutput ,将其值改成0
http://hi.baidu.com/higkoo/blog/item/39bbb21bc33d76dcac6e751c.html
LoadRunner自带的“IP Wizard”用起来很是麻烦,要不停的点,重要的是最后还必须重启系统生效。
因而乎写个脚本替代之:
1. 假设客户端IP为 192.168.10.31
2. 假设服务端IP为 192.168.10.10
3. 须要模拟的IP为 110.119.120.122
那么,客户端提供添加虚拟IP的BAT脚本:
netsh interface ip add address 本地链接 110.119.120.122 255.255.0.0
对应的删除设置为:
netsh interface ip del address 本地链接 110.119.120.122
对应服务器添加虚拟路由的Shell脚本:
route add -host 110.119.120.122 gw 192.168.10.31
删除路由的脚本:
route del -host 110.119.120.122 gw 192.168.10.31
这样就很是方便了,不用重启任何机器,执行脚本就生效,再执行脚本就取消。
Here is the command line that you need to execute to run a VuGen script from the command prompt:
<LoadRunner>\bin\mmdrv.exe -usr <path to usr file>
Note:
In order to get all the other options that go with the command, run mmdrv.exe from the command prompt without any options.
把那段C代码作成DLL,而后在LR中调用
解决办法:
在被监控机器上更改本地账户的共享和安全模式为经典模式。控制面板->管理工具->本地安全策略->网络访问:本地账户的共享和安全模式->经典模式。
监视链接前的准备工做:
首先保证被监视的windows系统开启如下二个服务Remote Procedure Call(RPC) 和Remote Registry Service
被监视的WINDOWS机器:右击个人电脑,选择管理->共享文件夹->共享 在这里面要有C$这个共享文件夹,(要是没有本身手动加)
而后保证在安装LR的机器上使用运行.输入\\被监视机器IP\C$ 而后输入管理员账号和密码,若是能看到被监视机器的C盘了,就说明你获得了那台机器的管理员权限,能够使用LR去链接了
错误分析
脚本录制可能采用的是URL-based script方式,若是程序定义的字符集合采用的是国际标准,脚本就会出现乱码现象。
解决办法从新录制脚本,在录制脚本前,打开录制选项配置对话框进行设置,在“Recording Options”的“Advanced”选项里先将“Surport Charset”选中,而后选中支持“UTF-8”的选项。
错误分析
因为检查功能会消耗必定的资源,所以LoadRunner默认关闭了对文本以及图像的数据执行保护检查,因此在设置检查点后,须要开启检查功能。
解决办法打开运行环境设置对话框进行设置,在“Run-time Settings”的“Internet Protocol”选项里的“Perference”中勾选“Check”下的“Enable Image and text check”选项。
须要注意的是,回放脚本时出现的错误有时是程序自身的缘由致使的,所以在解决脚本回放问题前必须保证程序录制出的脚本是正确的。
错误现象1:Action.c(16): Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s)。
错误分析:对于HTTP协议,默认的超时时间是120秒(能够在LoadRunner中修改),客户端发送一个请求到服务器端,若是超过120秒服务器端尚未返回结果,则出现超时错误。
解决办法:首先在运行环境中对超时进行设置,默认的超时时间能够设置长一些,再设置屡次迭代运行,若是还有超时现象,须要在“Runtime Setting”>“Internet Protocol:Preferences”>“Advanced”区域中设置一个“winlnet replay instead of sockets”选项,再回放是否成功。
错误现象 2:Action.c(81):Continuing after Error -27498: Timed out while processing URL=http://172.18.20.70:7001/workflow/bjtel/leasedline/ querystat/ subOrderQuery.do
错误分析:这种错误经常是由于并发压力过大,服务器端太繁忙,没法及时响应客户端的请求而形成的,因此这个错误是正常现象,是压力过大形成的。
若是压力很小就出现这个问题,多是脚本某个地方有错误,要仔细查看脚本,提示的错误信息会定位某个具体问题发生的位置。
解决办法:例如上面的错误现象问题定位在某个URL上,须要再次运行一下场景,同时在其余机器上访问此URL。若是不能访问或时间过长,多是服务器或者此应用不能支撑如此之大的负载。分析一下服务器,最好对其性能进行优化。
若是再次运行场景后还有超时现象,就要在各类图形中分析一下缘由,例如能够查看是否服务器、DNS、网络等方面存在问题。
最后,增长一下运行时的超时设置,在“Run-Time Settings”>“Internet Protocol:Preferences”中,单击“options”,增长“HTTP-request connect timeout” 或者“HTTP-request receive”的值。
错误现象:某个连接或者图片名称为中文乱码,脚本运行没法经过。
错误分析:脚本录制可能采用的是URL-based script方式,若是程序定义的字符集合采用的是国际标准,脚本就会出现乱码现象。
解决办法:从新录制脚本,在录制脚本前,打开录制选项配置对话框进行设置,在“Recording Options”的“Advanced”选项里先将“Surport Charset”选中,而后选中支持“UTF-8”的选项。
错误现象1:-404 Not Found服务器没有找到与请求URI相符的资源,但还能够继续运行直到结束。
错误分析:此处与请求URI相符的资源在录制脚本时已经被提交过一次,回放时不可再重复提交一样的资源,而须要更改提交资源的内容,每次回放一次脚本都要改变提交的数据,保证模拟实际环境,形成必定的负载压力。
解决办法:在出现错误的位置进行脚本关联,在必要时插入相应的函数。
错误现象2:-500 Internal Server Error服务器内部错误,脚本运行中止。
错误分析:服务器碰到了意外状况,使其没法继续回应请求。
解决办法:出现此错误是致命的,说明问题很严重,须要从问题的出现位置进行检查,此时须要此程序的开发人员配合来解决,并且产生的缘由根据实际状况来定,测试人员没法单独解决问题,并且应该尽快解决,以便于后面的测试。
错误现象:Action.c(41): Error -27979: Requested form. not found [MsgId: MERR-27979]
Action.c(41): web_submit_form. highest severity level was "ERROR",0 body bytes, 0 header bytes [MsgId: MMSG-27178]"
这时在tree view中看不到此组件的相关URL。
错误分析:所选择的录制脚本模式不正确,一般状况下,基于浏览器的Web应用会使用“HTML-based script”模式来录制脚本;而没有基于浏览器的Web应用、Web应用中包含了与服务器进行交互的Java Applet、基于浏览器的应用中包含了向服务器进行通讯的JavaScript/VBScript代码、基于浏览器的应用中使用HTTPS安全协议,这时则使用“URL-based script”模式进行录制。
解决办法:打开录制选项配置对话框进行设置,在“Recording Options”的“Internet Protocol”选项里的“Recording”中选择“Recording Level”为“HTML-based script”,单击“HTML Advanced”,选择“Script. Type”为“A script. containing explicit”。而后再选择使用“URL-based script”模式来录制脚本。
错误现象:在脚本中插入函数Web_find,在脚本中设置文本以及图像的检查点,可是在回放过程当中并无对设置的检查点进行检查,即Web_find失效。
错误分析:因为检查功能会消耗必定的资源,所以LoadRunner默认关闭了对文本以及图像的检查,因此在设置检查点后,须要开启检查功能。
解决办法:打开运行环境设置对话框进行设置,在“Run-time Settings”的“Internet Protocol”选项里的“Perference”中勾选“Check”下的“Enable Image and text check”选项。
错误现象:利用LoadRunner 8.0版原本录制Web Services协议的脚本没有任何错误提示,回放脚本时会出现以下错误提示“Error:server returned an incorrectly formatted SOAP response”。
错误分析:出现此错误的缘由是LoadRunner8.0在录制Web Services协议的脚本时存在一个缺陷:若是服务器的操做系统是中文的,VuGen会自动将WSDL文件的头改成<?xml version="1.0"encoding="zh_cn" ?>,因此才会有此错误提示。
解决办法:下载两个补丁,分别为“LR80WebServicesFPI_setup.exe”和“lrunner_web_ services_patch_1.exe”安装上便可。
1.可能是OS系统问题,修复试试或升级
2.或修复LR试试
Posted on 2011-01-05 12:12 蝈蝈俊 阅读(433) 评论(0) 编辑 收藏
最近写的一个Loadrunner脚本,最后一步是点击“退出”按钮退出登陆状态,以下:
web_text_link("[退出]",
"Snapshot=t18.inf",
DESCRIPTION,
"Text=[退出]",
ACTION,
"UserAction=Click",
LAST);
return 0;
可是会报错误:
Action1.c(94): Error: C interpreter run time error: Action1.c (94): Error -- memory violation : Exception ACCESS_VIOLATION received.
Action1.c(94): Notify: CCI trace: Action1.c(94): web_text_link(0x02080870, 0x0208085f "Snapshot=t18.inf", 0x02080a42 "DESCRIPTION", 0x02080853, 0x02080a3b "ACTION", 0x020809de "UserAction=Click", 0x02080a6a "LAST")
Action1.c(94): Notify: CCI trace: Compiled_code(0): Action1()
通过试验,发现是由于 退出后有个自动跳转。
若是退出结束代码修改成下面就没有问题了。
web_text_link("[退出]",
"Snapshot=t18.inf",
DESCRIPTION,
"Text=[退出]",
ACTION,
"UserAction=Click",
LAST);
web_browser("Sync",
"Snapshot=t18.inf",
DESCRIPTION,
ACTION,
"Sync",
LAST);
return 0;
结论:
web_text_link 若是有中间跳转,不能放在代码的最后,最后要有一个 Sync 。
这个默认是120秒,可是常常咱们要设置的更大一些,具体设置方法:Vugen--》Vuser---》Runtime-settings----》Preferences------》option,将Step download timeout(sec)默认值120s改成本身须要的值,其次要改变HTTP-reguest connnect timeout(sec)和HTTP-reguest receive timeout(sec)也为相应的值。
由于我的pc机的默认的tcp链接数只有15个(xp),因此咱们在模拟虚拟多个用户时,就会遇到tcp的链接限制,从而报错。修改的方法:windows下运行 Patch.exe
输入C,再输入你要的TCP/IP链接数字(通常为500~2000)回车确认
输入Y 回车确认。
倒计时15秒后结束。
接着再运行下Patch.exe,看链接数是否是由原来的10变成本身改了的数值。
Patch.exe 下载地址:http://www.touchboy.cn/2007/05/% ... %E6%8E%A5%E6%95%B0/
使用LoadRunner的web(HTTP/HTML)协议的多用户向服务器提交数据时,出现错误信息:
Action.c(11): Error -27796: Failed to connect to server "test.shunde.gov.cn:80": [10048] Address already in use
Try changing the registry value
HKEY_LOCAL_MACHINESystemCurrentControlSetServicestcpipParametersTcpTimedWaitDelay to 30
and HKEY_LOCAL_MACHINESystemCurrentControlSetServicestcpipParametersMaxUserPort to 65534
and rebooting the machine
See the readme.doc file for more information
解决方法:
打开LoadRunner负载机所在机器的注册表,将HKEY_LOCAL_MACHINESystemCurrentControlSetServicestcpipParameters项中的TcpTimedWaitDelay值设置为5s或者其它(按须要调整)也能够把MaxUserPort值调大(若是这个值不是最大值的话),同时增长脚本的think time,再重启机器。
尝试修改注册表中
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters里,有以下两个键值:
TcpTimedWaitDelay
MaxUserPort
端口等待时间调小,最大可用端口调大
分析缘由:
由于负载生成器的性能太好,发数据包特别快,服务器也响应特别快,从而致使负载生成器的机器的端口在没有timeout以前就所有占满了。在所有占满后,就会出现上面的错误。执行netstat –na命令,能够看到打开了不少端口。因此就调整TCP的time out。即在最后一个端口尚未用到时,前面已经有端口在释放了。
参数介绍:
TcpTimedWaitDelay 值決定了 TCP/IP 必须通过多久,才能释放已关闭的链接及重用使用它的资源。这个关闭和释放的间隔称为TIME_WAIT状态,或是区段生命期限上限 (2MSL)状态的两倍。在这段时间內,通往用户端和伺服器的链接从新开启的成本,比创建新的链接低。藉由缩減这个项目的值,TCP/IP 能够更快释放已关闭的链接,提供更多资源给新的链接。若是执行中的应用程式须要快速释放、创建新链接,或多个链接在 TIME_WAIT 状态中形成通信量过低,于是须要进行调整的话,请调整这个参数。
预设值是 0xF0,它会将等待时间设为 240 秒(4 分钟)。
最小的建议值是 0x1E,它会将等待时间设为 30 秒。请利用这个程序来检视或自订您的值。
启动regedit 指令,浏览至 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTCPIPParameters 登陆次机码,创建名称为 TcpTimedWaitDelay 的新 REG_DWORD 值。
将值设为十进制 30,也就是十六进制的 0x0000001e。这个值会将等待时间设为 30 秒。
关闭登陆编辑器。
中止并从新启动系統。
MaxUserPort 值決定了当应用程式向系统要求可用的使用者埠时,TCP/IP 所能指派的最高埠号。若是您的系统报告创建 Socket 时,发生错误异常情况,多是匿名(短时间)埠的数量不当所形成,当系统开启大量的埠来创建 Web 服务器、资料库或其余远端资源的链接时,尤为如此。
TCP/IP 选项TcpTimedWaitDelay设置(其余版本的)
当TCP链接被关闭时,{ Protocol, Local IP, Local Port, Remote IP, Remote Port}五元组就进入TIME_WAIT状态,默认时间是4分钟。能够经过一组命令看看tcp的链接状态:
netstat -ano>>c:port.txt
本地ip,远程ip,远程端口都是固定的,只有本地端口是变化的,本地端口只能使用1024-5000,所以若是在4分钟内发起了大约4000个链接,这时就会发生异常,下面是使用WCF,客户端的异常:System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted 192.168.101.5:8888
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
at System.ServiceModel.Channels.SocketConnectionInitiator.Connect(Uri uri, TimeSpan timeout)
TCP有个选项 TcpTimedWaitDelay:
描述:肯定 TCP/IP 可释放已关闭链接并重用其资源前,必须通过的时间。关闭和释放之间的此时间间隔通称 TIME_WAIT 状态或两倍最大段生命周期(2MSL)状态。此时间期间,从新打开到客户机和服务器的链接的成本少于创建新链接。减小此条目的值容许 TCP/IP 更快地释放已关闭的链接,为新链接提供更多资源。若是运行的应用程序须要快速释放和建立新链接,并且因为 TIME_WAIT 中存在不少链接,致使低吞吐量,则调整此参数。
• 打开注册表编辑器,如 Regedit.exe 或 Regedt32.exe。
• 导航到:HKLMSystemCurrentControlSetServicesTcpipParameters
• 双击 TcpTimedWaitDelay,而后将“数值数据” 字段设置为 60(十进制)。
• 关闭注册表编辑器,而后从新启动计算机。
MaxUserPort
描述:肯定在应用程序从系统请求可用用户端口时,TCP/IP 可指定的最高端口号。
如何查看或设置:
使用 regedit 命令访问 HKEY_LOCAL_MACHINESYSTEMCurrentControlSet ServicesTCPIPParameters 注册表子键并建立名为 MaxUserPort 的新 REG_DWORD 值。中止并从新启动系统。
错误以下:
Action.c(198): Error -27791: Server "www.zcpx.cn" has shut down the connection prematurely
Action.c(198): Error -27790: Failed to read data from server "www.zcpx.cn": [10053] Software caused connection
abort
Action.c(198): Error -27740: Overlapped transmission of request to "www.zcpx.cn" for URL
"http://www.zcpx.cn/userEntry.do" failed: WSA_IO_PENDING
解决办法:
在脚本的最前面加上web_set_sockets_option("OVERLAPPED","0");
错误以下:
1、 Error -27727: Step download timeout (120 seconds)has expired when downloading resource(s). Set the “Resource Page Timeout is a Warning” Run-Time Setting to Yes/No to have this message as a warning/error, respectively
处理方法: |
A、应用服务参数设置太大致使服务器的瓶颈
B、页面中图片太多
C、在程序处理表的时候检查字段太大或多
错误分析:对于HTTP协议,默认的超时时间是120秒(能够在LoadRunner中修改),客户端发送一个请求到服务器端,若是超过120秒服务器端尚未返回结果,则出现超时错误。
解决办法:首先在运行环境中对超时进行设置,默认的超时时间能够设置长一些,再设置屡次迭代运行,若是还有超时现象,须要在"Runtime Setting">"Internet Protocol:Preferences">"Advanced"区域中设置一个"winlnet replay instead of sockets"选项,再回放是否成功。
53.Action.c(7): Error -27791: Server “192.168.1.77″ has shut down the connection prematurel
解决方案以下:
一、应用服务器死掉。小用户时程序上的问题,程序上处理数据库的问题
二、应用服务没有死。应用服务参数设置问题。例如:在许多客户端weblogic应用服务器被拒绝,而在服
务器端没有错误显示,则有多是weblogic中的server元素的acceptbacklog属性值设得太低。若是链接
时收到connection refused消息,说明应提升该值,每次增长25%。
三、数据库的链接
在应用服务的性能参数可能过小了,数据库启动的最大链接数(跟硬件的内存有关)
四、有时关闭卡巴斯基也会解决如上问题
1)观察response time 是否 超出默认的120秒
2)检查服务器日志是否有异常以及负载是否太高
3) web_set_timeout 设置更长的超时超时上限
如
web.set_timeout(”CONNECT”, “360″);
web.set_timeout(”RECEIVE”, “360″);
web.set_timeout(”STEP”, “360″))观察response time 是否 超出默认的120秒这个问题,要详细分析了。
应该不会是LR自身形成的问题。
把时间调长,就是为了,定位问题在什么地方,而不是为了绕过这个错误的出现。
4. Error -27791 connection prematurely
运行Controller时遇到这个error:
Action.c(7): Error -27791: Server "10.10.0.88" has shut down the connection prematurely
解决方案以下:
一、应用服务器死掉。小用户时程序上的问题,程序上处理数据库的问题
二、应用服务没有死。应用服务参数设置问题。例如:在许多客户端weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有多是 weblogic中的server元素的acceptbacklog属性 值设得太低。若是链接时收到connection refused消息,说明应提升该值,每次增长25%。
三、数据库的链接。在应用服务的性能参数可能过小了,数据库启动的最大链接数(跟硬件的内存有关)
四、有时关闭杀毒软件也会解决如上问题
5. Others
1. Failed to connect to server "域名:80": [10065] No Route to Host
解决:
这种错误信息有两种状况,一是交换机堵塞,一是服务器网络堵塞或者CPU没法响应(网卡中断处理不过来了)。
从服务器端检查下iptables 是否开启,看看 /proc/sys/net/ipv4/ip_conntrack_max 是多少。
2. TTP Status-Code=500 (Internal Server Error)
解决:
A. 这个问题,开发人员从程序和环境进行调优了。
B. 经过抓包发现有大量的sql语句重复执行,建议优化sql。
C. 优化JVM。机器配置:4G的内存,32个线程并发能力
-Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20
3. HTTP Status-Code=504 (Gateway Time-out)
解决:
502 bad Gateway 服务器做为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。
504Gateway Timeout 由做为代理或网关的服务器使用,表示不能及时地从远程服务器得到应答。
解决:能够启动多个tomcat服务,一个tomcat服务可能支撑不了那么大的并发。(通常状况下像IBM高配的服务一个tomcat能支持2000并发吧。)(只能让部署环境的同事帮忙调整,咱们没这权利啊。)
4. Step download timeout (120 seconds) has expired when downloading non-resource(s)
解决办法:
1.Virtual User Generator->Vuser->Run-time Settings->Internet Protocol->Proxy 设置成"Obtain the proxy settings from the default browser"(将浏览器里面的代理选项做为默认选项).。
2.Virtual User Generator->Vuser->Run-time Settings->Internet Protocol->Proxy->User proxy server->点击"Exceptions" 输入不须要经过代理服务器代理访问的IP也能解决此问题。
解决:
能够修改配置参数(tomcat的),也能够程序上进行调整超时时间。
如 <Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />
固然了也能够调整LR的配置但最好不这样。
此次测试的业务流程很简单,是向tomcat下的一个自制应用加压并观测其性能数据。需求也并不复杂尽可能多地对服务器加压,多并发多点击。使用的加压机是 3台1U服务器,内存分别为32g,32g,16g。测试机是1台1U服务器,内存硬盘cpu都和加压机相仿。不设置集合点,和思考时间,只自定义一个事 务。
需求对于并发用户数的理想为1000以上,每秒点击在10000以上。开始测试后发现,并发数在100以上后,就开始不断报错,错误主要是如下两种
Action.c(10): Error -27796: Failed to connect to server "192.168.12.252:81": [10060] Connection timed out
Action.c(10): Error -27791: Server "192.168.12.252" has shut down the connection prematurely
网上查到的解释是,加压机性能过好,致使端口开的过多而且来不及释放形成的,所以修改了加压机的maxport数和tcptimewaitdelay值。 重启后测试,问题明显好转但仍然存在。只要并发用户数超过1000,该报错便源源不断,同时随着报错数的不断增长每秒点击数响应下降。初步判断是服务器端 来不及响应部分请求致使不少链接超时。调试了好久找到了解决办法,第一步修改runtime setting下,internet protocol-preferences-options中几个timeout值,强制使lr发起的http请求的超时变长,要修改的值有http- request connect timeout,http-request receive timeout,step download timeout都设置为800秒,顺便提一下,keep-alive http connections应该是http长短链接的设置,因为本次测试的应用均为短链接,因此该值设为no。修改执行加压,报错和点击数仍然形同水火,一个 增长另一个必然减小。反复查看lr的设置后尝试将tools-options-timeout的各个超时也响应增长。加压后,报错再次获得了显著减小。 在1000用户数的状况下点击数能够到达每秒20000次而且报错在万分之1的比例。本觉得大功告成,谁知场景运行10分钟后,每秒点击数骤然降低,5分 钟以后降低到10000,而且仍有降低趋势。抓耳挠腮一阵后,分析出问题也许出在加大报错timeout后,不少 非正常链接还没有断开,在800s后渐渐超时,链接数的减小致使请求数减小。尝试勾选runtime setting下general-miscellaneous中error handing的设置continue on error。犹如一弯神器,立竿见影。最终测试结果达到了预期。
顺便提一下,analysis下对于响应时间的分析比较具体,不只能够看到每次迭代的时间,每一个事务的时间,还能够具体到请求和返回的网络消耗时间,服务器响应时间等等,具体能够在average transaction response time图的web page diagnostics中查看,但必须待生成完整日志之后。
54.Action.c(38): Error -27492: "HttpSendRequest" failed, Windows error code=12002 and retry limit (0) exceeded for URL
在runtime setting中的preferences- ->options-->http-request connect timeout(sec)的值设为999。
55.错误现象:Action.c(81):Continuing after Error -27498: Timed out while processing URL=http://172.18.20.70:7001/workflow/bjtel/leasedline/ querystat/ subOrderQuery.do
错误分析:这种错误经常是由于并发压力过大,服务器端太繁忙,没法及时响应客户端的请求而形成的,因此这个错误是正常现象,是压力过大形成的。
若是压力很小就出现这个问题,多是脚本某个地方有错误,要仔细查看脚本,提示的错误信息会定位某个具体问题发生的位置。
解决办法:例如上面的错误现象问题定位在某个URL上,须要再次运行一下场景,同时在其余机器上访问此URL。若是不能访问或时间过长,多是服务器或者此应用不能支撑如此之大的负载。分析一下服务器,最好对其性能进行优化。
若是再次运行场景后还有超时现象,就要在各类图形中分析一下缘由,例如能够查看是否服务器、DNS、网络等方面存在问题。
最后,增长一下运行时的超时设置,在"Run-Time Settings">"Internet Protocol:Preferences"中,单击"options",增长"HTTP-request connect timeout" 或者"HTTP-request receive"的值。
6、Action.c(6): Error -26612: HTTP Status-Code=500 (Internal Server Error) for http://192.168.0.8:10001/logonConsole.do;jsessionid={JSESSIONID2}
形成HTTP-500错误,有朋友告诉我以下几个可能:
一、运行的用户数过多,对服务器形成的压力过大,服务器没法响应,则报HTTP500错误。减少用户数或者场景持续时间,问题获得解决。
二、该作关联的地方没有去作关联,则报HTTP500错误。进行手工或者自动关联,问题获得解决。
三、录制时请求的页面、图片等,在回放的时候服务器找不到,则报HTTP500错误,若该页面可有可无,则能够在脚本中注释掉,问题将会获得解决。例如:有验证码的状况下,尽管测试时已经屏蔽了,可是录制的时候提交了请求,但回放的时候不存在响应。
四、参数化时的取值有问题,则报HTTP500错误。可将参数化列表中的数值,拿到实际应用系统中进行测试,可排除问题。
五、更换了应用服务器(中间件的更换,如tomcat、websphere、jboss等),仍是利用原先录制的脚本去运行,则极可能报HTTP500错误。由于各类应用服务器处理的机制不同,所录制的脚本也不同,解决办法只有从新录制脚本。
六、Windows xp2 与ISS组件不兼容,则有可能致使HTTP500错误。对ISS组件进行调整后问题解决。
七、系统开发程序写的有问题,则报HTTP500错误。例若有些指针问题没有处理好的,有空指针状况的存在。修改程序后问题解决。
查找后台日志发现报了不少0ra-01000错误,这是oracle达到最大游标参数值,google了下,最大缘由多是JDBC链接没关闭。最后查找weblogic链接池出了问题,不少链接没关闭。
7、Action.c(15): 错误 -27496: 内部错误(呼叫客户服务): _eStat (7) != LRW_ITEM_STAT_ENUM_UNHANDLED for HandledTask at 048E180C
8、Action.c(56): Error -27995: Requested link ("Text=计划管理") not found [MsgId: MERR-27995]
方法:在IE中的工具—>Internet选项—>高级—>HTML设置中选择第二个脚本类型.
9、错误 -27279:内部错误(呼叫客户服务):Report initialization failed , error code = -2147467259 [MsgId : MERR-27279 ]
建议重装一下LR.
这种问题有可能和你安装有关.dll文件出错不是说写的程序就能修改的.
10、设置了持续时间,出现错误为:27796, Failed to connect to server 'hostname';port_ld': 'reason'.10048.(凭记忆写的,不知道写错了没有)
成功的解决方法:
在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters里,有以下两个键值:
TcpTimedWaitDelay
MaxUserPort
1,这里的TcpTimedWaitDelay默认值应该中是30s,因此这里,把这个值调小为5s(按须要调整)。
2,也能够把MaxUserPort调大(若是这个值不是最大值的话)。
11、如何解决LodRunner中报错关于Error -10489 : Exception was raised when calling per-thread-terminate function
在用Loadrunner实施性能测试时,采用Goal模式加压,存在若是持续长时加压时LoadRunner的Controller会报 Error -10489 : Exception was raised when calling per-thread-terminate function错误;
问题产生缘由:
Unlike the earlier Windows versions, Windows 2000 and Windows XP have the default environment set to C:\Document and Settings\<user-name>\Local Settings\Temp instead of C:\Windows\temp. This long path with a space can cause several problems for LoadRunner. To resolve the issue, change to a directory without empty spaces.
解决方法:
在C盘(或是其它盘都可以)新建TEMP文件夹(为了后续设置临时文件准备)
右键"个人电脑"->高级->环境变量->编辑修改TEMP变量目录,指身上面新建的目录,如个人指向C:\TEMP->保存便可^_^
1> 问题描述Connection reset by peer. Error code : 10054
设置下载等的超时
用VuGen录制脚本后,回放或者加压的时候,可能会出现错误信息“Action.c(65): Error : socket6 - Connection reset by peer. Error code : 10054”
这是由于,下载的速度慢,致使超时,因此,须要调整一下超时时间,方法以下:
在Run-time setting窗口中的‘Internet Protocol’-‘Preferences’设置set advanced options(设置高级选项),,从新设置一下“HTTP-request connect timeout(sec)”
2> 问题描述:
Error:Failed to connect to server“192.168.2.192”:[10060]Connection
Error:timed out Error:Server“192.168.2.192”has shut down the connection prematurely
缘由:
1> 应用访问死掉
小用户时:程序上的问题。程序上存在数据库的问题
2> 应用服务没有死
应用服务参数设置问题
例如:
在许多客户端链接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有多是Weblogic中的server元素的AcceptBacklog属性值设得太低。若是链接时收到connection refused消息,说明应提升该值,每次增长25%
Java链接池的大小设置,或JVM的设置等
3> 数据库的链接
在应用服务的性能参数可能过小了
数据库启动的最大链接数(跟硬件的内存有关)
3> 问题描述
Error:Page download timeout(120seconds)has expired
分析缘由:
应用服务参数设置太大致使服务器的瓶颈
页面中图片太多
在程序处理表的时候检查字段太多
12、LoadRunner脚本中出现乱码:在录制Web协议脚本时出现中文乱码,在回放脚本时会使回放中止在乱码位置,脚本没法运行。
错误现象:某个连接或者图片名称为中文乱码,脚本运行没法经过。
错误分析:脚本录制可能采用的是URL-based script方式,若是程序定义的字符集合采用的是国际标准,脚本就会出现乱码现象。
解决办法:从新录制脚本,在录制脚本前,打开录制选项配置对话框进行设置,在"Recording Options"的"Advanced"选项里先将"Surport Charset"选中,而后选中支持"UTF-8"的选项。
十3、LoadRunner HTTP服务器状态代码:在录制Web协议脚本回放脚本的过程当中,会出现HTTP服务器状态代码,例如常见的页面-404错误提示、-500错误提示。
错误现象1:-404 Not Found服务器没有找到与请求URI相符的资源,但还能够继续运行直到结束。
错误分析:此处与请求URI相符的资源在录制脚本时已经被提交过一次,回放时不可再重复提交一样的资源,而须要更改提交资源的内容,每次回放一次脚本都要改变提交的数据,保证模拟实际环境,形成必定的负载压力。
解决办法:在出现错误的位置进行脚本关联,在必要时插入相应的函数。
错误现象2:-500 Internal Server Error服务器内部错误,脚本运行中止。
错误分析:服务器碰到了意外状况,使其没法继续回应请求。
解决办法:出现此错误是致命的,说明问题很严重,须要从问题的出现位置进行检查,此时须要此程序的开发人员配合来解决,并且产生的缘由根据实际状况来定,测试人员没法单独解决问题,并且应该尽快解决,以便于后面的测试。
十4、LoadRunner请求没法找到:在录制Web协议脚本回放脚本的过程当中,会出现请求没法找到的现象,而致使脚本运行中止。
错误现象:Action.c(41): Error -27979: Requested form not found [MsgId: MERR-27979]
Action.c(41): web_submit_form highest severity level was "ERROR",0 body bytes, 0 header bytes [MsgId: MMSG-27178]"
这时在tree view中看不到此组件的相关URL。
错误分析:所选择的录制脚本模式不正确,一般状况下,基于浏览器的Web应用会使用"HTML-based script"模式来录制脚本;而没有基于浏览器的Web应用、Web应用中包含了与服务器进行交互的Java Applet、基于浏览器的应用中包含了向服务器进行通讯的JavaScript/VBScript代码、基于浏览器的应用中使用HTTPS安全协议,这 时则使用"URL-based script"模式进行录制。
解决办法:打开录制选项配置对话框进行设置,在"Recording Options"的"Internet Protocol"选项里的"Recording"中选择"Recording Level"为"HTML-based script",单击"HTML Advanced",选择"Script Type"为"A script containing explicit"。而后再选择使用"URL-based script"模式来录制脚本。
十5、LoadRunner不执行检查方法:在录制Web协议脚本中添加了检查方法Web_find,可是在脚本回放的过程当中并无执行。
错误现象:在脚本中插入函数Web_find,在脚本中设置文本以及图像的检查点,可是在回放过程当中并无对设置的检查点进行检查,即Web_find失效。
错误分析:因为检查功能会消耗必定的资源,所以LoadRunner默认关闭了对文本以及图像的检查,因此在设置检查点后,须要开启检查功能。
解决办法:打开运行环境设置对话框进行设置,在"Run-time Settings"的"Internet Protocol"选项里的"Perference"中勾选"Check"下的"Enable Image and text check"选项。
十6、LoadRunner回放Web Services协议脚本错误:LoadRunner 8.0版本在录制Web Services协议的脚本时正常,但在回放时会出现错误,提示中止脚本运行。
错误现象:利用LoadRunner 8.0版原本录制Web Services协议的脚本没有任何错误提示,回放脚本时会出现以下错误提示"Error:server returned an incorrectly formatted SOAP response"。
错误分析:出现此错误的缘由是LoadRunner8.0在录制Web Services协议的脚本时存在一个缺陷:若是服务器的操做系统是中文的,VuGen会自动将WSDL文件的头改成<?xml version="1.0"encoding="zh_cn" ?>,因此才会有此错误提示。
解决办法:下载两个补丁,分别为"LR80WebServicesFPI_setup.exe"和"lrunner_web_ services_patch_1.exe"安装上便可。
http://wenku.baidu.com/view/a576eb0a79563c1ec5da71c8.html
十7、业务:进入借款单(显示借款单列表),新建借款单,新建后显示借款单列表(新建的借款单在此列表中有显示)
我是录制的脚本,可运行时,提示 Action.c(112): 错误 -26627: 对于“http://192.168.1.105:8080/T3/fee/feeLoanList.action”,HTTP 状态代码=404 (Not Found)
解决:
说两点:
1.手动正常未必就真正常,LR加压的时候可能链接数占满了,因此出404
2.还有一种状况,脚本里有检查语句,叫什么lr_check仍是什么的,就是一个脚本内部检查是否有该资源用的,不见着他我拼不出来,若是有,注释掉看看
十8、Action.c(38): Error -27492: "HttpSendRequest" failed, Windows error code=12002 and retry limit (0) exceeded for URL
在runtime setting中的preferences- ->options-->http-request connect timeout(sec)的值设为999
Runtime Setting>Preferences>Advanced区域中设置一个winlnet replay instead of sockets选项(不勾选此项报 Error -27727)
十9、错误 -27279:内部错误(呼叫客户服务):Report initialization failed , error code = -2147467259 [MsgId : MERR-27279 ]
警告: 扩展 LrXml.dll 报告在调用函数 ExtPerThreadInitialize 时出现错误 -1
错误: Vuser 初始化扩展 LrXml.dll 失败。
Vuser Terminated.
建议你重装一下LR.
这种问题有可能和你安装有关.dll文件出错不是说写的程序就能修改的.
负载测试是经过逐步增长系统负载,测试系统性能的变化,并最终肯定在知足性能指标的状况下,系统所能承受的最大负载量的测试,例如,访问一个页面的响应时间规定不超过1秒,负载测试就是测试在响应时间为1秒时,系统所能承受的最大并发访问用户的数量。
压力测试一般是在高负载状况下来对系统的稳定性进行测试,更有效地发现系统稳定性的隐患和系统在负载峰值的条件下功能隐患等。
性能测试:指在必定的约束条件下(指定的软件、硬件、网络环境等),肯定系统所能承受的最大负载压力。
性能测试包含负载测试、压力测试、大数据量测试、疲劳强度测试等。
第一,分析产品结构,明确性能测试的需求,包括并发、极限、配置和指标等方面的性能要求,必要时基于LOAD测试的相同测略需同时考虑稳定性测试的需求。
第二,分析应用场景和用户数据,细分用户行为和相关的数据流,肯定测试点或测试接口,列示系统接口的可能瓶颈,通常是先主干接口再支线接口,并完成初步的测试用例设计。
第三,依据性能测试需求和肯定的测试点进行测试组网设计,并明确不一样组网方案的重要程度或优先级做为取舍评估的依据,必要时在前期产品设计中提出支持性能测试的可测试性设计方案和对测试工具的需求。
第四,完成性能测试用例设计、分类选择和依据用户行为分析设计测试规程,并准备好测试用例将用到的测试数据。
第五,肯定采用的测试工具。
第六,进行初验测试,以主干接口的可用性为主,根据测试结果分析性能瓶颈,经过迭代保证基本的指标等测试的环境。
第七,迭代进行全面的性能测试,完成计划中的性能测试用例的执行。
第八,完成性能测试评估报告。
在进行性能测试的时候,咱们须要知道一些有效的性能指标,下面咱们来列出一些主要的性能指标:
一是,通用指标(指Web应用服务器、数据库服务器必需测试项):
*ProcessorTime:指服务器CPU占用率,通常平均达到70%时,服务就接近饱和;
*Memory Available Mbyte:可用内存数,若是测试时发现内存有变化状况也要注意,若是是内存泄露则比较严重;
*Physicsdisk Time :物理磁盘读写时间状况。
二是,Web服务器指标:
*Avg Rps:平均每秒钟响应次数=总请求时间/秒数;
*Avg time to last byte per terstion(mstes):平均每秒业务角本的迭代次数;*Successful Rounds:成功的请求;
*Failed Rounds:失败的请求;
*Successful Hits:成功的点击次数;
*Failed Hits:失败的点击次数;
*Hits Per Second:每秒点击次数;
*Successful Hits Per Second:每秒成功的点击次数;
*Failed Hits Per Second:每秒失败的点击次数;
*Attempted Connections:尝试连接数。
三是,数据库服务器指标:
*User 0 Connections :用户链接数,也就是数据库的链接数量;
*Number of deadlocks:数据库死锁;
*Butter Cache hit:数据库Cache的命中状况。
A4:制定性能测试计划—>开发测试脚本—>设计测试场景—>执行测试场景—>监控测试场景—>分析测试结果
功能测试经过;通常须要进行性能测试的系统,都是用户量比较大、业务使用比较频繁、比较重要的功能模块。
A6:主要有三部分组成:
使用Virtual User Generator录制测试脚本
LoadRunner的Controller组件。
在性能测试过程当中,须要模拟大量用户在同一时刻,访问系统并同时操做某一任务,能够经过配置集合点来实现,多个用户同时进行某操做;
集合点能够在服务器上建立密集的用户负载,使LoadRunner可以测试服务器在负载状态下的性能。
设置集合点函数:lr_rendezvous("Meeting"); // Meeting是集合点名称
场景用于模拟用户实际业务操做;
LoadRunner中场景有手工场景和面向目标的场景。
设置场景:选择场景类型、设置运行时设置、模拟用户数、加减压方式、持续时间,配置负载生成
1.选择场景中须要的脚本
2.选择为目标场景,仍是指定的手工场景
3.设置用户数、设置产生负载的设备
4.设置执行策略
LR经过转发请求,来捕获数据包,来造成脚本
解释:1.基于浏览器的应用程序推荐使用HTML-based Script, 脚本中采用
HTML页面的形式来表示,这种方式的Script脚本容易维护,容易理解,使用该选项中的advance中的第一个选项,若是单纯的HTML方式,是不容许使用关联的。
2.不是基于浏览器的应用程序推荐使用URL-based Script,脚本中的表示采用基于URL 的方式,不是很好阅读。
解释:1.是否记录录制过程当中的ThinkTime,若是记录,还能够设置最大值,通常我不记录这个值。
2.通知Vugen去从新设置每一个action之间的Http context,缺省是须要的。
3.完整记录录制过程的log,
4.保存一个本地的snapshot,能够加速显示
5.把html的title放到web_reg_find函数里面
6.支持的字符集标准
7.Http header的录制,咱们采用缺省便可,不须要用web_add_header去录制非标准的header信息。
对录制的content的内容进行filter,不做为resource处理的。
解释:这个就是我前面提到的关联,系统已经预先设置好了一些常见的关联rules,咱们录制脚本以前,能够把系统的
关联:不少构架用sessionid等方法标识不一样任务和数据,应用在每次运行时方式发送数据不彻底相同,须要利用的机制对录制的脚本进行处理,这种机制叫作关联(服务端发送到客户端)
目标场景,手工场景
2.录制完成后,vuser-scan action for correlations
web_reg_save_param()函数主要根据须要作关联的动态数据前面和后面的固定字符串来识别、提取动态数据,因此在作关联时,须要找出动态数据的左、右边界字符串。
在init、end 中不能使用集合点、事务等, init、end只执行一次。
在runtime_settings中download filter里面进行设置。
就是代理服务器
HTTP-request connect timeout、HTTP-request receive timeout、step download timeout
ContentCheck的设置是为了让VuGen 检测何种页面为错误页面。若是被测的Web 应用没有使用自定义的错误页面,那么这里不用做更改;若是被测的Web 应用使用了自定义的错误页面,那么这里须要定义,以便让VuGen 在运行过程当中检测,服务器返回的页面是否包含预约义的字符串,进而判断该页面是否为错误页
面。若是是,VuGen就中止运行,指示运行失败。
使用方法:点击在runtime settings中点击“contentcheck”,而后新创建一个符合要求的应用程序和规则,设定须要查找的文本和前缀后缀便可使用。
模拟用户访问速度的带宽。
能够很直观的看到,在负载下系统的运行状况以及各类资源的使用状况,能够对系统的性能瓶颈定位、性能调优等起到想要的辅助做用。
在controller中,点击detailis-Refresh-script便可。
线程有本身的全局数据。线程存在于进程中,所以一个进程的全局变量由全部的线程共享。因为线程共享一样的系统区域,操做系统分配给一个进程的资源对该进程的全部线程都是可用的,正如全局数据可供全部线程使用同样。在Controller中将使用驱动程序(如mdrv.exe、r3vuser.exe)运行vuser。若是按进程运行每一个vuser,则对于每一个vuser实例,都将反复启动同一驱动程序并将其加载到内存中。将同一驱动程序加载到内存中会占用大量的RAM(随机存储器)及其余系统资源。这就限制了能够在任一负载生成器上运行的vuser数量。若是按线程运行每一个vuser,Controller为每50个vuser(默认状况下)仅启动驱动程序(如mdrv.exe)的一个实例。该驱动程序将启动几个vuser,每一个vuser都按线程运行。这些线程vuser将共享父驱动进程的内存段。这就消除了屡次从新加载驱动程序/进程的须要,节省了大量内存空间,从而能够在一个负载生成器上运行更多的Vuser.
在controller中,点击Results-Results settings,在里面进行相应的设置便可。
对集合点策略进行相应的设置便可。即在controller中,点击Scenario-Rendezvous-policy进行相应的设置便可,因为题目中“一半的用户”没有说明白具体指什么样的用户,如今很差肯定具体对里面的哪一个选项进行设置。
A:通用的API:,就是跟具体的协议无关,在任何协议的脚本里都能用的;
B:针对协议的:像lrs前缀是winsock的;lrd的是针对database;
C:自定义的:这个范围就比较广了;好比至少有Java Vuser API 、lrapi、XML API。还能够添加WindowsAPI和自定义函数库。
【lr_message】 int lr_message (const char *format, exp1, exp2,…expn.); 中文解释:lr_message函数将信息发送到日志文件和输入窗口。在VuGen中运行时,输入文件为output.txt。
【lr_log_message】 int lr_log_message (const char *format, exp1, exp2,…expn.); 中文解释:lr_log_message函数将消息发送到Vuser或代理日志文件(取决于应用程序),而不是发送到输出窗口。经过向日志文件发送错误消息或其余信息性消息,能够将该函数用于调试。 【lr_error_message】 int lr_error_message (const char *format, exp1, exp2,…expn. ); 中文解释:lr_error_message函数将错误消息发送到输出窗口和Vuser日志文件。要发送不是特定错误消息的特殊通知,请使用lr_output_message。
【lr_output_message】 int lr_output_message (const char *format, exp1, exp2,…expn.); 中文解释:lr_output_message函数将带有脚本部分的行号的消息发送到输出窗口和日志文件。
【lr_debug_message函数组】 int lr_debug_message (unsigned int message_level, const char *format, … ); 中文解释:lr_debug_message函数在指定的消息级别处于活动状态时发送一条调试信息。若是指定的消息级别未出于活动状态,则不 发送消息。您能够从用户界面或者使用lr_set_debug_message, 将处于活动状态的消息级别设置为MSG_CLASS_BRIEF_LOG 或MSG_CLASSS_EXTENDED_LOG。要肯定当前级别,
请使用lr_get_debug_message。 unsigned int lr_get_debug_message ( ); 中文解释:lr_get_debug_message函数返回当前的日志运行时设置。该设置肯定发送到输出端的信息。日志设置是使用运行时设置对 话框或经过使用lr_set_debug_message函数指定的。 int lr_set_debug_message (unsigned int message_level, unsigned int on_off); 中文解释:lr_set_debug_message函数设置脚本执行的调试消息级别message_lvl。经过设置消息级别,能够肯定发送哪些信息。 启 动设置的方法是将LR_SWITCH_ON做为on_off传递,禁用设置的方法是传递LR_SWITCH_OFF。
【lrd_stmt 】:将SQL语句与光标关联
【lrd_fetch】: 提取结果集中得下一条记录
同一场景
1.小用户量的状况下测试
2.大用户量状况下的测试
分析的方法:
整个系统架构分析,系统响应时间消耗,利用图表分析
查看事务响应时间,经过事务摘要图分析事务响应时间,那个消耗最大(经过小用户量和大用户量的响应时间分析,查看那个事务响应时间最高),肯定哪部分功能是性能的瓶颈,分析window resource图表,查看cpu
使用下列计数器标识cpu瓶颈
Processor\ Interrupts/sec
Processor\ % Processor Time
Process(process)\ % Processor Time
System\ Processor Queue Length
经过它来肯定是否硬件自己出现瓶颈,或者进一步肯定应该怎么去判断性能产生瓶颈的地方!
下一步去判断进程,那个进程消耗cpu最高
下边就有不少种状况须要你本身去判断,有多是进程调用了的函数消耗了系统资源造成上边的问题,也有多是后台数据库出现的问题(这个就要看你的系统配置是什么样的,好比你的db服务器和应用服务器都配置在一台机器上)
性能产生瓶颈有不少地方,因此须要进一判断,是不是后台数据库的问题还有待分析,是那条语句致使的问题须要进一步分析判断。
分析原则:
• 具体问题具体分析(这是因为不一样的应用系统,不一样的测试目的,不一样的性能关注点)
• 查找瓶颈时按如下顺序,由易到难。
服务器硬件瓶颈-〉网络瓶颈(对局域网,能够不考虑)-〉服务器操做系统瓶颈(参数配置)-〉中间件瓶颈(参数配置,数据库,web服务器等)-〉应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等)
注:以上过程并非每一个分析中都须要的,要根据测试目的和要求来肯定分析的深度。对一些要求低的,咱们分析到应用系统在未来大的负载压力(并发用户数、数据量)下,系统的硬件瓶颈在哪儿就够了。
• 分段排除法 颇有效
分析的信息来源:
•1 根据场景运行过程当中的错误提示信息
•2 根据测试结果收集到的监控指标数据
一.错误提示分析
分析实例:
1 •Error: Failed to connect to server “10.10.10.30:8080″: [10060] Connection
•Error: timed out Error: Server “10.10.10.30″ has shut down the connection prematurely
分析:
•A、应用服务死掉。
(小用户时:程序上的问题。程序上处理数据库的问题)
•B、应用服务没有死
(应用服务参数设置问题)
例:在许多客户端链接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有多是Weblogic中的server元素的 AcceptBacklog属性值设得太低。若是链接时收到connection refused消息,说明应提升该值,每次增长25%
•C、数据库的链接
(1、在应用服务的性能参数可能过小了 2、数据库启动的最大链接数(跟硬件的内存有关))
2 Error: Page download timeout (120 seconds) has expired
分析:多是如下缘由形成
•A、应用服务参数设置太大致使服务器的瓶颈
•B、页面中图片太多
•C、在程序处理表的时候检查字段太大多
二.监控指标数据分析
1.最大并发用户数:
应用系统在当前环境(硬件环境、网络环境、软件环境(参数配置))下能承受的最大并发用户数。
在方案运行中,若是出现了大于3个用户的业务操做失败,或出现了服务器shutdown的状况,则说明在当前环境下,系统承受不了当前并发用户的负载压力,那么最大并发用户数就是前一个没有出现这种现象的并发用户数。
若是测得的最大并发用户数到达了性能要求,且各服务器资源状况良好,业务操做响应时间也达到了用户要求,那么OK。不然,再根据各服务器的资源状况和业务操做响应时间进一步分析缘由所在。
2.业务操做响应时间:
• 分析方案运行状况应从平均事务响应时间图和事务性能摘要图开始。使用“事务性能摘要”图,能够肯定在方案执行期间响应时间过长的事务。
• 细分事务并分析每一个页面组件的性能。查看过长的事务响应时间是由哪些页面组件引发的?问题是否与网络或服务器有关?
• 若是服务器耗时过长,请使用相应的服务器图肯定有问题的服务器度量并查明服务器性能降低的缘由。若是网络耗时过长,请使用“网络监视器”图肯定致使性能瓶颈的网络问题
3.服务器资源监控指标:
内存:
1 UNIX资源监控中指标内存页交换速率(Paging rate),若是该值偶尔走高,代表当时有线程竞争内存。若是持续很高,则内存多是瓶颈。也多是内存访问命中率低。
2 Windows资源监控中,若是Process\Private Bytes计数器和Process\Working Set计数器的值在长时间内持续升高,同时Memory\Available bytes计数器的值持续下降,则极可能存在内存泄漏。
内存资源成为系统性能的瓶颈的征兆:
很高的换页率(high pageout rate);
进程进入不活动状态;
交换区全部磁盘的活动次数可高;
可高的全局系统CPU利用率;
内存不够出错(out of memory errors)
处理器:
1 UNIX资源监控(Windows操做系统同理)中指标CPU占用率(CPU utilization),若是该值持续超过95%,代表瓶颈是CPU。能够考虑增长一个处理器或换一个更快的处理器。若是服务器专用于SQL Server,可接受的最大上限是80-85%
合理使用的范围在60%至70%。
2 Windows资源监控中,若是System\Processor Queue Length大于2,而处理器利用率(Processor Time)一直很低,则存在着处理器阻塞。
CPU资源成为系统性能的瓶颈的征兆:
很慢的响应时间(slow response time)
CPU空闲时间为零(zero percent idle CPU)
太高的用户占用CPU时间(high percent user CPU)
太高的系统占用CPU时间(high percent system CPU)
长时间的有很长的运行进程队列(large run queue size sustained over time)
磁盘I/O:
1 UNIX资源监控(Windows操做系统同理)中指标磁盘交换率(Disk rate),若是该参数值一直很高,代表I/O有问题。可考虑更换更快的硬盘系统。
2 Windows资源监控中,若是 Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec页面读取操做速率很低,则可能存在磁盘瓶径。
I/O资源成为系统性能的瓶颈的征兆 :
太高的磁盘利用率(high disk utilization)
太长的磁盘等待队列(large disk queue length)
等待磁盘I/O的时间所占的百分率过高(large percentage of time waiting for disk I/O)
过高的物理I/O速率:large physical I/O rate(not sufficient in itself)
太低的缓存命中率(low buffer cache hit ratio(not sufficient in itself))
太长的运行进程队列,但CPU却空闲(large run queue with idle CPU)
4.数据库服务器:
SQL Server数据库:
1 SQLServer资源监控中指标缓存点击率(Cache Hit Ratio),该值越高越好。若是持续低于80%,应考虑增长内存。
2 若是Full Scans/sec(全表扫描/秒)计数器显示的值比1或2高,则应分析你的查询以肯定是否确实须要全表扫描,以及SQL查询是否能够被优化。
3 Number of Deadlocks/sec(死锁的数量/秒):死锁对应用程序的可伸缩性很是有害,而且会致使恶劣的用户体验。该计数器的值必须为0。
4 Lock Requests/sec(锁请求/秒),经过优化查询来减小读取次数,能够减小该计数器的值。
Oracle数据库:
1 若是自由内存接近于0并且库快存或数据字典快存的命中率小于0.90,那么须要增长SHARED_POOL_SIZE的大小。
快存(共享SQL区)和数据字典快存的命中率:
select(sum(pins-reloads))/sum(pins) from v$librarycache;
select(sum(gets-getmisses))/sum(gets) from v$rowcache;
自由内存 select * from v$sgastat where name=’free memory’;
2 若是数据的缓存命中率小于0.90,那么须要加大DB_BLOCK_BUFFERS参数的值(单位:块)。
缓冲区高速缓存命中率:
select name,value from v$sysstat where name in (‘db block gets’,
‘consistent gets’,'physical reads’) ;
Hit Ratio = 1-(physical reads / ( db block gets + consistent gets))
3 若是日志缓冲区申请的值较大,则应加大LOG_BUFFER参数的值。
日志缓冲区的申请状况 :
select name,value from v$sysstat where name = ‘redo log space requests’ ;
4 若是内存排序命中率小于0.95,则应加大SORT_AREA_SIZE以免磁盘排序 。
内存排序命中率 :
1.A、应用服务死掉。
(小用户时:程序上的问题。程序上处理数据库的问题)
B、应用服务没有死
(应用服务参数设置问题)
例:在许多客户端链接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有多是Weblogic中的server元素的AcceptBacklog属性值设得太低。若是链接时收到connection refused消息,说明应提升该值,每次增长25%
C、数据库的链接
(一、在应用服务的性能参数可能过小了 二、数据库启动的最大链接数(跟硬件的内存有关))
1.lr_think_time默认是没有启用的。因此
咱们在执行测试或在回放的时候启用它。具体操做为:Vugen--》Vuser---》Runtime-settings-----》thinktime-----》选中Replay thinktime,其余设置根据实际须要。
关于thinktime的一个详细的介绍和用法,见:http://www.testage.net/html/19/n-155019.html
2.设置Rendezvous的时间。
在Controller中,Scenarioc菜单-----》Rendezvous 进入就可看到目前脚本中的各个集合点,选中一个,而后点击“Policy”进入后,就能够设置集合点的属性,Rendezvous默认为30秒,能够从新设置成本身指望的值。
3.Step download timeout(sec) 设置。
这 个默认是120秒,可是常常咱们要设置的更大一些,具体设置方法:Vugen--》Vuser---》Runtime-settings----》 Preferences------》option,将Step download timeout(sec)默认值120s改成本身须要的值,其次要改变HTTP-reguest connnect timeout(sec)和HTTP-reguest receive timeout(sec)也为相应的值。
4.修改本机tcp链接数。
由于我的pc机的默认的tcp链接数只有15个(xp),因此咱们在模拟虚拟多个用户时,就会遇到tcp的链接限制,从而报错。修改的方法:windows下运行 Patch.exe
输入C,再输入你要的TCP/IP链接数字(通常为500~2000)回车确认
输入Y 回车确认。
倒计时15秒后结束。
接着再运行下Patch.exe,看链接数是否是由原来的10变成本身改了的数值。
Patch.exe 下载地址:http://www.touchboy.cn/2007/05/% ... %E6%8E%A5%E6%95%B0/
执行后能够修改TCP/IP并发链接数,通常状况建议修改到1024,P2P下载够了。如何修改TCP/IP并发链接数,网络上提供很多修改办法,但其中有很多是行不通的,本文将作详细分析.
1、注册表修改法的误区
2、使用工具来替换Tcpip.sys
3、DOS下修改Tcpip.sys文件
4、使用比特精灵附带的工具
以 上几种方法虽然提升了Windows XP SP2的多线程访问速度,但却下降了SP2的安全性能,若是你的电脑感染了病毒和木马,过多地启用新线程,会加速病毒和木马地蔓延,所以你在追求网络下载 速度的同时,也要注意网络安全。建议你及时安装升级杀毒软件和防火墙,若是是普通用户,能够利用上面的方法,将TCP最大并发链接数设置为 10~30,BT用户能够设置为100~150。
6.对LR中报WSA_IO_pending的解析和解决
Message Code 27740
Overlapped transmission of request to '%1' for URL 'URL' failed.
The transmission of data to the server failed. It could be a network, router, or server problem. The word Overlapped refers to the way LoadRunner sends data in order to get a Web Page Breakdown.
Troubleshooting
Add the following statement to the beginning of the script to disable the breakdown of the "First Buffer" into server and network time: web_set_sockets_option("OVERLAPPED_SEND", "0");
web_set_sockets_option("OVERLAPPED_SEND", "0");
7.关于Error -27791: Error -27790:Error -27740:错误的解决方法:
错误以下:
Action.c(198): Error -27791: Server "www.zcpx.cn" has shut down the connection prematurely
Action.c(198): Error -27790: Failed to read data from server "www.zcpx.cn": [10053] Software caused connection
abort
Action.c(198): Error -27740: Overlapped transmission of request to "www.zcpx.cn" for URL
"http://www.zcpx.cn/userEntry.do" failed: WSA_IO_PENDING
解决办法:
在脚本的最前面加上web_set_sockets_option("OVERLAPPED","0");
8.LR中错误代号为27796的一个解决方法
问题:
曾经遇到过一个问题,在一次性能测试过程当中,使用http协议的多用户向服务器发送请求。设置了持续时间,出现错误为:27796, Failed to connect to server 'hostname';port_ld': 'reason'.10
048。
分析
因 为负载生成器的性能太好,发数据包特别快,服务器也响应特别快,从而致使负载生成器的机器的端口在没有timeout以前就所有占满了。在所有占满后,就 会出现上面的错误。执行netstat –na命令,能够看到打开了不少端口。因此就调整TCP的time out。即在最后一个端口尚未用到时,前面已经有端口在释放了。
成功的解决方法:
在负载生成器的注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters里,有以下两个键值:
TcpTimedWaitDelay
MaxUserPort
1,这里的TcpTimedWaitDelay默认值应该中是30s,因此这里,把这个值调小为5s(按须要调整)。
2,也能够把MaxUserPort调大(若是这个值不是最大值的话)。
反复验证,问题解决。
Loadrunner性能调优-服务器tcp链接数和数据库链接数配置
在压力测试过程当中,常常会遇到 500internal error错误,这一般是服务链接或数据库链接方面的错误。
这个时候咱们须要察看后台log:
1. Loadrunner 的log,能够查看是哪一个action 出了错。
2. Web service log, 这个根据部署的web service 的不一样而不一样。
我这里使用的是glassfish v3.0, log: ../domains/Domainname/Log
调优:
1. 设置服务器tcp的容许最大链接数:windows 2003, 须要装插件:tcpz_20090409
2. 设置数据库的容许最大链接数:Oracle 11g
select value from v$parameter where name = 'processes' --查看数据库最大链接数
select count(*) from v$process --查看当前实际链接数
alter system set processes = 300 scope = spfile; --修改数据库最大链接数
SELECT osuser, a.username,cpu_time/executions/1000000||'s', sql_fulltext,machine
from v$session a, v$sqlarea b where a.sql_address =b.address order by cpu_time/executions desc;
3. 修改oracle 的监听配置,略。
总之,性能测试过程当中可能会遇到不少报错,测试过程当中须要监视web service, db connection, web server hardware and db hardware.
察看log有助于快速找到问题根源。
联系QQ 6449694