loadrunner 性能测试报error-27796的解决

网上观点:html

在注册表HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters里,有以下两个键值:
TcpTimedWaitDelay
MaxUserPort
1,这里的TcpTimedWaitDelay默认值应该中是30s,因此这里,把这个值调小为5s(按须要调整)。
2,也能够把MaxUserPort调大(若是这个值不是最大值的话)。web

 

实践:将TcpTimedWaitDelay默认值应该中是30s,因此这里,把这个值调小为5s,问题解决。服务器

 

 load runner transaction 提示error:网络

Action.c(15): Error -27796: Failed to connect to server "10.9.34.101:80": [10061] Connection refusedapp

问题:
 
曾经遇到过一个问题,在一次性能测试过程当中,使用http协议的多用户向服务器发送请求。设置了持续时间,出现错误为: 27796, Failed to connect to server 'hostname';port_ld': 'reason'.10048.(凭记忆写的,不知道写错了没有)
 
分析
 
由于负载生成器的性能太好,发数据包特别快,服务器也响应特别快,从而致使负载生成器的机器的端口在没有timeout以前就所有占满了。在全 部占满后,就会出现上面的错误。执行netstat –na命令,能够看到打开了不少端口。因此就调整TCP的time out。即在最后一个端口尚未用到时,前面已经有端口在释放了。
 
官方的troubleshooting:
查看工具的troubleshooting,以下:

 

Message Code 27796
Failed to connect to server 'hostname';port_ld': 'reason'.
Unable to connect to the specified server and port.
Troubleshooting
o      Try to address the reason provided for the connection failure.
o      Try to access the application with a browser from the injector machine and from another machine (such as the recording machine).
o      Check that you accurately specified the correct host name and port.
o      Ping the host/port.
o      Check if the server application you are trying to access is running.
o      If you used a hostname, check if it was resolved to the correct address.
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调大(若是这个值不是最大值的话)。
 
反复验证,问题解决。
 
 
 
 
 
性能测试过程当中,你们均可能遇到过LR-27796错误,此类错误家常便饭..在走访了各大论坛后,发现大侠们给出的各种的版本的27796错误,那么27796是如何产生的呢?接下来跟你们分享下个人所得与感想

在测试一个web站的接口项目中,出现了大量的27796错误(此报错代码有不少种错误提示,好比:27796— Failed to connect to server、27796—timeout、27796-No Route To Host等 ),根据LR的帮助提示是修改注册表的两个键值后方可解决,我试着修噶了注册表,重启了机器,在喜气冲冲的进行新的一轮压测过程当中发现,错误木有解决,依然存在27796错误。我开始在网上搜索此问题的处理办法,说法云云:一、重启机器、二、修改注册表、三、更换操做系统(囧)我发现对我木有效果,出现错误的请求占总请求的20%左右,这个比例压测是无任何意义的!心灰意冷....

我开始从第一个27796— Failed to connect to server开始查找缘由,若是出现链接失败,确定是客户端与服务器端的通讯出现了问题致使的,不论外界缘由,实质就是通讯!
我试着使用网络工具wireshark在LoadRunner开启时,抓取通讯信息。问题出现了,在监测通信过程当中发现,问题出如今第二次握手,客户端已经发出syn包,但服务器端没有接受到syn包,
当timewait三秒钟后再次发出syn包,服务器端能够接收到此包,问题出现了,就是说这个请求在没有创建链接时就出现错误了,神奇了!!!
客户端与服务器端
创建链接以下:
第一次  第一次握手:创建链接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。第二次  第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时本身也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 
  
三次握手

第三次  第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

问题找到缘由了,那么这些不一样的27796有那些问题,如何产生的呢?

答案1:你们可能有手工编写脚本的习惯,你们使用最多的协议应该是web/http协议,那么GET、POST请求是最多见的,例如:web_url("www.baidu.com",                 "URL=http://www.baidu.com", 
                "Resource=0", 
                "RecContentType=text/html", 
                "Referer=", 
                "Snapshot=t2.inf", 
                "Mode=HTML", 
                LAST);
这段代码中咱们来分析下,若是把以上代码修改成
     web_url("www.baidu.com",                 "URL=http://www.baidu.com",
                LAST);
请 求是否成功?答案是确定是,能够发起get请求。那么你们实验过没有若是这样的话,在压测过程当中是否出现过问题?LR会出现27796错误,你们能够实验 下,那么问题出在那呢?问题就出如今本身的代码中,缺乏RecContentType=text/html类型致使GET请求出现问题,服务器端没法识别 请求携带的标示,因此本身的代码编写是27796产生的一部分

缘由2:这个是摘自百度的 帖子"由于负载生成器的性能太好,发数据包特别快,服务器也响应特别快,从而致使负载生成器的机器的端口在没有timeout以前就所有占满了。在所有占 满后,就会出现上面的错误。执行netstat –na命令,能够看到打开了不少端口。因此就调整TCP的time out。即在最后一个端口尚未用到时,前面已经有端口在释放了"
说白了点,就是端口没有释放掉timeout状态,没有恢复到监听的状态,因此此时作好的办法就是,重启电脑恢复这些端口占用的状态,当重启机器后,查看状态netsat -nao 后,若是恢复到正常端口的状态,就能够再次进行性能测试了。

缘由3:第三个缘由
在 性能测试i过程当中,可能出现服务器资源利用率太高,致使创建链接失败现象,此类错误应该查看服务器的资源利用率,若是出现了资源利用太高现象,27796 的错误也会在此时产生!27796的错误通常都是因为创建链接失败而致使的,创建链接失败的缘由有不少种状况,你们只要明白其中27796的产生错误的实 质就能够了,在你们测试过程当中欢迎你们跟帖,在什么状况出现的这种错误,如何解决的继续下去!
相关文章
相关标签/搜索