51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6921|回复: 16
打印 上一主题 下一主题

[原创] web_concurrent_end函数的时间占响应时间的一半以上??(基本解决!)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-4-29 16:04:26 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
重新问一下,在controller执行完后分析,通过web page breakdown发现web_concurrent_end函数花的时间都比类的时间还多,比如响应时间中,核心类占42%,web_concurrent_end能占50%。

本次测试中,在web page breakdown中发现这个函数占事务响应时间的85.12%,而http://192.168.1.26/test/test.jsp只占了13.77%的时间。

帮助中是这样说这个函数的:The web_concurrent_end function marks the end of a concurrent group and initiates the concurrent execution of all the functions that were registered as concurrent-those between the web_concurrent_start and web_concurrent_end functions. Click Concurrent Functions for a list of functions that may be included within a concurrent group.
Note that the functions included within the concurrent group are not executed immediately. Instead they are registered for concurrent execution. When the concurrent group is closed, all of the functions registered as concurrent are executed together. However the number of steps that can be executed concurrently is limited by the Concurrent Connection entry in the Network tab of the run-time settings.

我理解这个函数就是用来关闭从web_concurrent_start开始到web_concurrent_end的内容,那怎么可能用这么多时间去关闭呢?各位帮我分析一下这段话吧,看看我哪里理解错了sdlkfj7

正确理解如下:
web_concurrent_start函数是并发组开始的标记。组中所有的函数是并发执行的。并发组的结束web_concurrent_end 函数。在并发组开始时,所有的函数首先被记录下来,当并发组结束时,所有的函数并发执行。脚本执行时,碰到 web_concurrent_end函数时,开始并发执行所有记录的函数。可以并发执行的函数的个数是有限制的,使用运行时设置-Netword标签页的Concurrent Connection来设置。

如果这样理解,还有一个小问题,怎么知道哪个web_url并发的时候用的时间最多,并发的时间都算到这个函数里了。难道是除了这个函数之外所用时间最多的那个吗?

[ 本帖最后由 ireneyao 于 2007-5-8 10:02 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

17#
发表于 2012-3-16 15:58:59 | 只看该作者
本帖最后由 lzytest 于 2012-3-16 16:02 编辑

同问,
为什么总是“concurrent group”的平均事务响应时间最大?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2008-1-7 19:00:51 | 只看该作者
mark,有空看
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2007-5-8 17:36:55 | 只看该作者
请问LZ, 你的这个问题是怎么解决的,我也出现了类似web_concurrent_start函数的错误了,谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2007-5-8 09:57:37 | 只看该作者
web_concurrent_start函数是并发组开始的标记。组中所有的函数是并发执行的。并发组的结束web_concurrent_end 函数。在并发组开始时,所有的函数首先被记录下来,当并发组结束时,所有的函数并发执行。脚本执行时,碰到 web_concurrent_end函数时,开始并发执行所有记录的函数。可以并发执行的函数的个数是有限制的,使用运行时设置-Netword标签页的Concurrent Connection来设置。

问题解决啦sdlkfj2 ,上面这段文字的出处http://tag.csdn.net/Article/e9f5 ... d-45074d300ab6.html
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2007-5-8 09:43:55 | 只看该作者
问题还是没有解决~~
大家在用URL-base方式录制的时候有没有这个问题呢??
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2007-4-30 11:35:03 | 只看该作者
sdlkfj9 哎~~~又掉下去了~~~~
最近的帖子更新速度太快了 ,一转眼就下去了sdlkfj7
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2007-4-30 08:48:42 | 只看该作者
原帖由 rickyzhu 于 2007-4-30 08:45 发表
mysql的语句监控估计你的DAOBAN的license支持不了

呵呵~~明白~~
那有没有别的办法,比自己写函数??
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-4-30 08:45:13 | 只看该作者
mysql的语句监控估计你的DAOBAN的license支持不了
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2007-4-30 08:42:57 | 只看该作者
#include "as_web.h"


Action()
{

        lr_rendezvous("ren1");
   
   

        lr_start_transaction("liboys");


        web_add_cookie("__utma=45466084.1957640869.1176693565.1177639825.1177646360.26; DOMAIN=192.168.1.26");

        web_add_cookie("__utmz=45466084.1176693565.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); DOMAIN=192.168.1.26");

        web_url("Test",
                "URL=http://192.168.1.26:8080/servlet/Test",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=",
                "Snapshot=t1.inf",
                "Mode=HTTP",
                LAST);

        web_concurrent_start(NULL);

        web_url("resume.css",
                "URL=http://192.168.1.26:8080/htm/channel/css/resume.css",
                "Resource=1",
                "RecContentType=text/css",
                "Referer=http://192.168.1.26:8080/servlet/Test",
                LAST);

        web_url("function.js",
                "URL=http://192.168.1.26:8080/js/function.js",
                "Resource=1",
                "RecContentType=application/x-javascript",
                "Referer=http://192.168.1.26:8080/servlet/Test",
                LAST);

        web_url("ajax.js",
                "URL=http://192.168.1.26:8080/js/ajax/ajax.js",
                "Resource=1",
                "RecContentType=application/x-javascript",
                "Referer=http://192.168.1.26:8080/servlet/Test",
                LAST);

        web_url("login.js",
                "URL=http://192.168.1.26:8080/js/login.js",
                "Resource=1",
                "RecContentType=application/x-javascript",
                "Referer=http://192.168.1.26:8080/servlet/Test",
                LAST);

        web_url("loginAjax_company.js",
                "URL=http://192.168.1.26:8080/htm/channel/login/loginAjax_company.js",
                "Resource=1",
                "RecContentType=application/x-javascript",
                "Referer=http://192.168.1.26:8080/servlet/Test",
                LAST);

        web_url("pngfix.js",
                "URL=http://192.168.1.26:8080/htm/channel/js/pngfix.js",
                "Resource=1",
                "RecContentType=application/x-javascript",
                "Referer=http://192.168.1.26:8080/servlet/Test",
                LAST);

        web_url("p_index_53.gif",
                "URL=http://192.168.1.26:8080/images/channel/p_index_53.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://192.168.1.26:8080/servlet/Test",
                LAST);

        web_url("p_index_58.gif",
                "URL=http://192.168.1.26:8080/images/channel/p_index_58.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://192.168.1.26:8080/servlet/Test",
                LAST);

        web_url("logo_3wjob.gif",
                "URL=http://192.168.1.26:8080/images/logo/logo_3wjob.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://192.168.1.26:8080/servlet/Test",
                LAST);

        web_url("tit_2.gif",
                "URL=http://192.168.1.26:8080/images/channel/tit_2.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://192.168.1.26:8080/servlet/Test",
                LAST);

        web_url("tit2_2.gif",
                "URL=http://192.168.1.26:8080/images/channel/tit2_2.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://192.168.1.26:8080/servlet/Test",
                LAST);

        web_url("gz.png",
                "URL=http://192.168.1.26:8080/images/channel/gz.png",
                "Resource=1",
                "RecContentType=image/png",
                "Referer=http://192.168.1.26:8080/servlet/Test",
                LAST);

//蓝色的是报错的部分。

        web_url("2006731622872.jpg",
                "URL=http://zs.job001.cn/upfile/20067/2006731622872.jpg",
                "Resource=1",
                "RecContentType=image/jpeg",
                "Referer=http://192.168.1.26:8080/servlet/Test",
                LAST);

        web_concurrent_end(NULL);


        web_concurrent_start(NULL);

        web_url("closelogin.gif",
                "URL=http://192.168.1.26:8080/images/channel/login/closelogin.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://192.168.1.26:8080/servlet/Test",
                LAST);

        web_url("jloginbtn.gif",
                "URL=http://192.168.1.26:8080/images/channel/login/jloginbtn.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://192.168.1.26:8080/servlet/Test",
                LAST);

        web_url("jlogin.gif",
                "URL=http://192.168.1.26:8080/images/channel/login/jlogin.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://192.168.1.26:8080/servlet/Test",
                LAST);

        web_concurrent_end(NULL);

        web_concurrent_start(NULL);

        web_url("p_index_55.gif",
                "URL=http://192.168.1.26:8080/images/channel/p_index_55.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://192.168.1.26:8080/servlet/Test",
                LAST);

        web_url("line_770.gif",
                "URL=http://192.168.1.26:8080/images/channel/line_770.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://192.168.1.26:8080/servlet/Test",
                LAST);

        web_concurrent_end(NULL);

        web_url("transparent.gif",
                "URL=http://192.168.1.26:8080/images/channel/transparent.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://192.168.1.26:8080/servlet/Test",
                LAST);



        lr_end_transaction("liboys", LR_AUTO);


        return 0;
}

[ 本帖最后由 ireneyao 于 2007-4-30 08:49 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2007-4-30 08:40:55 | 只看该作者
谢谢楼上,你说的那句应该是到RTS里把timeout设置为错误或警告,补充一点,我设置的是在遇到错误是仍然继续执行。可能我的问题问的不好。我想问的主要是,就算把timeout设置成警告,不报错了,那web_concurrent_end花的时间也太多了sdlkfj7 。这个函数是选择WEB协议中的URL_base方法后,在录制的时候出现的函数。
    录制的就是一个打开页面的功能,开发人员想试一下liboys和jsp在性能方面的差异(专门写了一个用liboys替换和用jsp的页面。),因为他们查询功能对CPU的利用极其不稳定,可以在20%到80%之间波动。而且一旦context switches rate和paging rate的值比较高的时候,速度会变慢。初步怀疑内存不足照成的,但是因为并发用户加的不多,只有40个人就出现这种情况(又或者是测试服务器的配置真的只能承受这么多人?单CPU3.40GHz,2G物理内存,其它就不清楚了。这样怎么估计系统的承受能力呢?这也是我比较疑惑的地方。),所以觉得程序的问题比较大,因为是查询的功能,,然后他们就想一个一个排除问题(本来是希望我能把问题准确定位的,但是学艺不精sdlkfj7 ,请问我是不是要学一些代码级的测试工具?用LR能把 问题估计的比较准确吗?比如是哪个查询语句的效率比较低。因为他们 用的是mysql,LR里不能直接监控考虑过通过mysql的API监控,但是dll文件我不会写sdlkfj7 )。想先排除是不是liboys占用比较多的内存。所以就有了这次测试,可是测试结果却出乎意料之外。一个录制的函数(不是程序本身的动作)竟然用了这么多时间。


不好意思,重看了一遍错误信息,发现报超时的不是那个函数,而是113行的。sdlkfj1
不过我想问的问题主要是web_concurrent_end函数消耗时间太多的问题,这点从analysis里可以确定,包括以前所有测试的脚本,这个函数占的时间就算没超过核心类,也基本差不多了。这样我测试出来的结果怎么判断??一直没表达清楚意思,呵呵~~~sdlkfj1


[ 本帖最后由 ireneyao 于 2007-4-30 11:36 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-4-29 21:58:07 | 只看该作者
你的脚本一直执行,而且设置有些问题,从这句话看:
Set the "Resource Page Timeout is a Warning" Run-Time Setting to Yes/No to have this message as a warning/error, respectively

你应该修改RTS设置,然后再来看你的代码,能否贴出来看看。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2007-4-29 20:29:03 | 只看该作者
查了一下以前测试的记录,发现这个函数占用的时间基本在一半以上,那我测试出来的数据不是就有问题吗??因为核心类占用的时间都没它多。sdlkfj9
大家发个话啊~~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2007-4-29 17:04:34 | 只看该作者
为什么没有人回答我的问题~~~
就算我的问题太白痴你们也指出来啊sdlkfj9
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2007-4-29 16:34:22 | 只看该作者
补充:
在controller运行的时候(就是速度很慢的时候,一个vuser一直在runner,不能pass),我也手动打开页面了,一点问题都没有,而且满快的sdlkfj8
大家帮忙看一下哦~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-4-29 16:12:42 | 只看该作者
页面里有用到js,所以我选择了URL-base协议。
回复 支持 反对

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2007-4-29 16:08:35 | 只看该作者
看到另一个解释:标记并发组的结束。
如果是标记结束,为什么会花这么多时间呢??sdlkfj4
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-22 20:19 , Processed in 0.098072 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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