• 微博
  • 微信微信二维码

广东省人民政府首页  >  要闻动态  >  广东要闻

www.234pao.com_

来源: 南方日报网络版     时间:2019-11-09 10:32:17

www.234pao.com

本文详细为各位介绍“并发”和“迭代”的区别,让各位将loadrunner中“迭代”和“并发”这两个容易混淆的概念整理清楚。

在用Loadrunner压测实施的过程中有两个比较关键的概念需要施压者清清楚楚明明白白,那就是“迭代数”和“并发数”,迭代数和并发数没有直接的关系,他们都是组成复杂场景运行时重要参数之一,但是,在Loadrunner的使用中,很多很多同学都会容易忽视这两个概念,甚至是混淆这两个概念,那本文就给大家介绍一下“并发和迭代那点事”

此处引用网络上比较经典的一个比喻来解释“迭代”和“并发”:一条四车道的马路,有四辆车并排前进通过收费站,此时为“并发数”;若四辆车纵向排队经过收费站,此时为“迭代”;若有100辆车,排成4*25的阵列通过收费站,那此时又有并发又有迭代;迭代和并发,是完全不同的概念,没有什么关系; 比如,一个用户迭代十次,还是一个用户的压力,10个用户执行一次,就是10个用户的压力

10个用户迭代10次,还是10个用户的压力

LR是如何实现迭代和并发; 说一个比较容易理解的层面:迭代就是不停的反复调用同一脚本,反复执行,注意,对1个用户执行10次来说,只会分配一块内存

10个用户执行一次,是调用同一脚本10次,会分配10块内存

action在场景运行中iteration只对其起作用,对vuser_init和vuser_end都不起作用,action是一个可以被重复使用的最小单位其实你可以将所有脚本录制到一个action里,只是不方便管理罢了

举个最简单的例子,像lr自带的例子——订票系统,你如果把所有脚本都录制到一个action里,那回放的时候,每个用户登录就只能买一张票,而如果想一个用户买多张票的话,这样就行不通了

那你就要设多个action,并把登录和结束各录制在一个action里,把买票录到一个action中,这样,将买票的action迭代多次,而用户登录和结束只运行一次,这不就模拟了现实中的情况了吗? 其实LoadRunner 是以客户端的角度来定义“响应时间”的,当客户端请求发出去后, LoadRunner 就开始计算响应时间,一直到它收到服务器端的响应

这个时候问题就产生了:如果此时的服务器端的排队队列已满,服务器资源正处于忙碌的状态,那么该请求会驻留在服务器的线程中,换句话说,这个新产生的请求并不会对服务器端产生真正的负载,但很遗憾的是,该请求的计时器已经启动了,因此我们很容易就可以预见到,这个请求的响应时间会变得很长,甚至可能长到使得该请求由于超时而失败

等到测试结束后,我们查看一下结果,就会发现这样一个很不幸的现象:事务平均响应时间很长,最小响应时间与最大响应时间的差距很大,而这个时候的平均响应时间,其实也就失去了它应有的意义

也就是说,由于客户端发送的请求太快而导致影响了实际的测量结果,设置步长则可以缓解这一情况,这样,应该试试设置pacing,再运行看看情况

最后给各位说一个例子,帮助区分“迭代”和“并发”,一个APP的用户必须绑定了硬件设备才能够使用,而且一个用户只能绑定一次,此时运用loadrunner将1000个用户绑定到1000个设备上,此时容易掉入的一个误区:设置100个用户每个用户跑(迭代)10次就完成所有绑定,其实非也;真正的正确的操作时100个用户每个用户跑(迭代)1000次才能完成全部的绑定,但是需要注意前提条件“一个用户只能绑定一次”,也就是说,每轮迭代只有第一次成功发送的用户能够成功其他99个用户都失败;再换种思维,其实这种情况和并发没有关系,我们使用1个用户跑(迭代)1000次就能得到想要的结果




相关文章

版权所有:57fak 粤ICP备05070829 网站标识码4400000131
主办:南方新闻网 协办:广东省经济和信息化委员会 承办:南方新闻网
建议使用1024×768分辨率 IE7.0以上版本浏览器