通用指标(指Web应用服务器、数据库服务器必需测试项)
Web服务器指标
数据库服务器性能指标
系统的瓶颈定义
稳定系统的资源状态
通俗理解:
?日访问量
?常用页面大并发数
?同时在线人数
?访问相应时间
案例:
近公司一个项目,是个门户网站,需要做性能测试,根据项目特点定出了主要测试项和测试方案:
一种是测试几个常用页面能接受的大并发数(用户名参数化,设置集合点策略)
一种是测试服务器长时间压力下,用户能否正常操作(用户名参数化,迭代运行脚本)
一种则需要测试服务器能否接受10万用户同时在线操作,如果是用IIS做应用服务器的话,单台可承受的大并发数不可能达到10万级,那必须要使用集群,通过多台机器做负载均衡来实现;如果是用websphere之类的应用服务器的话,单台可承受的大并发数可以达到10万级,但为性能考虑还是必须要使用集群,通过多台机器做负载均衡来实现;通常有1个简单的计算方式,1个连接产生1个session,每个session在服务器上有个内存空间大小的设置,在NT上是3M,那么10万并发需要300G内存,当然实际使用中考虑其他程序也占用内存,所以准备的内存数量要求比这个还要多一些。还有10万个用户同时在线,跟10万个并发数是完全不同的2个概念。这个楼上已经说了。但如何做这个转换将10万个同时在线用户转换成多少个并发数呢?这必须要有大量的历史日志信息来支撑了。系统日志需要有同时在线用户数量的日志信息,还需要有用户操作次数的日志信息,这2个数据的比例是你同时在线用户转换到并发数的比例。另外根据经验统计,对于1个JAVA开发的WEB系统(别的我没统计过,给不出数据),一般1台双CPU、2G内存的服务器上可支持的大并发数不超过500个(这个状态下大部分操作都是超时报错而且服务器很容易宕机,其实没什么实际意义),可正常使用(单步非大数据量操作等待时间不超过20秒)的大并发数不超过300个。假设你的10万同时在线用户转换的并发数是9000个,那么你少需要这样的机器18台,建议不少于30台。当然,你要是买个大型服务器,里面装有200个CPU、256G的内存,千兆光纤带宽,算是10万个并发用户,那速度,也是嗖嗖的。
另外暴寒1下,光设置全部进入运行状态需要接近6个小时。具体的可以拿1个系统来压一下看看,可能会出现以下情况:
1、服务器宕机;
2、客户端宕机;
3、从某个时间开始服务器拒绝请求,客户端上显示的全是错误;
4、勉强测试完成,但网络堵塞或测试结果显示时间非常长。假设客户端和服务器之间百兆带宽,百兆/10000=10K,那每个用户只能得到10K,这个速度接近1个64K的MODEM上网的速度;另外以上分析全都没考虑系统的后台,比如数据库、中间件等。
1、服务器方面:上面说的那样的PC SERVER需要50台;
2、网络方面:按每个用户50K,那至少5根百兆带宽独享,估计仅仅网络延迟大概是秒一级的;
3、如果有数据库,至少是ORACLE,好是SYSBASE,SQL SERVER是肯定顶不住的。数据库服务器至少需要10台4CPU、16G内存的机器;
4、如果有CORBA,那至少再准备10台4CPU、16G内存的机器;再加上负载均衡、防火墙、路由器和各种软件等,总之没个1000万的资金投入,肯定搞不定。
这样的门户系统,由于有用户权限,所以并不象jackie所说大多是静态页面。但只要是多服务器的集群,那么我们可以通过1台机器的测试结果来计算多台机器集群后的负载能力的,多额外考虑一下负载均衡和路由上的压力,比如带宽、速度、延迟等。但如果都是在1台机器上变化,那我们只能做一些指标上的计算,可以从这些指标上简单判断一下是否不可行,比如10万并发用户却只有1根百兆带宽,那我们可以计算出每个用户只有1K带宽,这显然是不可行的。但实际的结果还是需要测试了才知道,毕竟系统压力和用户数量不是线性变化的。
这一类系统的普遍的成熟的使用,以及很多软件在方案设计后能够大致估算出系统的性能特点,都导致了系统在软件性能方面调优的比例并不大(当然不完全排除后期针对某些代码和配置进行优化后性能的进一步提高),更多的都是从硬件方面来考虑,比如增加内存、硬盘做RAID、增加带宽、甚至增加机器等。
网络技术中的10M 带宽指的是以位计算, 是 10M bit /秒 ,而下载时的速度看到的是以字节(Byte)计算的,所以10M带宽换算成字节理论上快下载速度为:1.25 M Byte/秒!