Loadrunner 并发时'Error -27492 HttpSendRequest failed'解决办法

Posted cheerjude

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Loadrunner 并发时'Error -27492 HttpSendRequest failed'解决办法相关的知识,希望对你有一定的参考价值。

问题点

技术分享图片

 

Loadrunner11对脚本单独回放时,回放100%正常无报错信息,但是运行场景多个用户并发测试时,运行一段时间后,每次均报错:
Error -27492: "HttpSendRequest" failed, Windows error code=12002
技术分享图片
 
百度了一下,答案千篇一律,基本解决办法都是:
“在Runtime-setting中的preferences-->options-->http-request connect timeout(sec)的值设为999。”
然并卵.....设置后依然报错,无法解决报错问题。

问题根源

报错显示是因为请求连接超时。
普通情况下的处理,先设置"Runtime-setting中的preferences-->options-->http-request connect timeout(sec)的值设为999",确保不要请求超时,但如果依旧报错,请看下文。
技术分享图片
技术分享图片
默认情况下,当录制http请求后回放脚本,Runtime-setting-Preferences中“winlnet replay instead of sockets(windows only)”选项是不勾选的,即通过LR sockets模拟发出请求。
但是!
LR sockets默认SSL的版本为SSL2和SSL3。当录制https时,如果SSL版本不一致,就会使sockets端口连接失败,被服务器拒绝连接,因此为使回放成功,很多人会勾选“winlnet replay instead of sockets(windows only)”。而这个勾选,也就是造成后面报错的罪魁祸首。
 
技术分享图片
勾选“winlnet replay instead of sockets(windows only)”后,LR通过windows系统的WinInet来对外发送请求。但是微软的WinInet对流量的统计并不准确,而且当发送的请求超时20秒后,就会自动报错“请求已超时“。这一个超时,也就是造成开头报错的原因;即便在LR中设置preferences-->options-->http-request connect timeout(sec)的值设为999,也没用,因为发送的请求没不经过LR socket,LR统计不到。
技术分享图片

 

解决办法

1)取消勾选”winlnet replay instead of sockets(windows only)“选项
2)在脚本中添加https请求前,添加函数 web_set_sockets_option("SSL_VERSION","TLS")。
 
综上,
当单独回放脚本时,请求数少,网站响应快,自家网速也够,所以请求超时就基本不会出现,当几百个用户一起并发,小网站性能不行,或者自家网络已经卡了,那么要发送的请求就会等待,当超过20秒后,就报了上述错误,因此录制https时,建议不要勾选winlnet replay instead of sockets选项,使用lr函数来解决即可。
 
 

以上是关于Loadrunner 并发时'Error -27492 HttpSendRequest failed'解决办法的主要内容,如果未能解决你的问题,请参考以下文章

Loadrunner 11.00 初始化失败; 通信错误。 Error (-81024): LR_VUG: The 'WS_SOAP' type is not supported o

LoadRunner 参数模拟——快速得到并发用户的进场规则

Loadrunner 没有从参数列表中获取唯一值

使用loadrunner做性能测试时提示action.c(7):error:soap请求“soap

loadrunner - 集合点

Loadrunner 50个Vusers并发创建3000个账号脚本调试以及场景运行