偶是测试新手,希望前辈们能多多指教。

LoadRunner出现error问题及解决方法总结[转载]

上一篇 / 下一篇  2009-07-10 14:49:48 / 个人分类:LoadRunner学习日志

 

  一、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系统起作用,此法来自zee的资料。

 

ction.c(34): Error -27727:Stepdownloadtimeout(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   [MsgId: MERR-27727]
Action.c(34): web_link("****") highest severity level was "ERROR", 14506915 body bytes, 547 header bytes   [MsgId: MMSG-26388]Ending action Action.

解决方法:


一、取消选中run time settings-browser emulation-download non-html resources.解决 。

二、run-time settings->preferences->advanced->options下设置

Http-request connect timeout(sec) 把值120改为600,

Http-request recive timeout(sec) 把值120改为600,

测试结果分析的时候,在网页细分图中发现,搜索页面下会有一个登陆页面的aspx,初步分析是搜索超时造成返回登陆页面(页面有超时设置,多久没有登陆系统会返回登陆界面),按照上述方法解决。

另附上一篇看到的日志

来自:http://kaixin322.blog.sohu.com/114120249.html

作者:风~自由自在

这两天测试并发修改采购收货时,录制回放正确,运行脚本,集合点3个并发时,却老是出错

如下:

Action.c(30): Error -26612: HTTP Status-Code=500 (Internal Server Error) forhttp://192.168.100.88:88/Purchase/stockin_action.asp?Oper=Edt

解决过程:按Help提示在浏览器输入原地址,发现提示“请重新登陆系统”。

被此误导,偶以为是Session ID、或Cookie失效,于是尝试找关联,花了N多时间。可是脚本里确实不存在需要关联的地方呀,系统默认关联了。

与程序员沟通,证实此过程不会涉及到Session ID 或Cookie。那为什么?

因为集合点下一站就是修改的提交操作,于是查找web_submit_data-->定位查找Log文档

注意点:怎么找log文件

-->Controller-->Results-->Results Settings 查找本次log文件保存目录-->到该目录下查找log文件夹-->打开

惊喜的发现其中竟然有所有Vuser 的运行log。-->打开Error 查找报错的Vuser-->打开相应的log文件

查找error,然后偶发现了一段让偶热泪盈眶的话:

Action.c(30):     <p>Microsoft OLE DB Provider for ODBC Drivers</font> <font face="宋体" size=2>错误 '800040
Action.c(30):     05'</font>\n
Action.c(30):     <p>\n
Action.c(30):     <font face="宋体" size=2>[Microsoft][ODBCSQLServer Driver][SQL Server]事务(进程 ID  53)
Action.c(30):    与另一个进程已被死锁在  lock 资源上,且该事务已被选作死锁牺牲品。请重新运行该事务。</font>
Action.c(30):     \n
Action.c(30):     <p>\n
Action.c(30):     <font face="宋体" size=2>/Purchase/stockin_action.asp</font><font face="宋体" size=2>,行
Action.c(30):     205</font>
Action.c(30): Error -26612: HTTP Status-Code=500 (Internal Server Error) for "http://192.168.100.88:88/Purchase/stockin_action.asp?Oper=Edt"   [MsgId: MERR-26612]
Action.c(30): t=37758ms: Closing connection to 192.168.100.88 after receiving status code 500   [MsgId: MMSG-26000]
Action.c(30): t=37758ms: Closed connection to 192.168.100.88:88 after completing 43 requests   [MsgId: MMSG-26000]
Action.c(30): t=37760ms: Request done "http://192.168.100.88:88/Purchase/stockin_action.asp?Oper=Edt"   [MsgId: MMSG-26000]
Action.c(30): web_submit_data("stockin_action.asp") highest severity level was "ERROR", 1050 body bytes, 196 header bytes   [MsgId: MMSG-26388]
Ending action Action. [MsgId: MMSG-15918]
Ending iteration 1. [MsgId: MMSG-15965]
Ending Vuser... [MsgId: MMSG-15966]
Starting action vuser_end. [MsgId: MMSG-15919]

解决了。。。。。。。

很寒。由此可以看出,查看日志文件是件多么重要的事情啊!!!!!
其实并发死锁本来就是本次的重点,之前是写事务,但没有做整个页面的锁定,只是写在SQL里。程序员说这样容易出现页面错误,

又改成页面锁定,具体怎么锁偶没看懂asp外行。之前事务冲突,偶让他写个标志,定义个数值字段增一,偶就可以直观看出来了。

这次改成页面就删掉这些标志了,于是出错就无处可寻。

这次最大的收获就是知道怎么查找Controller的log文件。以后看到Error就不会被牵着鼻子走了~~~~

 

-------------------------------------

血的教训~~

再次碰到26612错误,此次偶没认真查看log,又重蹈覆辙。

找了N久,还是没发现问题所在。后来索性又打印出所有log。真理就显示出来了。。

so偷懒不得~~

  二、问题描述Connection reset by peer

  这个问题不多遇见,一般是由于下载的速度慢,导致超时,所以,需要调整一下超时时间。

  解决办法:Run-time setting窗口中的‘Internet Protocol’-‘Preferences’设置set advanced options(设置高级选项),重新设置一下“HTTP-request connect timeout(sec),可以稍微设大一些”;

  三、问题描述connection refused

  这个的错误的原因比较复杂,也可能很简单也可能需要查看好几个地方,解决起来不同的操作系统方式也不同;

  1、 首先检查是不是连接weblogic服务过大部分被拒绝,需要监控weblogic的连接等待情况,此时需要增加acceptBacklog,每次增加 25%来提高看是否解决,同时还需要增加连接池和调整执行线程数,(连接池数*Statement Cache Size)的值应该小于等于oracle数据库连接数最大值;

  2、 如果方法一操作后没有变化,此时需要去查看服务器操作系统中是否对连接数做了限制,AIX下可以直接vi文件limits修改其中的连接限制数,还有 tcp连接等待时间间隔大小,wiodows类似,只不过wendows修改注册表,具体修改方法查手册,注册表中有TcpDelayTime项;

  四、问题描述open many files

  问题一般都在压力较大的时候出现,由于服务器或者应用中间件本身对于打开的文件数有最大值限制造成,解决办法:

  1、 修改操作系统的文件数限制,aix下面修改limits下的nofiles限制条件,增大或者设置为没有限制,尽量对涉及到的服务器都作修改;

  2、 方法一解决不了情况下再去查看应用服务器weblogic的commonEnv.sh文件,修改其中的nofiles文件max-nofiles数增大,应该就可以通过了,具体就是查找到nofiles方法,修改其中else条件的执行体,把文件打开数调大;修改前记住备份此文件,防止修改出错;

  五、问题描述has shut down the connection prematurely

  一般是在访问应用服务器时出现,大用户量和小用户量均会出现;

  来自网上的解释:

  1> 应用访问死掉

  小用户时:程序上的问题。程序上存在数据库的问题

  2> 应用服务没有死

  应用服务参数设置问题

  例如:

  在许多客户端连接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有可能是Weblogic中的server元素的AcceptBacklog属性值设得过低。如果连接时收到connection refused消息,说明应提高该值,每次增加25%

  Java连接池的大小设置,或JVM的设置等

  3> 数据库的连接

  在应用服务的性能参数可能太小了

  数据库启动的最大连接数(跟硬件的内存有关)

  以上信息有一定的参考价值,实际情况可以参考此类调试。

  如果是以上所说的小用户时:程序上的问题。程序上存在数据库的问题,那就必须采用更加专业的工具来抓取出现问题的程序,主要是程序中执行效率很低的sql语句,weblogic可以采用introscope定位,期间可以注意观察一下jvm的垃圾回收情况看是否正常,我在实践中并发500用户和600用户时曾出现过jvm锯齿型的变化,上升下降都很快,这应该是不太正常的;

  六、问题描述Failed to connect to server

  这个问题一般是客户端链接到服务失败,原因有两个客户端连接限制(也就是压力负载机器),一个网络延迟严重,解决办法:

  1、 修改负载机器的tcpdelaytime注册表键值,改小;

  2、 检查网络延迟情况,看问题出在什么环节;

  建议为了减少这种情况,办法一最好测试前就完成了,保证干净的网络环境,每个负载机器的压力测试用户数不易过大,尽量平均每台负载器的用户数,这样以上问题出现的概率就很小了。

ErrorFailed to connect to server192.168.2.192[10060]Connection

Errortimed out ErrorServer192.168.2.192has shut down the connection prematurely

原因:

1>    应用访问死掉

小用户时:程序上的问题。程序上存在数据库的问题

2>    应用服务没有死

应用服务参数设置问题

例如:

在许多客户端连接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有可能是Weblogic中的server元素的AcceptBacklog属性值设得过低。如果连接时收到connection refused消息,说明应提高该值,每次增加25

Java连接池的大小设置,或JVM的设置等

3>    数据库的连接

在应用服务的性能参数可能太小了

数据库启动的最大连接数(跟硬件的内存有关)

ErrorPage download timeout120secondshas expired

分析原因:

应用服务参数设置太大导致服务器的瓶颈

页面中图片太多

在程序处理表的时候检查字段太多

 

七:LR回放中highest severity level was"ERROR"的解决方

 

在录制时一切正常,而回放时提示类似如下错误;或者回放时问题,在场景中运行时报错,查看结果日志,如下:

 Action.c(41): web_submit_form. highest severity level was "ERROR",   0 body bytes, 0 header bytes    [MsgId: MMSG-27178]"

 处理方法如下:

一:打开recording options,在internet protocol下的recording中选择recording level为HTML-based script,点击HTML Advanced,选择script. type为A script. containing explicit.即可。

二:
取消选中run time settings-browser emulation-download non-html resources.解决 
注:方法一解决了我的问题
 
八:Warning -27077: The "vuser_init" section contains web function(s) when the "Simulate a new user on each iteration" Run-Time Setting is ON.  This may produce unpredictable results with multiple iterations   [MsgId: MWAR-27077]
通过LR来录制登录过程并生成脚本,设置了自动关联,并回放录制脚本,观察回放日志发现没有报error信息,说明脚本没有问题,将脚本放入Controller中设置100个用户设置运行,发现运行一段时间开始报错,这里先不说报什么错,继续观察脚本,回到Vuser中调试,再次回访观察日志文件,发现标题上的错误信息:

仔细分析发现这里的警告信息提示"Simulate a new user on each iteration",表示在每次迭代都模拟一个新的用户,对于web登录系统来说,通常都是用session来保存cookie信息,而"Simulate a new user on each iteration"是LR中的一项缺省设置,按照LR手册来讲,这个选项一般带来的副作用并不十分明确。我们再来做另外一个实例,就是一个数据添加页面,通过录制脚本来添加数据,回放过程中也提示该信息,没有提示error信息,将脚本放入Controller中运行,设置100个用户,设置每个用户迭代运行2次,按照计算来讲就是添加200条记录,开始运行,结果发现实际数据库中只新增了100条记录,再回头寻找原因发现脚本回放中的"Simulate a new user on each iteration",会不会跟这个有关系,根据理解,每次迭代模拟一个新用户来运行,而且该设置在LR中缺省,并默认也是情况缓存的,也就是说同时情况了session信息,导致每次都需要重新来建立新的session才能可以添加数据,在分析日志发现在循环迭代中有一个访问页面timeout.jsp,从这里可以发现是session超时引起的,可以猜想在两次迭代中肯定是清除了cookie。在LR中找到"Simulate a new user on each iteration"的设置区域,如下图:

通过上图发现LR默认就是设置勾选"Simulate a new user on each iteration"该选项,去掉勾选之后再回放脚本,观察回放日志发现,Warning信息已经消失了。

同样将脚本放置Contoller中继续之前设置,开始循环运行,结果会如期而至的。

通过两个简单的实例来说明LR中脚本调试的一些关注点,对于日志中警告信息并不是没有原因的,既然是警告信息就总有可能遇到,不然系统也不会给出提示,当然在web测试中可能还是特别的多见,其实在做关联的时候也经常有warning提示。如果大家做过客户端软件的压力测试时,应该就比较熟悉warning了,通常一些客户端软件由于一些特定的协议,LR支持不太好,总会在录制的脚本运行之后发现有丢包现象,但是不会以错误的形式来提示,而是在回放日志以warning来提示。

 

TAG:

Admin@123的个人空间 引用 删除 Admin@123   /   2010-03-27 09:56:30
学习啦,楼主
 

评分:0

我来说两句

Open Toolbar