产品的质量依赖于过程的质量, 而过程的质量依赖于企业文化和管理!
欢迎大家来到我的小窝~!
如何测一个门户网站是否支持10万用户同时在线-转自51testing上的讨论(转)
上一篇 /
下一篇 2010-12-23 10:33:11
/ 个人分类:LoadRunner
| mz6\(a&J"w4N0这个帖子的内容比较典型,大家有兴趣可以也思考一下。帖子源于51testing论坛51Testing软件测试网vSl#ACA y
Gw
r 51Testing软件测试网W Y.Mh+L w4Vx] 先是楼主提出问题: 2?DK!Mg]'I E
n0最近公司一个项目,是个门户网站,需要做性能测试,根据项目特点定出了主要测试项和测试方案 $V1[{1C^.U"x$m_#K0一种是测试几个常用页面能接受的最大并发数(用户名参数化,设置集合点策略)51Testing软件测试网"_u/P+eK:OC@,n,n7Q 一种是测试服务器长时间压力下,用户能否正常操作(用户名参数化,迭代运行脚本) ^0pPvC y0还有一种则需要测试服务器能否接受10万用户同时在线操作,但使用的Loadrunner的license只能支持1万用户,请问这时该如何制定该方案?51Testing软件测试网:v?#pV+w1uulX
OyL'u;cxc N2nSo051Testing软件测试网/V(BJ1d0_U"A
W#q 后面跟着大家的回复: A9a;[q+H wFa|0 5Oo;e0{9Fy,zP:e(a"yLu(q0网友 xingcyx 的回复:51Testing软件测试网pM'y;G2qsE 1、找10台电脑也没用,license仍然只支持10000个。 TsBh(u;Zk|d02、找HP支持。当然,前提是你有足够的钱。51Testing软件测试网F6s
y'j[&S2J^jw6uQ+l7u 3、测到10000用户并发。我认为,通常情况下10000用户并发,支持100000用户在线,没有问题的。 Y2M9i] z$BA[b0 oy&_p's G3eQ0 fI$Q9qL1x0网友 jackloo 的回复: 'enHxE"W~0总的来说这一类的性能指标对大多数软件来说没什么实际意义,更多的是对硬件的要求。51Testing软件测试网%zk X/^3w^Qb 如果是用IIS做应用服务器的话,单台可承受的最大并发数不可能达到10万级,那就必须要使用集群,通过多台机器做负载均衡来实现; 7s,M7]*McO0h|B*W0如果是用websphere之类的应用服务器的话,单台可承受的最大并发数可以达到10万级,但为性能考虑还是必须要使用集群,通过多台机器做负载均衡来实现;
NJN7y(P:T.Xvf)Mk.G0那么,你只要集群的服务器足够多,10万并发数当然可以达到了。 `DocM
z-w`0通常有1个简单的计算方式,1个连接产生1个session,每个session在服务器上有个内存空间大小的设置,在NT上是3M,那么10万并发就需要300G内存,当然实际使用中考虑其他程序也占用内存,所以准备的内存数量要求比这个还要多一些。51Testing软件测试网GHA{#Jy 还有10万个用户同时在线,跟10万个并发数是完全不同的2个概念。这个楼上已经说了。但如何做这个转换将10万个同时在线用户转换成多少个并发数呢? _6b"oIsK xr+w0这就必须要有大量的历史日志信息来支撑了。系统日志需要有同时在线用户数量的日志信息,还需要有用户操作次数的日志信息,这2个数据的比例就是你同时在线用户转换到并发数的比例。 Vdr#}0P
O0另外根据经验统计,对于1个JAVA开发的WEB系统(别的我没统计过,给不出数据),一般1台双CPU、2G内存的服务器上可支持的最大并发数不超过 500个(这个状态下大部分操作都是超时报错而且服务器很容易宕机,其实没什么实际意义),可正常使用(单步非大数据量操作等待时间不超过20秒)的最大并发数不超过300个。 +G]Dr,XL5v N0假设你的10万同时在线用户转换的并发数是9000个,那么你最少需要这样的机器18台,建议不少于30台。51Testing软件测试网M/n6C'N)Zs 当然,你要是买个大型服务器,里面装有200个CPU、256G的内存,千兆光纤带宽,就算是10万个并发用户,那速度,也绝对是嗖嗖的。 %vdP6dv[{0 Z/|lm`#t B4x051Testing软件测试网V:d*f I/X'{ 楼主的回复:51Testing软件测试网XCg.p SHhq 谢谢jackloo ! !d)Qg{`e0w-s0再请问如果我想测试10000个用户同时在线做常用操作的话(每两秒加一个用户,一直加到10000),对服务器的要求有多高? f:t&Lg-N&xq9Hw051Testing软件测试网]VM:Al)}Q%e DF"` 网友 jackloo 的回复: (Yp|^zZ$v0套用1句经典台词“高,实在是高”51Testing软件测试网dm7i
?e5t5auM 呵呵。另外暴寒1下,你的设置光全部进入运行状态就需要接近6个小时。 4N8c0W?/Hn"B$^0具体的你可以拿1个系统来压一下看看,可能会出现以下情况: b*LaJ6Ou01。服务器宕机;51Testing软件测试网7q`
m4] ~%O)P7S/TI 2。客户端宕机; 2C4E
Osn03。从某个时间开始服务器拒绝请求,客户端上显示的全是错误;51Testing软件测试网#PlJz0AM1x,jR 4。勉强测试完成,但网络堵塞或测试结果显示时间非常长。假设客户端和服务器之间百兆带宽,百兆/10000=10K,那每个用户只能得到10K,这个速度接近1个64K的MODEM上网的速度; %@v8w])Sk"g$T0另外以上分析全都没考虑系统的后台,比如数据库、中间件等。51Testing软件测试网'epK8a8zPn 我从没遇到你说的这样的性能需求过,也只好凭感觉随便掰掰: J^;DV+T#?01。服务器方面:上面说的那样的PC SERVER需要50台;51Testing软件测试网t_:Z3XDDXe.w 2。网络方面:按每个用户50K,那至少5根百兆带宽独享,估计仅仅网络延迟就大概是秒一级的;51Testing软件测试网"ib4K e(IX4V_ 3。如果有数据库,至少是ORACLE,最好是SYSBASE,SQL SERVER是肯定顶不住的。数据库服务器至少需要10台4CPU、16G内存的机器; w
j8N
O3Cr3E04。如果有CORBA,那至少再准备10台4CPU、16G内存的机器;51Testing软件测试网
x7j;hfa 再加上负载均衡、防火墙、路由器和各种软件等,总之没个1000万的资金投入,肯定搞不定。 $]
fZ:K4N6ge0 b7g`7WaIC_xC^Z0网友 mybasswood 的回复:51Testing软件测试网sp6l.t1k$m 如果是10万用户的话要看做些什么哈.51Testing软件测试网6ft0V$o?] 比如对于voip来说,假设有10万用户的话,服务器规定每个client至少要在3600秒内到服务器成功报到一次,否则就被服务器cancel掉. APxb^0client是每隔60秒注册一次.51Testing软件测试网&q0c3]/w&j!? 所以就要推算在3600秒内,每一个client至少成功报到一次是最少的标准.要10万用户在3600秒内被服务器吃掉才可以---这是最低要求. /Hd[~ GN:[A-M0最高要求是: 在60秒内所有的10万用户去注册,如果服务器在60秒可以都吃掉的话,每秒种的平均并发差不多是3334. 0D)[Q.NB?BW0最低要求是:在3600秒内所有的10用户去注册,如果服务器在3600秒内都可以吃掉的话,每秒钟的平均并发用户差不多是60个.还有一过问题是客户端要在3600秒内发送至少60次,至少有一次成功.再加上这些用户分布在全球各地的话,这样数值应该还会有变化的.51Testing软件测试网E%lMw G%Rk(R:b
Z&n 51Testing软件测试网~$x+qw*r't2B5x
iGh%e/O6tL0 3F+J
BHc`0下面是偶的看法: SE
h4]U^0给楼主一个建议吧。51Testing软件测试网|R
Q9E-^?
l}L(t&y%k*iK0你在公司中的测试环境是一定的,你需要做得是现在这个环境中确认一下系统在当前环境下的实际处理能力。如果还有资源,再做一下可伸缩性的测试。 ^6F9f/JaV!b\"W M0然后对测试结果进行分析,对系统的处理能力和可伸缩性做一个描述。51Testing软件测试网Xw j@WE!Q
A
KBlD)Qx}f0当然,要在报告中说明你的测试环境。51Testing软件测试网vb~d@p Vv7L
sm3r9fUI[051Testing软件测试网k!EITh2F%d 另外一位网友robust 的留言: "escT
ILu0你的意思是否想用10000个用户测试结果来推测一下10万个用户?51Testing软件测试网V
z,l5{]-\,x 还是如有些老兄说的,测试一下什么伸缩性测试.然后也来个报告,无非也是想用1万个来推测10万个的情况?(评注:那样的话要你做什么性能测试,只要计算一下就可以得性能结果了.)51Testing软件测试网 V F)^B/G7K_#X 还是如有些老兄说的,这一类的性能指标对大多数软件来说没什么实际意义,更多的是对硬件的要求?(评注:那样的话要你做什么性能测试,做什么性能调优,只要计算一下,添加硬件就可以了.)51Testing软件测试网
i-mZxH&g 实际上,"实践是检验真理的唯一标准!"这句话才是硬道理.只有真实地测试过才知道.任何推测只是推测,并不能反映真实的情况.51Testing软件测试网'ia4fms
W7U 至于性能测试工具,LR只是普及率高(市场占有率高),并不是在性能指标上有优势.世界上比它厉害的工具有不少,举个例子siprent通信公司的avalanche2500,大型计算机实验室配备的性能测试工具.支持录制/回放,测试结果分析等.它可以模拟从数据层到应用层的协议,(当然也包含http-web),单个支持100万并发连接.拿它也可以测试100万级的并发性能.51Testing软件测试网*M[l(zh
ZX"c 51Testing软件测试网3H0m ue9x%U
Y`)f)ik$aT I8VO0 i
lC SVX/t:K-[0又是偶的回复:51Testing软件测试网t6{0m^"Km7{w 楼上的提到的见解不错,不过对性能测试的理解有些偏差。51Testing软件测试网 w0Vg#f'_6I 51Testing软件测试网r
Y4m^)Q-f!Z 先抛开性能测试工具不谈,其实这个问题是讨论到一个性能测试到底该怎么做。 3_GEz1rD051Testing软件测试网$F1_5u4V_6jDjc:x 简单举个例子,如果你想知道一种新的疫苗对人的作用,是不是要把所有的地球人全部找来每个人打一针试试呢?当然不是,只能是通过试验和抽样,然后通过统计学的方法来计算出一个模型,通过样本的表现来估算总体的特征。这就是统计学研究的领域,。不过请注意,统计学所包含的内容并不是像楼上的老兄所说的一样:只要计算一下就可以得性能结果了。51Testing软件测试网S$bChR%xx 51Testing软件测试网,sHY+p8_8E'SW 性能测试也同样如此。
|