問題點
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函數來解決即可。