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

Error code 10053,Software caused connection abort.

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

查看( 8875 ) / 评论( 10 )

R2r#S$z[[0发现问题的应用场景
k B,yCao9i#uRO0
  C/S结构程序,请求响应采用异步机制。即客户端发送一个请求后不是一直等待这个结果,客户端将请求存放在请求队列并获得一个JOBID,服务器运行后将运行结果存放在响应队列,客户端定时查看响应队列,根据JOBID定时从响应队列中获取结果。因此带来的测试问题是受服务器状态影响,客户端获取结果的次数不固定。51Testing软件测试网:Vb*QM b3`

51Testing软件测试网 js X'Bc `9}

测试脚本示例
YC5^5bo,ge"j-x)X2m9S5b0  lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=localhost:8080", LrsLastArg);51Testing软件测试网,dtnUu _
  lrs_send("socket0", "buf56", LrsLastArg);51Testing软件测试网GEO6S)w3W;y
  lrs_receive("socket0", "buf57", LrsLastArg);51Testing软件测试网\s~@&sSOL |
  GetJobID();
H}#HS1l8Mm c;L0  do{51Testing软件测试网x\.eP _(}
  lr_think_time(0.3);51Testing软件测试网H,HL3mpz
  lrs_send("socket0", "buf58", LrsLastArg);
%s3Or p&y;nR5p0  lrs_receive("socket0", "buf59", LrsLastArg);51Testing软件测试网7s0V^L(}9rZ
  }while(!CheckStatus());
~6C5aH-\Rq)FS5x0  其中buf56、57是发送请求,buf58、59是循环去获取结果并检查返回的标志位,若仍没有结果返回则在一定时间后循环获取结果,因此请求数不固定。51Testing软件测试网`*BO%a"T m [ or%t

51Testing软件测试网C"\9Xd.d_"QGB

LR提示socket异常
x9d7B'o-U0  当我用lrs_create_socket创建连接之后,当这个socket连接的请求次数达到100次后,这个连接就不可用了,必须close后再重新create。LoadRunner提示错误:Error : socket0 - Software caused connection abort. Error code : 10053.51Testing软件测试网nX }pX#Y?wAY

P.}0G _:goA0问题验证
(Z"h{;t*G,hgh4P0  一开始认为是LoadRunner对Socket的支持问题,因为同样的测试方式在Rational Robot中可以通过。于是做了最简单的一个试验:51Testing软件测试网g+o5r(P%~%_t:{
  1、用socket方式录制访问某个网页并保存(如baidu、或tomcat的默认页面)
.t OZ4^q D9DJj}0  2、添加循环方式去访问51Testing软件测试网-[N!\5HS
  结果证明在socket请求次数达到100后即无法再次访问了(少数次数可以达到一百零几)。
f t2eT-U7c0 51Testing软件测试网kT1U L}9J8u/{
  脚本如下:51Testing软件测试网@)nq ['^C
  #include "lrs.h"
#d)oA{8DM CU0  int i;
-g8}#d2xb+V-H6x'b0  Action()
C-Q:f3G7H2r-M0  {51Testing软件测试网E ^9h7})q#?*d&G7Z
  lr_think_time(1);
shg1s$t:[+iZ'X0 
Wp#A[5eC`8J0?4u0  lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=appsvr01:8080", LrsLastArg);51Testing软件测试网Z@)_[&H9{
  i=1;51Testing软件测试网-IY'Z*L2p6T
  do{
[c$yqV:gg!B L0  lrs_send("socket0", "buf0", LrsLastArg);
X%nT6SQ PZ5t'dH0  lrs_receive("socket0", "buf1", LrsLastArg);
_/Qv/I+~J0  lr_output_message("-------------lrs request times: %d ", i);51Testing软件测试网h)jT+T$l2C J0r/B I N
  i++;
F+P!E$y:?B q T]0  lrs_send("socket0", "buf2", LrsLastArg);
.?^ KM E0  lrs_receive("socket0", "buf3", LrsLastArg);51Testing软件测试网axU;p,Hx2wV
  lr_output_message("-------------lrs request times: %d ", i);51Testing软件测试网 i;w`8`8w5\;Y
  i++;51Testing软件测试网3\MI9|)kN Z'T
  lrs_send("socket0", "buf4", LrsLastArg);
9A+[.bL"y5^\0  lrs_receive("socket0", "buf5", LrsLastArg);51Testing软件测试网:S(i(]*v3m)xl~+Cq
  lr_output_message("-------------lrs request times: %d ", i);51Testing软件测试网0\ W1R}5?,_:G3I0q
  i++;51Testing软件测试网4j8Idq@ ~t:A
  lrs_send("socket0", "buf6", LrsLastArg);
#j2t_S m0  lrs_receive("socket0", "buf7", LrsLastArg);51Testing软件测试网 l,j j.P;KU vT
  lr_output_message("-------------lrs request times: %d ", i);51Testing软件测试网$ycjq@4d S J+G2c
  i++;51Testing软件测试网c*o\/jYE0_
  }while(i<200);
x'D"sI Z5} Q3B-O0  return 0;
~v%RBb9?g^0  }
/XOJ8O t)m0 
n6@;j O}4p,ek5xy0  LoadRunner VUGen日志如下:
6W&Bp }n0  ...
*HB*x.|'x&y;oT6~-G0  lrs_send(socket0, buf2)51Testing软件测试网+L O? Y:|$C8}
  Action.c(21): lrs_receive(socket0, buf3)
k?+JPatG0  Action.c(22): -------------lrs request times: 98
nzH&L%j5D7i0  Action.c(24): lrs_send(socket0, buf4)
DQJ B&I0  Action.c(25): lrs_receive(socket0, buf5)51Testing软件测试网0SH3Q IPn%K1ea/V?
  Action.c(26): -------------lrs request times: 9951Testing软件测试网1G U$j9Q'sURG(Z
  Action.c(28): lrs_send(socket0, buf6)51Testing软件测试网 H9m'UTIc h?u
  Action.c(29): lrs_receive(socket0, buf7)
&`xFfL_:La8abq5s0  Action.c(29): Mismatch (expected 1249 bytes, 1268 bytes actually received)
h0~}4`;_c/i6I0  Action.c(30): -------------lrs request times: 10051Testing软件测试网 A8[(\ Iq+kc?:eI
  Action.c(16): lrs_send(socket0, buf0)
+N%J*h"TW%v1H8|+]4a0  Action.c(17): lrs_receive(socket0, buf1)
Kh3~ H4dg Y?`0  Action.c(17): Error : socket0 - Software caused connection abort. Error code : 10053.51Testing软件测试网$G5oM2n,iu
  Abort was called from an action.
t;K"NK A5h0  Ending Vuser...
M+y` e;J_ Uz0  Starting action vuser_end.
M$j*N{"\`0  vuser_end.c(12): lrs_cleanup()
B4q-@9l{0  Ending action vuser_end.51Testing软件测试网 `E$xf R\

1q] V?4p r6zk0新的发现
LE"{o"LV1uS0
  在发现以上问题后百思不得其解之后即和一些测试朋友进行讨论交流,但同样没有什么头绪。在一次交流中意外发现朋友的测试脚本中连接的是80端口,于是推断他是用IIS作为测试服务器,突然意识到这是否和应用服务器也有关,立即采用IIS作为服务器进行测试,居然测试通过了,并没有出现Socket连接问题!随后用Weblogic进行测试也同样通过!

2c7vjf!pT0

,}C\u0Xkl4I-G*y-u4RT0初步结论
4W%B2BaEb5]0  由以上的各种验证方法发现问题并非单独由LoadRunner引起的,而是和测试的应用服务器也有很大关系。仅当用LoadRunner测试Jboss、Tomcat服务器时才会出现这种问题,而对IIS、Weblogic等问题并不存在。但另有一个奇怪的问题是采用Rational Robot用同样的测试方法,所有的服务器类型都没有问题!51Testing软件测试网&tJHk aK-G9L9Z

51Testing软件测试网]M QW/@,_

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


TAG: LoadRunner

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

H(iPX!]*ku6s8o软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
后来用http监视工具对比LoadRunner和Robot两者http请求也没发现很大的差异,因此不得而终。希望有zee的帮助能解决这个问题。
测火燎原--态度决定质量 ppent 发布于2007-03-10 14:03:44
进一步探索Tomcat服务器、LoadRunner对lrs_create_socket问题的事情经过。
7iB8U        v&MG中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务起始
(o+W2v$y-m;|%oi一开始觉得可能是测试脚本或LoadRunner测试工具的兼容性问题,于是开始在这方面找原因。软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具&e&a5O3?G:\
在与Zee的交流过程中,Zee以其丰富的经验和敏锐的直觉发现了一个一直以来被我忽略的现象,即在每次Socket Error之前,其前一个Receive Buffer总是Mismatch,那么,是否由于这个Mismatch导致了下一个Socket请求的错误,或者说,两者有什么必然性?
yle*eH*SRwww.51testing.comwww.51testing.com6x.H0l9\X;g5r2p;@,?)S
发展www.51testing.com
m@
Vw;y(K/i%WC

在对测试脚本多次检查之后,没发现测试脚本有什么问题,但就是每次出错前总有一个Mismatch Buffer。在进一步的分析中发现,测试脚本中只建立了一个Socket连接,对同一个页面重复多次的发出相同的请求,有点类似Dos的攻击方式,是否服务器认为这些数据包是恶意攻击而拒绝了我的请求造成的呢?上次关河也是如此的答复。嗯,这个很有可能。但是,如果是服务器的安全策略的话,为何Robot进行同样的操作,为何又没有问题呢?因为Robot并不需要直接去Create Socket,而只需要通过Http_Request建立连接即可,是否两者在底层的实现上有所不同?事情变得扑朔迷离,好像难以继续下去了。
aej*E$a.W        i\51Testing软件测试网下午,Zee决定自己搭一个环境试试看。软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具"mK+c"{5^Y-T2[[
M3V4PzO[*L
高潮

d ty2b3@Q
下午Zee自己搭建了一个Tomcat环境,但在录制脚本时出现了一个奇怪的问题。用Winsock协议,Internet Application方式进行录制时,居然有事件,但就是录不到脚本!没办法,只好将我的脚本给他。在他的环境中,问题还是重现了。出错时服务器也没有任何的log可以供参考,这样问题的定位变得很困难。就在我们都无计可施,认为就是服务器的安全策略时,事情又有了新的转机。w*Y d8h2{z(`        p4n
如果真是服务器的安全策略的话,网上应该有所介绍,那么到网上去找找相关信息。在查找的过程中突然发现了一些关于HTTP的信息,具体如下:www.51testing.comt-EQ_8U"Z        HR FU}
KeepAlive On!L|4ai$}Ik:m
在HTTP 1.0中,一次连接只能作传输一次HTTP请求,而KeepAlive参数用于支持HTTP 1.1版本的一次连接、多次传输功能,这样就可以在一次连接中传递多个HTTP请求。虽然只有较新的浏览器才支持这个功能,但还是打开使用这个选项。
51Testing软件测试网
Xe6c%Kv#Q        Kp*m


z"L:L0Z
G[d#UW@ya!B软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
MaxKeepAliveRequests 100
J
AW:[K+a#A软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具
MaxKeepAliveRequests为一次连接可以进行的HTTP请求的最大请求次数。将其值设为0将支持在一次连接内进行无限次的传输请求。事实上没有客户程序在一次连接中请求太多的页面,通常达不到这个上限就完成连接了。
软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具5w'd8f'QQ"{fo"DZ
软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具ghke~5r#?V4f        zj
KeepAliveTimeout 1551Testing软件测试网+vWdy1R
KeepAliveTimeout测试一次连接中的多次请求传输之间的时间,如果服务器  已经完成了一次请求,但一直没有接收到客户程序的下一次请求,在间隔超过了  这个参数设置的值之后,服务器就断开连接。
  中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务6P"[0h.a7\
软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具;qRim#G&q
这个信息象一根救命稻草一样,一下子被我们紧紧捉住,然后就是赶紧查资料看这个参数在哪里设置的。接下来的故事情节相信大家都已经猜到了,在对服务器配置文件进行了MaxKeepAliveRequests参数设置后,测试脚本请求次数顺利突破了原有的极限,问题都得到了解决!软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具)?:F,A;K1g8?7OZ2O

)jeA T vY3x}0b{owww.51testing.com尾声
2C,{&Q m4Hl9ou到此为止,问题基本上已经明确。由于Apache服务器在HTTP 1.1协议的处理策略,需要进行KeepAlive的参数设置,而默认的MaxKeepAliveRequests只有100的请求限制,于是就出现了问题出现的那一幕。
(GHs:m$xv/y x/i
u软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具
剩下的疑问和推断是:软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具5?3Da%Q o(Vxw
1. 既然原来的Tomcat服务器默认的MaxKeepAliveRequests只有100,而Rational Robot又可以无限制的进行访问请求,则上面提到的问题似乎可以推测出来:Raional Robot在Socket连接处理上并不只是用一个连接,否则由于服务器的限制会有同样的问题。
e"\D:yj,tV*V        D软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具2. 通过采用HTTP 1.1标准的不同应用服务器,如IIS、Weblogic并不存在该限制问题,以上的参数是否仅对相关服务器(Apache、Tomcat、JBoss)有效?中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务m5@O3e Xq4}u

$F/@
E
^;k.R:nq51Testing软件测试网
[ 本帖最后由 ppent 于 2007-3-10 14:05 编辑 ]
测火燎原--态度决定质量 ppent 发布于2007-03-10 14:14:20
最后,感谢和我一起交流、思考、尝试的Zee,没有他的帮助我很难独自解决该问题,也感谢给我作出解答使我得到启发的段念老师。www.51testing.comZ|c1_*i)A:m*H!lv,B
通过这件事情,我们又有什么收获呢?思考中。。。
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 的帖子
你的问题发生的原因和我的并不一样。[~ qYs5]
你的问题说的不是很详细。你测试的web系统是否使用了cookie?在测试执行时第一次没有出错,而在进行迭代时出现该错误?
(_'`/L/uHxl软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具初步估计,你的问题估计是和LoadRunner的场景设置有关。你可以看看你的场景的Rumtime setting中,是否选中了“simulate a new user on iteration”选项?该设置会在每次迭代时清除上下文。
S
t"W
E,R(EE@;g
fZL
将该选项去掉再试试。
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错误。。
我来说两句

(可选)

日历

« 2024-04-23  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

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

RSS订阅

Open Toolbar