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


    问题点

    Loadrunner对脚本单独回放时,回放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函数来解决即可。
     
     
  • 相关阅读:
    URAL 2067 Friends and Berries (推理,数学)
    URAL 2070 Interesting Numbers (找规律)
    URAL 2073 Log Files (模拟)
    URAL 2069 Hard Rock (最短路)
    URAL 2068 Game of Nuts (博弈)
    URAL 2066 Simple Expression (水题,暴力)
    URAL 2065 Different Sums (找规律)
    UVa 1640 The Counting Problem (数学,区间计数)
    UVa 1630 Folding (区间DP)
    UVa 1629 Cake slicing (记忆化搜索)
  • 原文地址:https://www.cnblogs.com/cheerjude/p/10092377.html
Copyright © 2020-2023  润新知