1. 程式人生 > >Loadrunner 併發時'Error -27492 HttpSendRequest failed'解決辦法

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函式來解決即可。