51Testing软件测试论坛

标题: 使用LoadRunner遇到无法维持长连接的问题,谢谢大牛了!!! [打印本页]

作者: puma_atlarge    时间: 2006-11-11 18:01
标题: 使用LoadRunner遇到无法维持长连接的问题,谢谢大牛了!!!
使用的是LoadRunner8.0+web service pack.
我在RunTime Setting 中的preferences中已经设定了Keep-alive HTTP connection为Yes.
使用Wsdl方式录制web service (soap)脚本后,在Action中指定了发送请求的操作。
实际运行指定循环1000次,用ethereal抓包发现,每次的http连接都被断掉。
检查抓到的包体:
在Post请求的头域中, 给出
请求消息为SendSMS HTTP1.1
连接头域为Connection: Keep-Alive

在服务器的回应中,没有给出connection头域,
使用的编码方式为Transfer-Encoding: chunked.

但是在LR收到该请求后,它发出了FIN-ACK包拆除了已有的连接。
重新建立一个新的连接再次发送请求。
但是我希望它以长连接的方式在已经建立的端口发送,从而提高效率。

项目紧急,请大大们不吝赐教,十分感谢!!!!
作者: robust    时间: 2006-11-11 18:47
标题: 你是否在runtime setting中选上了"simulate a new user each iteration"
这样的话,每次迭代,会断开重连.去掉此选项.

用ethereal抓包分析.表扬一下!
作者: puma_atlarge    时间: 2006-11-12 13:38
多谢楼上的指点,不过我翻遍了Controller和User Generator中关于runtime setting的所有设置,并没有发现你所说的选项啊,请解释详细一点,谢谢!!
我用的是LR8.0+web service pack 1
作者: puma_atlarge    时间: 2006-11-12 13:45
晕,在帮助中都查到了相应的条文,目前暂时还没有发现对应的设定sdlkfj1
作者: puma_atlarge    时间: 2006-11-12 18:15
呵呵,最后没有办法,在脚本中手动写入循环,总算实现了所谓的长连接。
然后在设定中选取每REQUEST单位统计。
作者: Zee    时间: 2006-11-13 00:32
你脚本怎么写的。二楼说的在:runtime setting->browser emulation里。
作者: jackloo    时间: 2006-11-13 10:31
二楼说的设置是在HTML协议录制时才有的,用WEB SERVICE是没这个东西的,与你说的没有关系。
我以前没注意过这方面的问题。但我建议你先看一下软件在实际使用中是否也是要断开的,如果也需要断开,那我建议你不要改脚本,让脚本反映真实情况是最好的做法。
如果确实需要想办法解决这个问题,就需要检查脚本执行过程中什么时候断开连接,我估计有几个可能:
1。循环1次断1次连接,那肯定是header的问题,它修改了头文件导致需要重新连接,语句肯定是一开始的web_add_auto_header,修改脚本中的相关内容,或者(也许是并且,没把握)调整录制属性中的header,content,修改脚本的方式是将这些内容放在脚本初始化部分;
2。每调用SOAP1次就断1次,那估计有可能是header问题,也可能是soap_request代码的问题。检查方法是试着把web_add_header内容合并到web_add_auto_header里去。如果是soap_request导致必须先断开才能再调用,那我估计这个问题没法解决。
作者: jackloo    时间: 2006-11-13 10:38
二楼说的设置是在HTML协议录制时才有的,用WEB SERVICE是没这个东西的,与你说的没有关系。
我以前没注意过这方面的问题。但我建议你先看一下软件在实际使用中是否也是要断开的,如果也需要断开,那我建议你不要改脚本,让脚本反映真实情况是最好的做法。
如果确实需要想办法解决这个问题,就需要检查脚本执行过程中什么时候断开连接,我估计有几个可能:
1。循环1次断1次连接,那肯定是header的问题,它修改了头文件导致需要重新连接,语句肯定是一开始的web_add_auto_header,修改脚本中的相关内容,或者(也许是并且,没把握)调整录制属性中的header,content,修改脚本的方式是将这些内容放在脚本初始化部分;
2。每调用SOAP1次就断1次,那估计有可能是header问题,也可能是soap_request代码的问题。检查方法是试着把web_add_header内容合并到web_add_auto_header里去。如果是soap_request导致必须先断开才能再调用,那我估计这个问题没法解决。
作者: robust    时间: 2006-11-14 09:37
标题: 呵呵!
原帖由 jackloo 于 2006-11-13 10:38 发表
二楼说的设置是在HTML协议录制时才有的,用WEB SERVICE是没这个东西的,与你说的没有关系。

确实的,在LR8.0版本中,关于webservice的已经命名为“web service”协议了,在runtimesetting中没有browser选项了
但是在7.51版本之前的webservice测试,使用的协议名称为“SOAP”,runtimesetting中有browser emulation选项的。特此更正。
作者: liulangchina    时间: 2006-11-30 12:06
sdlkfj3
作者: puma_atlarge    时间: 2006-12-18 21:31
我直接在脚本中写入循环,就用简单的for循环。
在Run-time Setting ->Miscellaneous->Automatic Transactions中define each step as a transaction.
作者: puma_atlarge    时间: 2006-12-18 21:39
to jackloo
在http1.1中实现了所谓的长连接,根据我的测试,在使用长连接的情况下,最大北向吞吐量(tomcat+axis)是700左右, (tomcat+xfire)是1600左右。如果使用短连接,最大北向吞吐量(tomcat+axis)是450左右, (tomcat+xfire)是1200左右。同时,CPU的占用率降低了20%左右。(4*3G CPU, 2G MEM, JRE1.4.2)
可见,长连接在降低系统开销方面还是有优势的。

基于此,所以我们希望使用长连接来进行测试。
在脚本中写入循环后,runtime setting中的iteration次数可以写成1,循环次数在脚本中给定。

LoadRunner的确功能强大,不过很多地方还是需要动手去调整阿~~




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2