Blog搬家了,挪了个窝。 搬到了cnblogs上:扬起测试的风帆-http://pent.cnblogs.com/,希望街坊邻居们都到我的新家逛逛哦。

Error code 10053,Software caused connection abort.

上一篇 / 下一篇  2007-02-01 14:21:43 / 个人分类:LoadRunner

查看( 8363 ) / 评论( 10 )

,b9L^"Oc(Z}9H0发现问题的应用场景51Testing软件测试网'Ek"qTc*zT$u
  C/S结构程序,请求响应采用异步机制。即客户端发送一个请求后不是一直等待这个结果,客户端将请求存放在请求队列并获得一个JOBID,服务器运行后将运行结果存放在响应队列,客户端定时查看响应队列,根据JOBID定时从响应队列中获取结果。因此带来的测试问题是受服务器状态影响,客户端获取结果的次数不固定。51Testing软件测试网,uK7{ aMm.`U

1Mu/G,a)H;}V \0测试脚本示例
Bbs4ZX*h\e0  lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=localhost:8080", LrsLastArg);51Testing软件测试网v^6U6@!A#Ux
  lrs_send("socket0", "buf56", LrsLastArg);51Testing软件测试网(_r/_6h+Vd^
  lrs_receive("socket0", "buf57", LrsLastArg);51Testing软件测试网j@)dP1AXZ r
  GetJobID();
'|&d bP2r-P0  do{
/B-|F7b^%SP9h0  lr_think_time(0.3);
bu7ct B!k,K0  lrs_send("socket0", "buf58", LrsLastArg);
x z z)o Hj0  lrs_receive("socket0", "buf59", LrsLastArg);
7w*AO8w tdz0  }while(!CheckStatus());
v&?P8W2]EA0  其中buf56、57是发送请求,buf58、59是循环去获取结果并检查返回的标志位,若仍没有结果返回则在一定时间后循环获取结果,因此请求数不固定。

,bT Xa6uNzEq?051Testing软件测试网:T8l.Gl"n~(? s BV

LR提示socket异常51Testing软件测试网kL5[Z:j0{-c [&N:Z1Ic#c4s
  当我用lrs_create_socket创建连接之后,当这个socket连接的请求次数达到100次后,这个连接就不可用了,必须close后再重新create。LoadRunner提示错误:Error : socket0 - Software caused connection abort. Error code : 10053.

'J5n1m)Q1yE P W^0

*K/qAcw*W(h8cr"U0问题验证51Testing软件测试网Z+HW4z a0h@ n5^$Y z
  一开始认为是LoadRunner对Socket的支持问题,因为同样的测试方式在Rational Robot中可以通过。于是做了最简单的一个试验:51Testing软件测试网!i_ `f |1r
  1、用socket方式录制访问某个网页并保存(如baidu、或tomcat的默认页面)51Testing软件测试网c o_L/Pl$@R!IhN
  2、添加循环方式去访问
Xh S,Qs7j1{.t0  结果证明在socket请求次数达到100后即无法再次访问了(少数次数可以达到一百零几)。51Testing软件测试网TP5p#mlv&D5l
 
Z^iA} K%c p0  脚本如下:51Testing软件测试网h0KYw3}[W(c-M4I7?3c
  #include "lrs.h"51Testing软件测试网$j2}3t\-|
  int i;
1@%j\`;r@(a0  Action()
[c_!E)]B&g\v? tZz0  {
1S-X&k3c;y'G6aC0  lr_think_time(1);
1QY G%q`f+r0 
@2D^.] a:h3VZyNZ0  lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=appsvr01:8080", LrsLastArg);
c.O+D^ Yz,N0  i=1;51Testing软件测试网.K2yp/f;j5m|p
  do{
d&l*L+n`Q;S[6K+Nx0  lrs_send("socket0", "buf0", LrsLastArg);
Td{UConn0  lrs_receive("socket0", "buf1", LrsLastArg);
8W)]!^)| I0  lr_output_message("-------------lrs request times: %d ", i);51Testing软件测试网 H5^"l~3x
  i++;
dM ^4I/vFO0  lrs_send("socket0", "buf2", LrsLastArg);51Testing软件测试网Ce&_"l6T?;K K B{
  lrs_receive("socket0", "buf3", LrsLastArg);
%PX$b!\D0  lr_output_message("-------------lrs request times: %d ", i);51Testing软件测试网 n;B8h}[{p
  i++;51Testing软件测试网#E&WS mJ%P T'@
  lrs_send("socket0", "buf4", LrsLastArg);
Wt~R P(im0o){,B0  lrs_receive("socket0", "buf5", LrsLastArg);51Testing软件测试网z7~7}z|2D
  lr_output_message("-------------lrs request times: %d ", i);
g$B9[-F Az@:e0  i++;
l#w;C#X6?xR-\ jA0  lrs_send("socket0", "buf6", LrsLastArg);
%r0f H z ~f2v0  lrs_receive("socket0", "buf7", LrsLastArg);51Testing软件测试网L/}Q@xtGdL
  lr_output_message("-------------lrs request times: %d ", i);
QXn.Tw5t5S0  i++;
?'i_Z7o2B'f0  }while(i<200);
,@"FKE4R`"Iz/t#q0  return 0;51Testing软件测试网['P\t'H'ZW[
  }
,~m+CUO$Pi:nOb\0 51Testing软件测试网G{2c&F8K zz
  LoadRunner VUGen日志如下:51Testing软件测试网8laa MD&SBD+@9o}
  ...51Testing软件测试网 Ns,m"md4F/@Yb
  lrs_send(socket0, buf2)
8od x0r-lSnG0  Action.c(21): lrs_receive(socket0, buf3)51Testing软件测试网A%`5Bc"^nks.T
  Action.c(22): -------------lrs request times: 98
I!{IWy%~0  Action.c(24): lrs_send(socket0, buf4)51Testing软件测试网3dm)vkw*[!sJ
  Action.c(25): lrs_receive(socket0, buf5)
K:?zk S4E0  Action.c(26): -------------lrs request times: 99
PQ`0G%Tm3E^`,t-^0  Action.c(28): lrs_send(socket0, buf6)51Testing软件测试网/r4Gm;J,O7n {)fR
  Action.c(29): lrs_receive(socket0, buf7)51Testing软件测试网?O3P3WK'HX.J4b;N$zD6~
  Action.c(29): Mismatch (expected 1249 bytes, 1268 bytes actually received)51Testing软件测试网eY [z%r })[
  Action.c(30): -------------lrs request times: 10051Testing软件测试网y/E]7q)h.N
  Action.c(16): lrs_send(socket0, buf0)51Testing软件测试网FY,G+g[q|6O
  Action.c(17): lrs_receive(socket0, buf1)
+j\ P5RR$\7_#O0  Action.c(17): Error : socket0 - Software caused connection abort. Error code : 10053.51Testing软件测试网,?]P-Bm3Q
  Abort was called from an action.
d+j0V)~.s~"N0  Ending Vuser...51Testing软件测试网 ls1{d$j'zcBv
  Starting action vuser_end.
D [-{DT0NA0  vuser_end.c(12): lrs_cleanup()
`~D Z5`0hR_[0  Ending action vuser_end.51Testing软件测试网\7`['vme} L

51Testing软件测试网]N0u-qX

新的发现51Testing软件测试网&R(DV-h}xM5\
  在发现以上问题后百思不得其解之后即和一些测试朋友进行讨论交流,但同样没有什么头绪。在一次交流中意外发现朋友的测试脚本中连接的是80端口,于是推断他是用IIS作为测试服务器,突然意识到这是否和应用服务器也有关,立即采用IIS作为服务器进行测试,居然测试通过了,并没有出现Socket连接问题!随后用Weblogic进行测试也同样通过!

'^Nh M7`)Ik)C0

3G&~m]g N1u0初步结论
5g0[LR$}G3nW0  由以上的各种验证方法发现问题并非单独由LoadRunner引起的,而是和测试的应用服务器也有很大关系。仅当用LoadRunner测试Jboss、Tomcat服务器时才会出现这种问题,而对IIS、Weblogic等问题并不存在。但另有一个奇怪的问题是采用Rational Robot用同样的测试方法,所有的服务器类型都没有问题!

0?L4[_)c!d4S051Testing软件测试网5{ H&q+G0P$LG

继续探索51Testing软件测试网 LFCj0R"Y3o!S
  后来进一步研究为何同样的采用tomcat服务器,在请求上有什么不同差异导致了两种测试工具决然不同的测试结果。但通过Charles工具只是发现了一些请求上的细微差异,并不会造成此问题的发生。于是此疑案悬而未决,希望有志之士加入一起研究,共同探索其中奥秘!51Testing软件测试网*][^ IS9W^


TAG: LoadRunner

如果Zee还在工作 Zee 发布于2007-03-09 09:58:37
路过。来看看。
测火燎原--态度决定质量 ppent 发布于2007-03-09 10:24:46
这个问题已经发现了有好长一段时间,但一直未能发现其中的问题所在。

tPA$d)`51Testing软件测试网
后来用http监视工具对比LoadRunner和Robot两者http请求也没发现很大的差异,因此不得而终。希望有zee的帮助能解决这个问题。
测火燎原--态度决定质量 ppent 发布于2007-03-10 14:03:44
进一步探索Tomcat服务器、LoadRunner对lrs_create_socket问题的事情经过。软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具&OJ0Q1R5Yz-]q
起始
?SxD^,w6Gqwww.51testing.com一开始觉得可能是测试脚本或LoadRunner测试工具的兼容性问题,于是开始在这方面找原因。软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具z`-FlZ2h u+h1Y%u
在与Zee的交流过程中,Zee以其丰富的经验和敏锐的直觉发现了一个一直以来被我忽略的现象,即在每次Socket Error之前,其前一个Receive Buffer总是Mismatch,那么,是否由于这个Mismatch导致了下一个Socket请求的错误,或者说,两者有什么必然性?
;kvS/Q
ho:e+T H软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具lYiBq
发展51Testing软件测试网UL&t7Z5A{
在对测试脚本多次检查之后,没发现测试脚本有什么问题,但就是每次出错前总有一个Mismatch Buffer。在进一步的分析中发现,测试脚本中只建立了一个Socket连接,对同一个页面重复多次的发出相同的请求,有点类似Dos的攻击方式,是否服务器认为这些数据包是恶意攻击而拒绝了我的请求造成的呢?上次关河也是如此的答复。嗯,这个很有可能。但是,如果是服务器的安全策略的话,为何Robot进行同样的操作,为何又没有问题呢?因为Robot并不需要直接去Create Socket,而只需要通过Http_Request建立连接即可,是否两者在底层的实现上有所不同?事情变得扑朔迷离,好像难以继续下去了。www.51testing.com
\NM%i}0q

下午,Zee决定自己搭一个环境试试看。
+]?,Tp9]H)|软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具6~8DQ,kV5P9?5p$c"['B4y
高潮www.51testing.comAc FocM~H
下午Zee自己搭建了一个Tomcat环境,但在录制脚本时出现了一个奇怪的问题。用Winsock协议,Internet Application方式进行录制时,居然有事件,但就是录不到脚本!没办法,只好将我的脚本给他。在他的环境中,问题还是重现了。出错时服务器也没有任何的log可以供参考,这样问题的定位变得很困难。就在我们都无计可施,认为就是服务器的安全策略时,事情又有了新的转机。
vr&|:Z+hwww.51testing.com如果真是服务器的安全策略的话,网上应该有所介绍,那么到网上去找找相关信息。在查找的过程中突然发现了一些关于HTTP的信息,具体如下:中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务t"_:g^$hTn.|M
KeepAlive Onwww.51testing.com8`m-a|VOE;R
在HTTP 1.0中,一次连接只能作传输一次HTTP请求,而KeepAlive参数用于支持HTTP 1.1版本的一次连接、多次传输功能,这样就可以在一次连接中传递多个HTTP请求。虽然只有较新的浏览器才支持这个功能,但还是打开使用这个选项。

eMM&[c'Yv%i nn
Vwww.51testing.com
软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具.|Kn}O5i&~m+^
h}

MaxKeepAliveRequests 100
4c,n)b^;V;yc51Testing软件测试网MaxKeepAliveRequests为一次连接可以进行的HTTP请求的最大请求次数。将其值设为0将支持在一次连接内进行无限次的传输请求。事实上没有客户程序在一次连接中请求太多的页面,通常达不到这个上限就完成连接了。
中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务 bfhn@9f#Zjw
51Testing软件测试网9w4hRY*O|
KeepAliveTimeout 1551Testing软件测试网#K2e        B _!h
KeepAliveTimeout测试一次连接中的多次请求传输之间的时间,如果服务器  已经完成了一次请求,但一直没有接收到客户程序的下一次请求,在间隔超过了  这个参数设置的值之后,服务器就断开连接。
  51Testing软件测试网8lFK.t        y+@
zK

软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具*rE)H;l(f&M5p        O$e8r _
这个信息象一根救命稻草一样,一下子被我们紧紧捉住,然后就是赶紧查资料看这个参数在哪里设置的。接下来的故事情节相信大家都已经猜到了,在对服务器配置文件进行了MaxKeepAliveRequests参数设置后,测试脚本请求次数顺利突破了原有的极限,问题都得到了解决!
B2qJ"f4L8EYY]8j$w nwww.51testing.com
IHja        Bi/bU软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具尾声51Testing软件测试网wF7L+A1t`ag
到此为止,问题基本上已经明确。由于Apache服务器在HTTP 1.1协议的处理策略,需要进行KeepAlive的参数设置,而默认的MaxKeepAliveRequests只有100的请求限制,于是就出现了问题出现的那一幕。中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务;L3E~Q1t`W7{
剩下的疑问和推断是:
&t        @s^;PI%c0B|软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具1. 既然原来的Tomcat服务器默认的MaxKeepAliveRequests只有100,而Rational Robot又可以无限制的进行访问请求,则上面提到的问题似乎可以推测出来:Raional Robot在Socket连接处理上并不只是用一个连接,否则由于服务器的限制会有同样的问题。www.51testing.com L*` VrV J|$J2T
2. 通过采用HTTP 1.1标准的不同应用服务器,如IIS、Weblogic并不存在该限制问题,以上的参数是否仅对相关服务器(Apache、Tomcat、JBoss)有效?(M5b3T9k'm&z
软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具:N L1q h9F#y WK
[ 本帖最后由 ppent 于 2007-3-10 14:05 编辑 ]
测火燎原--态度决定质量 ppent 发布于2007-03-10 14:14:20
最后,感谢和我一起交流、思考、尝试的Zee,没有他的帮助我很难独自解决该问题,也感谢给我作出解答使我得到启发的段念老师。
i%ljw;qS通过这件事情,我们又有什么收获呢?思考中。。。
mihan发布于2007-03-10 17:47:37
最近测WEB B/S结构的系统时,如果多次循环查询会抛 STATUS-CODE =400 这个错误,WEB_什么_file函数总是请求失败,显示什么网页NOT FOUND,但LR单用户或2用户跑多次却不会出现该问题,WEB服务器也已叫专家调优,不知出现的问题是否和这篇文章的情况有异曲同工之妙,查了许多资料都查找不到,网上对于STATUS-CODE =400 NOT FOUND这个错误解决办法好象也是很多,说明很多情况下都会抛这个错误。我想我可以试下调这个参数,说不定可以解决,不知楼主是否遇到过STATUS-CODE =400这个错误
如果Zee还在工作 Zee 发布于2007-03-11 12:21:51
sdlkfj3 sdlkfj3 sdlkfj3
测火燎原--态度决定质量 ppent 发布于2007-03-11 22:16:47
回复 #6 mihan 的帖子
你的问题发生的原因和我的并不一样。软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具%v ]
Jf2ai,\

你的问题说的不是很详细。你测试的web系统是否使用了cookie?在测试执行时第一次没有出错,而在进行迭代时出现该错误?
h(I.Ogl+H初步估计,你的问题估计是和LoadRunner的场景设置有关。你可以看看你的场景的Rumtime setting中,是否选中了“simulate a new user on iteration”选项?该设置会在每次迭代时清除上下文。软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具;C#Agxp)F t3z
将该选项去掉再试试。
yaya_free的个人空间 yaya_free 发布于2007-09-25 17:39:56
求助
我也遇到类似的问题,我在用LR测试一个C/S结构时,录制脚本时总出现socket2 - Software caused connection abort. Error code : 10053.的错误,就因为有这个错误,使得我在设置完Scenario后运行,全部失败,无法继续进行我的测试,请高手指点,谢谢
尤忆旧时陌上桑,青满枝头红满丫 youer511 发布于2012-08-09 16:57:19
为啥把create、close放在action里面,也会报10053的错?还有9002的错
浪子灬奇奇 zhengaiqi 发布于2013-06-06 11:36:18
求解决方法。。怎么处理10053错误。。
我来说两句

(可选)

日历

« 2021-01-16  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 27489
  • 日志数: 23
  • 书签数: 4
  • 建立时间: 2007-01-26
  • 更新时间: 2008-01-14

RSS订阅

Open Toolbar