51Testing软件测试网3ScbofQ0jl这个帖子的内容比较典型,大家有兴趣可以也思考一下。帖子源于51testing论坛
/j.Wi%Fv3n0
w)`Olem;[V:|M0先是楼主提出问题:
;q
P#vg.PG0最近公司一个项目,是个门户网站,需要做性能测试,根据项目特点定出了主要测试项和测试方案51Testing软件测试网H
`l JT~
一种是测试几个常用页面能接受的最大并发数(用户名参数化,设置集合点策略)
8I[BSBRb0\0一种是测试服务器长时间压力下,用户能否正常操作(用户名参数化,迭代运行脚本)
t2b1~*~ y3V0还有一种则需要测试服务器能否接受10万用户同时在线操作,但使用的Loadrunner的license只能支持1万用户,请问这时该如何制定该方案?51Testing软件测试网f y AY u
KQT
L$VHL(]SH051Testing软件测试网8W%r k%OU
B
u7}
_~
后面跟着大家的回复:51Testing软件测试网E_%X\5B-[
51Testing软件测试网mG"A+W.w%EP? z
网友 xingcyx 的回复:
S8W w*J&Fv[.j01、找10台电脑也没用,license仍然只支持10000个。51Testing软件测试网1]PP!S^x!G3\"QS
2、找HP支持。当然,前提是你有足够的钱。
+~(?A
@1V(nYu03、测到10000用户并发。我认为,通常情况下10000用户并发,支持100000用户在线,没有问题的。
|e'f"I
f051Testing软件测试网+zj9l*s0y
51Testing软件测试网FzfZ)Zxg
网友 jackloo 的回复:51Testing软件测试网x&e"\b/Go
总的来说这一类的性能指标对大多数软件来说没什么实际意义,更多的是对硬件的要求。51Testing软件测试网.kh\%`yE zTj~ w
如果是用IIS做应用服务器的话,单台可承受的最大并发数不可能达到10万级,那就必须要使用集群,通过多台机器做负载均衡来实现;
w;z` lO:Z0如果是用websphere之类的应用服务器的话,单台可承受的最大并发数可以达到10万级,但为性能考虑还是必须要使用集群,通过多台机器做负载均衡来实现;51Testing软件测试网q'}zbc~
那么,你只要集群的服务器足够多,10万并发数当然可以达到了。
a&_3W g0a y[,@@0通常有1个简单的计算方式,1个连接产生1个session,每个session在服务器上有个内存空间大小的设置,在NT上是3M,那么10万并发就需要300G内存,当然实际使用中考虑其他程序也占用内存,所以准备的内存数量要求比这个还要多一些。51Testing软件测试网,?ego\ p S
还有10万个用户同时在线,跟10万个并发数是完全不同的2个概念。这个楼上已经说了。但如何做这个转换将10万个同时在线用户转换成多少个并发数呢?
1LL4}y3V`0这就必须要有大量的历史日志信息来支撑了。系统日志需要有同时在线用户数量的日志信息,还需要有用户操作次数的日志信息,这2个数据的比例就是你同时在线用户转换到并发数的比例。
)]D%b;\-Sd#MS0另外根据经验统计,对于1个JAVA开发的WEB系统(别的我没统计过,给不出数据),一般1台双CPU、2G内存的服务器上可支持的最大并发数不超过 500个(这个状态下大部分操作都是超时报错而且服务器很容易宕机,其实没什么实际意义),可正常使用(单步非大数据量操作等待时间不超过20秒)的最大并发数不超过300个。51Testing软件测试网
fo-U)^P2~"}o5v3Sq
假设你的10万同时在线用户转换的并发数是9000个,那么你最少需要这样的机器18台,建议不少于30台。
%n7@8c
Y"g8F0当然,你要是买个大型服务器,里面装有200个CPU、256G的内存,千兆光纤带宽,就算是10万个并发用户,那速度,也绝对是嗖嗖的。
6~*qhe4KZ?Y Td
h0
6t"]
z-\9}/XD0
w)p,t;J~%ouI0楼主的回复:
5m9_ P~2_S6ei2b0谢谢jackloo !51Testing软件测试网C!x}%|uYQ6od
再请问如果我想测试10000个用户同时在线做常用操作的话(每两秒加一个用户,一直加到10000),对服务器的要求有多高?
{Vo@"T3\+}0
%?B&kI-Pth
n)n^&i0网友 jackloo 的回复:
j3h3Yhv{4X|`?0套用1句经典台词“高,实在是高”51Testing软件测试网Y3UFc
X&i
呵呵。另外暴寒1下,你的设置光全部进入运行状态就需要接近6个小时。51Testing软件测试网
mKOzu'Ti3j,@O
具体的你可以拿1个系统来压一下看看,可能会出现以下情况:51Testing软件测试网[
O:O
Yt;q
1。服务器宕机;
,C/P@k9Sf%sL[02。客户端宕机;
H0\NW)n)i9C6k:]03。从某个时间开始服务器拒绝请求,客户端上显示的全是错误;
(@%e!~i%W7k*a.X4aU04。勉强测试完成,但网络堵塞或测试结果显示时间非常长。假设客户端和服务器之间百兆带宽,百兆/10000=10K,那每个用户只能得到10K,这个速度接近1个64K的MODEM上网的速度;51Testing软件测试网!e]4r}Y4s
另外以上分析全都没考虑系统的后台,比如数据库、中间件等。
jJ k L NZY0y0我从没遇到你说的这样的性能需求过,也只好凭感觉随便掰掰:
s7|5d&kF9eS2|$b!V01。服务器方面:上面说的那样的PC SERVER需要50台;51Testing软件测试网$W!@*yUP?ma1Cp8R
2。网络方面:按每个用户50K,那至少5根百兆带宽独享,估计仅仅网络延迟就大概是秒一级的;51Testing软件测试网A4xi#~K8ba
3。如果有数据库,至少是ORACLE,最好是SYSBASE,SQL SERVER是肯定顶不住的。数据库服务器至少需要10台4CPU、16G内存的机器;
ucwk9PN]%_&S$}04。如果有CORBA,那至少再准备10台4CPU、16G内存的机器;51Testing软件测试网L8Lk"P$a ~$v/[
再加上负载均衡、防火墙、路由器和各种软件等,总之没个1000万的资金投入,肯定搞不定。51Testing软件测试网4[)_PE,K
51Testing软件测试网a2t5GsxMx9o:[
网友 mybasswood 的回复:
u3e+h
fp)]i0如果是10万用户的话要看做些什么哈.
/Bz9}M5xx0比如对于voip来说,假设有10万用户的话,服务器规定每个client至少要在3600秒内到服务器成功报到一次,否则就被服务器cancel掉.
;UJ*iOM0yO0client是每隔60秒注册一次.
0oo E*V?n0所以就要推算在3600秒内,每一个client至少成功报到一次是最少的标准.要10万用户在3600秒内被服务器吃掉才可以---这是最低要求.51Testing软件测试网oq7U.F&v@*XA
Q{]
最高要求是: 在60秒内所有的10万用户去注册,如果服务器在60秒可以都吃掉的话,每秒种的平均并发差不多是3334.51Testing软件测试网qR&Z~B)V6?
最低要求是:在3600秒内所有的10用户去注册,如果服务器在3600秒内都可以吃掉的话,每秒钟的平均并发用户差不多是60个.还有一过问题是客户端要在3600秒内发送至少60次,至少有一次成功.再加上这些用户分布在全球各地的话,这样数值应该还会有变化的.51Testing软件测试网8m*F]:a1@Aw
/tXK2h+IjX0
LU#?W_w8n051Testing软件测试网-IL#mr{7Hw*n7m
下面是偶的看法:51Testing软件测试网d;xh(D5v0kuHr5z
给楼主一个建议吧。51Testing软件测试网0^*MmgmHP};x+_
Jo!B!Fa0你在公司中的测试环境是一定的,你需要做得是现在这个环境中确认一下系统在当前环境下的实际处理能力。如果还有资源,再做一下可伸缩性的测试。51Testing软件测试网&S-HGN7~Gq)K AV
然后对测试结果进行分析,对系统的处理能力和可伸缩性做一个描述。51Testing软件测试网3n wV#h2? Bf
51Testing软件测试网b:oMg-O [7w
当然,要在报告中说明你的测试环境。51Testing软件测试网-oQ2n)so:ZpSr
51Testing软件测试网V_6Kq:|~bG
@]T9d0`&o0另外一位网友robust 的留言:51Testing软件测试网X:RG @ H2p/t9A
你的意思是否想用10000个用户测试结果来推测一下10万个用户?51Testing软件测试网J6`Onn,\ vR] g9j
还是如有些老兄说的,测试一下什么伸缩性测试.然后也来个报告,无非也是想用1万个来推测10万个的情况?(评注:那样的话要你做什么性能测试,只要计算一下就可以得性能结果了.)
4d}`Su)N`b1|;^w
Xx0还是如有些老兄说的,这一类的性能指标对大多数软件来说没什么实际意义,更多的是对硬件的要求?(评注:那样的话要你做什么性能测试,做什么性能调优,只要计算一下,添加硬件就可以了.)51Testing软件测试网q/wG[0z
实际上,"实践是检验真理的唯一标准!"这句话才是硬道理.只有真实地测试过才知道.任何推测只是推测,并不能反映真实的情况.51Testing软件测试网rU$U;\6M,`PE#F?9c
至于性能测试工具,LR只是普及率高(市场占有率高),并不是在性能指标上有优势.世界上比它厉害的工具有不少,举个例子siprent通信公司的avalanche2500,大型计算机实验室配备的性能测试工具.支持录制/回放,测试结果分析等.它可以模拟从数据层到应用层的协议,(当然也包含http-web),单个支持100万并发连接.拿它也可以测试100万级的并发性能.
M9n9\IJ.O4_0K051Testing软件测试网]e'C@6LVUWa
&z4d2{`@051Testing软件测试网u}4SW/oZY~
又是偶的回复:
S-iF-TQ(lW
AKh~0楼上的提到的见解不错,不过对性能测试的理解有些偏差。
J4mr TCY051Testing软件测试网|.s mn,X
先抛开性能测试工具不谈,其实这个问题是讨论到一个性能测试到底该怎么做。51Testing软件测试网$Xtq G0b}.Cv4E
k6v'k;|Ah;r^P\j0简单举个例子,如果你想知道一种新的疫苗对人的作用,是不是要把所有的地球人全部找来每个人打一针试试呢?当然不是,只能是通过试验和抽样,然后通过统计学的方法来计算出一个模型,通过样本的表现来估算总体的特征。这就是统计学研究的领域,。不过请注意,统计学所包含的内容并不是像楼上的老兄所说的一样:只要计算一下就可以得性能结果了。
wN |8~5I9aQ0
/g'gvYr&X7{p0性能测试也同样如此。51Testing软件测试网~R;eQi5U5d
#|Y8{|BT$KjW
^n+H_0楼主提到的性能需求应该是系统上线以后可能要面临的压力,先不讨论这个需求是否准确和有效,我们先假定它是有效的。那么,既然要验证的是系统在上线以后是否有能力应对10万用户同时在线的情况,那么自然要用生产环境来测试。如果有,那么 OK,可以作这个测试。至于工具,其实可以由开发人员帮忙写一些简单的脚本负责加压,再通过其他第三方工具收集测试数据就是了。51Testing软件测试网y,d3U9a5?0?%CVq
51Testing软件测试网*ASo*t E7R-MB @
但是如果没有生产环境,只有一台双CPU,3G内存的 2850 服务器,怎么办?这就好像上面提到的例子。可行的方法是在这台服务器上使用不同级别的负载来进行测试,并根据测试数据获得系统在这种环境下的最佳负载和最大负载,并根据测试数据对负载和资源消耗的情况进行估算,找到它们之间的关系。51Testing软件测试网+PE/C%j+cV
51Testing软件测试网fg K.f-jo
一般来说,大型的门户网站不会只用一台超级超级的服务器来承担所有的负载,因为采用负载均衡和集群技术可以更好的解决这个问题,一定是多台服务器分布在不同的地方,内容通过内容分发网络同步到各台服务器上。用户在访问时,其实是被应用层或者前端设备路由到一个合适的服务器去的。所以在测试时,对于可伸缩性的测试是必需的,一定要了解到 cluster 数量增加时,系统的响应能力是否可以线性的增加,也就是说是否可以承受更大的压力,为更多的用户提供服务。51Testing软件测试网T'X'a v-GWa
5J{D:v+\I0最后总结一下,对于性能测试,要作的是确认系统的响应能力,然后看系统是否可以满足性能需求。
`;\2Ig"L0['B051Testing软件测试网{r$qI(~K
如果大家有不同的见解,欢迎 PK 讨论
u_h1b(sd*N#^0
L!bwUa%e0继续偶的回复:51Testing软件测试网g$X?x2y1nVK
to jackloo51Testing软件测试网u7T_(E+Y3d5e)W
`/[#O'g;SB S(q051Testing软件测试网 GI8d{
F@pD
你所提到的对于硬件资源和软件资源的要求并不完全准确。因为实际的资源消耗要根据网站所提供的业务类型来推算。
-F[&E:ln0对于大多数门户网站来说,可供访问的大多是静态页面。在用户访问时,系统只是返回一个静态页面给用户,并不需要保持 session,而且这种情况下负载主要集中在I/O和网络流量方面——这也是为什么大型门户网站都会采用分布式的方式来部署服务器。当然,如果使用了 cache,内存的使用会随着服务器运行时间的延长而增加,但是 CPU 通常不会成为关键资源。51Testing软件测试网"T9iO^ [!|
,Sq-cMB'G5PL$?0这是门户网站同企业应用或者在线游戏的区别。