【Q_LoadRunner】Error -27727: Step download timeout
今天run10个Vuser并发访问www.sina.com.cn,场景设计为:10个Vuser同时开始、同时结束,且每个Vuser在运行前先初始化,持续运行5分钟,运行结果:报错。
错误信息如下:
Error -27727:Action.c(158) Error -27727 Step download timeout(120 seconds) has expired when download 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
在网上查了些资料,发现只要做如下操作即可解决上述问题:
打开Vnuser->Run-Time Settings->Internet Protocol->Preferences,勾选“Winlnet replay instead of Sockets(Windows only)”,即可。
具体原因,请看如下转载内容:
转自:http://www.51testing.com/html/67/225467-212514.html
kernzhang解释如下
这个问题很有意思!呵呵!首先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重播引擎。