啸:呼啸;瀚:浩瀚。心胸要宽阔,犹如浩瀚的沙漠;沉默是金但是要记住,沉默是为了推翻一切,淹没时间的不公不正,像呼啸的暴风雨一样势不可挡。

《LoadRunner 没有告诉你的》之四——理解性能

上一篇 / 下一篇  2009-08-14 15:48:22 / 个人分类:性能测试

版权声明:本文可以被转载,但是在未经本人许可前,不得用于任何商业用途或其他以盈利为目的的用途。本人保留对本文的一切权利。如需转载,请在转载是保留此版权声明,并保证本文的完整性。也请转贴者理解创作的辛劳,尊重作者的劳动成果。

@h WOC/w4E9A0

作者:陈雷(Jackei)

k*LpU2d;V0

邮箱:jackeichan@gmail.com

dx1?,@q0

Bloghttp://jackei.cnblogs.com51Testing软件测试网A/y+_-[ n-jQk

 
3k\"U r C"Rk*hw%m,~0

2ZE|4H1d;Lh$E0

本文是《LoadRunner没有告诉你的》系列文章的第四篇,在这篇短文中,我将尽可能用简洁清晰的文字写下我对“性能”的看法,并澄清几个容易混淆的概念,帮助大家更好的理解“性能”的含义。
E:O![W,i,v0

*@8o!} ~z!\`tH0

如何评价性能的优劣:用户视角vs.系统视角51Testing软件测试网sV,}-wTOH

对于最终用户(End-User)来说,评价系统的性能好坏只有一个字——“快”。最终用户并不需要关心系统当前的状态——即使系统这时正在处理着成千上万的请求,对于用户来说,由他所发出的这个请求是他唯一需要关心的,系统对用户请求的响应速度决定了用户对系统性能的评价 51Testing软件测试网o [&` xrx%Z#@O$h

而对于系统的运营商和开发商来说,期望的是能够让尽可能多的用户在任意时刻都拥有最好的体验,这就要确保系统能够在同一时间内处理更多的用户请求。正如在《理发店模型》一文中所描述的:系统的负载(并发用户数)与吞吐量(每秒事务数)、响应时间以及资源利用率(包括软硬件资源)之间存在着一个“此消彼长”的关系。因此,从系统的运营商和开发商的角度来看,所谓的“性能”是一个整体的概念,是系统的负载与吞吐量、可接受的响应时间以及资源利用率之间的平衡51Testing软件测试网 O0hZ~Hzh-B8~o

换句话说,“好的性能”意味着更大的最佳并发用户数(The Optimum Number of Concurrent Users)和最大并发用户数(The Maximum Number of Concurrent Users。有关“最佳/最大并发用户数”的概念请参见《理发店模型》一文 

,~(l t.VXHZ0

另外,从系统的视角来看,所需要关注的还包括三个与“性能”有关的属性:可靠性(Reliability可伸缩性(Scalability可恢复性(Recoverability——我将会在本系列文章的第五篇“无处不在的性能测试”中专门讨论这三个属性的含义和相关的实践经验。51Testing软件测试网3\!W#S V FBG-R

 51Testing软件测试网$l:^l(y`$O*t,ioh

响应时间51Testing软件测试网%c9B7D^U:~A

51Testing软件测试网 ~8g"Q2Ub


1P'}]8@I)A0?051Testing软件测试网;F*~ L_&F%[ M x

上面这张图引自段念兄的一份讲义,不过我略作了些修改。从图中我们可以清楚的看到一个请求的响应时间是由几部分时间组成的,包括51Testing软件测试网 m G&@ Ux

C1:用户请求发出前在客户端需要完成的预处理所需要的时间;

vd3gA"B _/K`0

C2:客户端收到服务器返回的响应后,对数据进行处理并呈现所需要的时间;

ZBo;w S ZQ0

A1Web/App Server对请求进行处理所需要的时间;

)c!a;MN&` U8a0

A2DB Server对请求进行处理所需的时间;

8v.xnl*e3m0

A3Web/App ServerDB Server返回的结果进行处理所需的时间;51Testing软件测试网!hz M!Y:s

N1:请求由客户端发出并达到Web/App Server所需要的时间;

IA.L? {&@ B6|0

N2:如果需要进行数据库相关的操作,由Web/App Server将请求发送至DB Server所需要的时间;

F6[*}8dr;Qi4c0

N3DB Server完成处理并将结果返回Web/App Server所需的时间;51Testing软件测试网-V:K H/Lts$R

N4Web/App Server完成处理并将结果返回给客户端所需的时间;

3IM"`.zk0

从用户的角度来看,响应时间=(C1+C2)+(A1+A2+A3)+(N1+N2+N3+N4);但是从系统的角度来看,响应时间只包括(A1+A2+A3)+(N1+N2+N3+N4)

2zVgTx Kqj[0

在理解了响应时间的组成之后,可以帮助我们通过对响应时间的分析来更好的识别和定位系统的性能瓶颈。51Testing软件测试网+D)S{;Pcr}Wme

 51Testing软件测试网"_ [s H8E{

吞吐量vs.吞吐量

@r.b[)F0

在不同的测试工具中,对于吞吐量(Throughput)会有不同的解释。例如,在LoadRunner中,这个指标是以字节数为单位来衡量网络吞吐量的,而在JMeter中则是以事务数/秒为单位来衡量系统的响应能力的。不过在大多数英文的性能测试方面的书籍或资料中,吞吐量的定义使用的是后者。

v2@4\JGa$z0

 

'T S?,D:}6k"Wb|W.|0

并发用户数每秒请求数51Testing软件测试网n$_3}&jCJ5eLn

这是两个容易让初学者混淆的概念。

'bV [~4B*Od;m%Fq0

简单说,当你在性能测试工具或者脚本中设置了100并发用户数后,并不能期望着一定会有每秒100个请求发给服务器。事实上,对于一个虚拟用户来说,每秒发出多少请求只跟服务器返回响应的速度有关。如果虚拟用户在0.5秒内就收到了响应,那么它会立即发出第二个请求;而如果要一直等待3秒才能得到响应,它将会一直等到收到响应后才发出第二个请求。也就是说,并发用户数的设置只是保证服务器在任一时刻都有100个请求需要处理,而并不一定是保证每秒中发送100个请求给服务器。

^5J Y$P{0

所以,只有当响应时间恰好是1秒时,并发用户数才会等于每秒请求数;否则,每秒请求数可能大于并发用户数或小于并发用户数。

HiIgo*Ut y0

TAG:

 

评分:0

我来说两句

Open Toolbar