51Testing软件测试论坛

标题: 随着运行用户数的逐渐减少,为什么平均事务响应时间在快结束时迅速增加呢 [打印本页]

作者: gcm_xp    时间: 2011-5-5 14:49
标题: 随着运行用户数的逐渐减少,为什么平均事务响应时间在快结束时迅速增加呢
本帖最后由 gcm_xp 于 2011-5-5 16:02 编辑

[attach]72870[/attach]











随着运行用户数的逐渐减少,为什么平均事务响应时间在快结束时迅速增加呢(结束时呈最大值)?我需要再结合什么图看一下呢?请各位指点指点了。。。
作者: Sayid    时间: 2011-5-5 15:23
其实你这问题就如同我这样问“为什么水会是平的?”
作者: gcm_xp    时间: 2011-5-5 15:46
并发用户数越来越少,对服务器的负载越来越小,按理说应该是响应时间越来越小啊?
作者: gcm_xp    时间: 2011-5-5 16:20
请各位给点意见,第一次做性能测试,谢谢了。。。
作者: wzhg220    时间: 2011-5-5 16:55
我和楼主有同样的疑问。期待解答。
作者: wzhg220    时间: 2011-5-5 16:57
你的事务时间是怎么计算的?
作者: Sayid    时间: 2011-5-5 16:58
抛开一切因素来讲,不要对号入座!因为你没有给出任何可以值得参考的相关内容。

如果在高负载的系统中运行,会话线程执行完后一直没有释放的话,那么就会造成后者请求线程一直在等待前者运行线程的结束,那么响应时间自然而然的就增加了。
作者: gcm_xp    时间: 2011-5-5 17:25
本帖最后由 gcm_xp 于 2011-5-5 17:32 编辑

脚本执行的动作(网页版的即时通讯):登录系统,选择聊天对象,发送对话(接收对话的动作后台自动执行,已包含在脚本中了)
Action()
{

        web_url("LogOn",
                "URL=http://io10-deploy:1100/SSO/LogOn?ReturnUrl=%2f",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=",
                "Snapshot=t1.inf",
                "Mode=HTML",
                LAST);

        web_submit_form("LogOn_2",
                "Snapshot=t2.inf",
                ITEMDATA,
                "Name=Name", "Value=gcm", ENDITEM,
                "Name=Password", "Value=123456", ENDITEM,
                EXTRARES,
               ...
               ...
               ,
                "Url=../Content/images/rightArrow.gif", "Referer=http://io10-deploy:1100/", ENDITEM,
                LAST);

   



       lr_start_transaction("jishitongxun");
        

        lr_rendezvous("bingfa");

        web_submit_data("Initial",
                "Action=http://io10-deploy:1100/Chat/Initial",
                "Method=POST",
                "RecContentType=application/json",
                "Referer=http://io10-deploy:1100/Home/Chat",
                "Snapshot=t10.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=userID", "Value=d6b47fab-3feb-484e-942b-f2fb62a7723e", ENDITEM,
                LAST);

        web_submit_data("Connect",
                "Action=http://io10-deploy:1100/Chat/Connect",
                "Method=POST",
                "RecContentType=application/json",
                "Referer=http://io10-deploy:1100/Home/Chat",
                "Snapshot=t11.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=USERNAME", "Value=d6b47fab-3feb-484e-942b-f2fb62a7723e", ENDITEM,
                "Name=USERID", "Value=d6b47fab-3feb-484e-942b-f2fb62a7723e", ENDITEM,
                LAST);

        web_submit_data("Buildsession",
                "Action=http://io10-deploy:1100/Chat/Buildsession",
                "Method=POST",
                "RecContentType=application/json",
                "Referer=http://io10-deploy:1100/Home/Chat",
                "Snapshot=t12.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=sender", "Value=d6b47fab-3feb-484e-942b-f2fb62a7723e", ENDITEM,
                "Name=receivers", "Value=b097cdef-361d-439a-aa07-b8535e0707a2", ENDITEM,
                "Name=sessionName", "Value=", ENDITEM,
                LAST);

           
        web_submit_data("SendMessage",
                "Action=http://io10-deploy:1100/Chat/SendMessage",
                "Method=POST",
                "RecContentType=application/json",
                "Referer=http://io10-deploy:1100/Home/Chat",
                "Snapshot=t15.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=sender", "Value=d6b47fab-3feb-484e-942b-f2fb62a7723e", ENDITEM,
                "Name=message", "Value=test", ENDITEM,
                "Name=sessionID", "Value=341a4a02-91ad-4014-9b1e-8556299eeafd", ENDITEM,
                LAST);

   

        web_submit_data("GetChatRecord",
                "Action=http://io10-deploy:1100/Chat/GetChatRecord",
                "Method=POST",
                "RecContentType=application/json",
                "Referer=http://io10-deploy:1100/Home/Chat",
                "Snapshot=t18.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=userID", "Value=d6b47fab-3feb-484e-942b-f2fb62a7723e", ENDITEM,
                LAST);


       lr_end_transaction("jishitongxun", LR_AUTO);

   
        return 0;
}

场景:300个用户  每30s加载60个用户 运行直到所有负载加载完
集合点策略:当所有正在运行的 Vuser 中的 20% 到达集合点时释放
运行结果:图片中已包含了running vuser 、Rendezvous、Average Transaction Response Time

请各位再帮忙看看。。。。
作者: gcm_xp    时间: 2011-5-6 13:38
回复 7# Sayid
Sayid,请帮忙看看。。。。
作者: gcm_xp    时间: 2011-5-6 13:39
帖子不要沉了啊,高手们指点一下我啊
作者: gcm_xp    时间: 2011-5-6 14:36
顶啊顶。。。
作者: gcm_xp    时间: 2011-5-9 09:21
................
等待.
作者: panesion    时间: 2011-5-9 11:19
你这个是录制对话过程,在退出用户的时候有没有结束对话呢??另外高负载线程未释放,这个直接找开发,这是个性能的问题,不过估计他会问你是不是操作的问题。不过看情况,可能是你结束对话的脚本没弄好。如果是内存结束时未释放,那一般在稳定性的时候才看的到。
作者: sherryshi    时间: 2011-5-9 14:52
帮忙顶一下,学习
作者: sherryshi    时间: 2011-5-9 14:53
你这个是录制对话过程,在退出用户的时候有没有结束对话呢??另外高负载线程未释放,这个直接找开发,这是 ...
panesion 发表于 2011-5-9 11:19



    结束对话和释放是在哪里操作,我也不知道我做压力的时候有没有设置这些
作者: sherryshi    时间: 2011-5-9 15:17
我是在集合点策略中设置了当100%到达用户总数的时候,开始释放,这个释放是不是就是开始运行的意思呢,还是释放就是结束?
作者: sherryshi    时间: 2011-5-9 15:18
结束对话,是在计划中设置吗,跟持续时间对应的那个?
作者: gcm_xp    时间: 2011-5-9 15:31
我是在集合点策略中设置了当100%到达用户总数的时候,开始释放,这个释放是不是就是开始运行的意思呢,还是 ...
sherryshi 发表于 2011-5-9 15:17


我只知道,“集合点策略中设置了当100%到达用户总数的时候,开始释放”,这里的释放是指开始运行集合点处的脚本了。。
作者: sherryshi    时间: 2011-5-9 15:35
我只知道,“集合点策略中设置了当100%到达用户总数的时候,开始释放”,这里的释放是指开始运行集合点 ...
gcm_xp 发表于 2011-5-9 15:31



    哦,我一开始的理解也是这个意思
作者: 南勃万    时间: 2011-5-9 16:44
关注ing~
作者: lmzkuaipao    时间: 2011-5-9 16:47
集合点为什么在transaction之后?响应时间的计算是以transaction为基准的啊,你把集合点加transaction里面,测出来的东西能准么?你这样弄的话,responsetime就包括系统等待Vuser并发到你的期望值的时间了啊,不是系统真正的响应时间了
作者: sherryshi    时间: 2011-5-9 16:54
最近高手大侠们是不是都忙呢,都不出来了
作者: sherryshi    时间: 2011-5-9 16:56
继续顶一记~~~~~
作者: sherryshi    时间: 2011-5-9 17:14
本帖最后由 sherryshi 于 2011-5-9 17:16 编辑
集合点为什么在transaction之后?响应时间的计算是以transaction为基准的啊,你把集合点加transaction里面, ...
lmzkuaipao 发表于 2011-5-9 16:47



    这个也有区别呀,我把集合点加载事务里面了,速度很慢的,原来做同一个系统的压力速度没这么慢过。难道是这个原因?那集合点加在哪里比较合适呢?或者不加集合点是一定要加的吗
作者: lmzkuaipao    时间: 2011-5-9 22:35
看你要做哪种性能测试了,做spike test那样的就要集合点。如果你需要response time的数据,那集合点一定要在那个transaction开始之前,不然集合点在transaction里面,响应时间就包括了等待Vusers的时间了,得到的数据肯定是不准确的啊。那个结束前响应时间上升就不知道了,就这么看看,看不出原因的。你先把集合点删了或者拖外面去试试吧。
作者: dionysus    时间: 2011-5-9 22:58
我做过的性能测试里从来不用集合点。保证被测服务器和LR发压机在同一网段,测试时网上没有其他占用带宽的应用再跑就可以了。
作者: gcm_xp    时间: 2011-5-10 09:23
我做过的性能测试里从来不用集合点。保证被测服务器和LR发压机在同一网段,测试时网上没有其他占用带宽的应 ...
dionysus 发表于 2011-5-9 22:58



    不用集合点怎么测试出系统能承受的最大并发量啊
作者: wuwoyiran    时间: 2011-5-11 13:32
帮顶,我也想知道原因。。。
作者: 恋战周郎    时间: 2011-5-11 16:51
支持21楼的观点
作者: datouniuniu    时间: 2011-5-16 12:49
这帖子不错,希望能找到正确的答案。。。
作者: jackchenz51    时间: 2011-5-16 16:56
结束的时候 ,部分用户开始运行vuser_end里的脚本,加大了服务器的负载,导致其它事物响应时间变大
作者: jerrylzy    时间: 2011-5-19 13:07
定关注  高手快来解疑~~~~!
作者: lishumei2000    时间: 2015-6-10 18:35
panesion 发表于 2011-5-9 11:19
你这个是录制对话过程,在退出用户的时候有没有结束对话呢??另外高负载线程未释放,这个直接找开发,这是 ...

设置的场景是运行直到所有负载加载完成,用户退出回话不就表示已经结束了吗?用户完成提交后就退出这样不就表示回话结束了吗。我也很想知道为什么平局事物响应时间在用户结束后反而增加




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