51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 26497|回复: 45
打印 上一主题 下一主题

[原创] LR中错误代号为27796的一个解决方法-Zee

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-11-14 17:43:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原文见:http://blog.csdn.net/zeeslo

问题:

曾经遇到过一个问题,在一次性能测试过程中,使用http协议的多用户向服务器发送请求。设置了持续时间,出现错误为:27796, Failed to connect to server 'hostname';port_ld': 'reason'.10048.(凭记忆写的,不知道写错了没有)

分析:

因为负载生成器的性能太好,发数据包特别快,服务器也响应特别快,从而导致负载生成器的机器的端口在没有timeout之前就全部占满了。在全部占满后,就会出现上面的错误。执行netstat –na命令,可以看到打开了很多端口。所以就调整TCP的time out。即在最后一个端口还没有用到时,前面已经有端口在释放了。

官方的troubleshooting:
查看工具的troubleshooting,如下:
  1. Message Code 27796
  2. Failed to connect to server 'hostname';port_ld': 'reason'.
  3. Unable to connect to the specified server and port.
  4. Troubleshooting
  5. o      Try to address the reason provided for the connection failure.
  6. o      Try to access the application with a browser from the injector machine and from another machine (such as the recording machine).
  7. o      Check that you accurately specified the correct host name and port.
  8. o      Ping the host/port.
  9. o      Check if the server application you are trying to access is running.
  10. o      If you used a hostname, check if it was resolved to the correct address.
  11. o      Check if the server application is listening to the right port.
复制代码
均不是解决之道。

成功的解决方法:

在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters里,有如下两个键值:
TcpTimedWaitDelay
MaxUserPort
1,这里的TcpTimedWaitDelay默认值应该中是30s,所以这里,把这个值调小为5s(按需要调整)。
2,也可以把MaxUserPort调大(如果这个值不是最大值的话)。

反复验证,问题解决。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-11-15 11:17:03 | 只看该作者

真实太谢谢zee了,这种无私贴最喜欢了

我在网上又查了点信息,大家一起提高下
TcpTimedWaitDelay 值決定了 TCP/IP 必須經過多久,才能釋出已關閉的連線及重複使用它的資源。這個關閉和釋出的間隔稱為 TIME_WAIT 狀態,或是區段生命期限上限 (2MSL) 狀態的兩倍。在這段時間內,通往用戶端和伺服器的連線重新開啟的成本,比建立新的連線低。藉由縮減這個項目的值,TCP/IP 可以更快釋出已關閉的連線,提供更多資源給新的連線。如果執行中的應用程式需要快速釋出、建立新連線,或多個連線在 TIME_WAIT 狀態中造成通訊量太低,因而需要進行調整的話,請調整這個參數。

預設值是 0xF0,它會將等待時間設為 240 秒(4 分鐘)。

最小的建議值是 0x1E,它會將等待時間設為 30 秒。請利用這個程序來檢視或自訂您的值。

啟動 regedit 指令,瀏覽至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters 登錄次機碼,建立名稱為 TcpTimedWaitDelay 的新 REG_DWORD 值。
將值設為十進位 30,也就是十六進位的 0x0000001e。這個值會將等待時間設為 30 秒。
關閉登錄編輯器。
停止並重新啟動系統。
MaxUserPort
MaxUserPort 值決定了當應用程式向系統要求可用的使用者埠時,TCP/IP 所能指派的最高埠號。如果您的系統報告建立 Socket 時,發生錯誤異常狀況,可能是匿名(短期)埠的數量不當所造成,當系統開啟大量的埠來建立 Web 服務、資料庫或其他遠端資源的連線時,尤其如此。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-11-16 15:37:37 | 只看该作者
今天正好碰到这个问题。用zee的方法,该了下。重启后。重新试下,解决了。哈哈。
感谢zee
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-11-16 15:38:12 | 只看该作者
也感谢hongtang的补充资料。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-11-17 17:54:19 | 只看该作者
不错,学习了。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
    发表于 2007-11-18 10:31:58 | 只看该作者

    顶一个!

    经常遇到类似问题,未解决

    下周回去试试!

    添加键值的Reg文件:
    1. Windows Registry Editor Version 5.00

    2. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]

    3. "TcpTimedWaitDelay"=dword:0000001e
    4. "MaxUserPort"=dword:ffffffff
    复制代码

    删除键值的Reg文件:
    1. Windows Registry Editor Version 5.00

    2. [KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]

    3. "TcpTimedWaitDelay"=-
    4. "MaxUserPort"=-
    复制代码
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2007-11-19 20:13:01 | 只看该作者
    明天试试
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2007-11-20 16:07:40 | 只看该作者

    回复 1# Zee 的帖子

    想问一下Zee,测试通过后,是不是要把客户机器的注册表也给改了?

    如果不改,会不会导致测试结果与实际应用有一定偏差?  
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2007-11-20 16:50:11 | 只看该作者
    问一下我的 LR8.1安装汉化包后为啥还是英文的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2007-11-20 21:41:10 | 只看该作者
    这里我要改的是不是服务器端的设置,而是负载生成器的设置。呵呵,是我文中没有写清楚.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2007-11-21 12:36:41 | 只看该作者
    我试过拉,但是还是有这样的报错,我改了客户端的注册表,测试到1200用户同时在线期间netstat,端口也有establish,和time wait,证明修改是有效,但是,我还是报那样的错,如下:
    vuser_init.c(21): Error -27796: Failed to connect to server "": [10060] Connection timed out

    vuser_init.c(21): Error -27791: Server "" has shut down the connection prematurely

    Action.c(13): Error -27740: Overlapped transmission of request to "" for URL "" failed: WSA_IO_PENDING

    vuser_init.c(21): Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s)

    Action.c(13): Error -27727: Step download timeout (120 seconds) has expired when downloading resource(s). Set the "Resource Page Timeout is a Warning" Run-Time Setting to Yes/No to have this message as a warning/error, respectively

    vuser_init.c(21): Error -26377: No match found for the requested parameter "OracleAppJSESSIONID2". Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 1024 bytes, use web_set_max_html_param_len to increase the parameter size

    vuser_end.c(6): Error -26499: Internal Error (call customer services): Pending in-function resources (EXTRARES) have not been handled in fvLrwScriptApiCleanupUnhandledRemnants
    服务器响应时间还好,一直波动不大,我想是客户端负载生成能力的问题,我用了5台负载机,用户加载比较缓慢,使用了80分钟加载至1200个用户,失败的事务,也有1200左右,真的是负载生成机的问题么,请指教

    [ 本帖最后由 christina11 于 2007-11-24 13:48 编辑 ]
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    12#
    发表于 2007-11-21 13:39:06 | 只看该作者

    还有个疑问:

    原帖由 Zee 于 2007-11-20 21:41 发表
    这里我要改的是不是服务器端的设置,而是负载生成器的设置。呵呵,是我文中没有写清楚.



      端口号3位数以内都不稳定,打比只存在4位数的端口号:1000~9999 至少有8000多个端口可用。

    一般项目的并发用户都是几百个(譬如350个),假设本机端口有1000个被系统和应该程序占用,那么至少还有7000个端口剩余。

    那么每个虚拟用户占用一个端口   用户数:端口数 = 350:7000 =1:20  即使 TcpTimedWaitDelay 再长 或一个端口只能被使用一次,也不应该出现端口不够用的情况呀   ,如果真是这样,就并不需要释放端口。

       不知我的理解是否正确,请指正。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2007-11-21 13:55:13 | 只看该作者
    请教
    TcpTimedWaitDelay
    和loadrunner中的
    http-request connect timeout(sec)默认是120s
    http-request receive timeout(sec)默认是120s
    step download timeout(sec)默认是120s
    有什么关系呢?
    我的理解:
    http-request connect timeout(sec)默认是120s:http建立连接的时间期限
    http-request receive timeout(sec)默认是120s:http响应接收数据的时间期限
    step download timeout(sec)默认是120s:下载超时时间期限
    疑问:
    上述是超时之后重新执行么,还是脚本认为出错,即停止那个事务呢?
    不明白和TcpTimedWaitDelay的关系,TcpTimedWaitDelay是端口建立连接到释放的时间,这个时间比上述时间设置得小,有什么影响呢?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    14#
    发表于 2007-11-21 16:28:30 | 只看该作者
    TcpTimedWaitDelay是操作系统的(Tcp协议)

    http-request connect timeout 是LR 事务监控的标准(应用程序)

    两者没有直接的关系。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2007-11-22 17:32:31 | 只看该作者
    谢谢大侠啦,原来是tcp,我真马虎呀,能看看我在上楼说到的问题么
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
     楼主| 发表于 2007-11-22 17:34:33 | 只看该作者
    原帖由 higkoo 于 2007-11-21 13:39 发表



      端口号3位数以内都不稳定,打比只存在4位数的端口号:1000~9999 至少有8000多个端口可用。

    一般项目的并发用户都是几百个(譬如350个),假设本机端口有1000个被系统和应该程序占用,那么至少还有7000个 ...

    呵呵,你遇到这个问题的时候,执行一下netstat -nao看看。有多少端口够用的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2007-12-19 11:42:53 | 只看该作者

    timeout error

    请教:
    在performance center中运行脚本的时候,出现错误提示:Error -27498: Timed out while processing URL="http://......" ,只有1个用户在运行,我有按照你之前说的设置runt time setting中的internet protocol-preferences中的advaced区域有一个winlnet replay instead of sockets选项,但结果还是一样,请问这两个问题会是一样的吗?怎么解决这个问题?


    谢谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2008-1-25 15:57:46 | 只看该作者
    好帖子  但是解决不了我的问题 还是要顶一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
    发表于 2008-4-18 17:28:57 | 只看该作者

    有个疑问

    我今天也碰到了这样的问题
    但是注册表里没有这两个键值
    要怎么做?手动添加吗?
    谢谢了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
    发表于 2008-5-5 16:13:24 | 只看该作者

    顶了

    顶了顶了顶了
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 22:34 , Processed in 0.105014 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表