锁定老帖子 主题:请教大型WEB系统的架构设计和技术选型
精华帖 (1) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2007-09-05
不是说ebay是用的ejb么?
|
|
返回顶楼 | |
发表时间:2007-09-05
davexin 写道 感谢robbin和各位的热心回答。
近段时间正在做购买新硬件和新软件的预算,公司高层准备买weblogic10和oracle 10g,所以请了bea公司的人员和我一块做测试,经过近几天的测试,测试一下新的系统指标1万个并发,需要多少软件和多少硬件能够支撑,已经测试了不同的组合方式,有了不同的结果,分别如下: 1。1台weblogic10 能支持900个用户并发(没有用ejb),平均响应时间 10秒。 2。1台weblogic10 Express(相当于1台tomcat,用于发布jsp应用)加1台weblogic10(发布ejb应用),能支持1000个并发用户,平均响应时间9秒,由于本人使用的loadRunner最多支持1000个web并发,虽然此时weblogic没有任何错误,但是没办法再向上压用户,所以不知道最高能支撑多少个并发用户,很遗憾。 3。1台weblogic8, 能支持900个用户并发(没有用ejb),平均响应时间 11秒。但是没有weblogic10在同样时间内处理的交易数量多。可以判定性能不能weblogic10。 4。1台tomcat4.1加1台weblogic8,只能支持350个并发用户,tomcat就连结超时,说明此种结构瓶颈在tomcat。 5。1台tomcat6.14加1台weblogic8,还不如方案4,tomcat结超时更多,说明此种结构瓶颈在tomcat。由于还没有看tomcat6.14的调优资料。所以还请高手给建议。 6。1台tomcat4.1加1台weblogic10,性能同样不佳,问题出现在tomcat性能跟不上。 7。1台tomcat6.14加1台weblogic10,性能同样不佳,问题出现在tomcat性能跟不上。 明天还要做一个weblogic10 cluster测试,等有了测试结果,再根大家交流。 以上测试机器都为 linux as4 操作系统,2cpu + 2G内存,发现cpu利用率最高占45%,一般就在10%左右,内存可以用到1.5G。 loadRunner机器为2cpu + 2G内存,window server 2003操作系统。 有以上的结果,bea公司人员建议购买16-20cpu的licens。机器购买4cpu + 8G内存机器4-6台。前端tomcat增加到50台。 由于根据以前的宕机记录,主要表现在tomcat层,个别高峰时候也出现在F5。故不敢轻易的舍弃无状态session bean。由于tomcat做了大部分的业务,只有需要数据库的时候才调用weblogic中间件,由于weblogic的价格还是比较昂贵的,公司以前购买的weblogic licens数量限制。所以还不能把所有的tomcat换成weblogic。如果有20台weblogic的licens,我也就不担心1万个并发了。 代价太大了,大的离谱。 WEB层为什么要和service进行远程调用?这个问题不解决,成本永远要多付出50%以上,保守估计 引用 有以上的结果,bea公司人员建议购买16-20cpu的licens。机器购买4cpu + 8G内存机器4-6台。前端tomcat增加到50台。 -------这些人好黑啊。。。。。 20cpulicens加上他们的service,support=500万RMB 4cpu + 8G 6台=60万 n*oracle10g=50万 。。。。 这个代价跟04年ebay中国的硬件代价差不多,当时的的PV可以达到2000万 |
|
返回顶楼 | |
发表时间:2007-09-05
网站类的运用,通常是并发大,交易少。大多数网站都是使用增多应用服务器,使用开源产品resin/tomcat来做的。
很少听说网站类的使用tomcat做前端。 楼上的8000说的对:weblogic永远是对于银行,证券,电信的行业所准备。比如我们现在用的系统,weblogic跑在32CPU的IBM小型机上。 至于ejb,可以很明确的说,那玩意降低性能,调试麻烦,没什么好处。 现在我们做的这个项目非常庞大,金额接近1亿,IBM做的架构,也抛弃ejb,使用spring+hibernate开源方案 |
|
返回顶楼 | |
发表时间:2007-09-05
如果LZ只是支持用户信息注册,充值这些简单业务的话,根本用不着这么兴师动众
原来的系统优化下完全可以的。。。 主要分离静态和动态的数据就好了(当然这种说法不准确,大致意思)想个人信息,充值信息,一个人3天难得动一回的,数据量再多一倍无所谓;如果提供了论坛等等一些更新比较快的服务的话,和其他数据分开就好了 |
|
返回顶楼 | |
发表时间:2007-09-05
davexin 写道 rich 写道 不明白,区区5000-10000并发用户,为何要20台web server?
按道理一台web server怎么也可以支持2000并发用户吧? LZ的 web应用有什么特别之处吗?以至于一台web server只能支持250并发用户 你去测试一下吧,我们系统前端tomcat都是用的刀片,配置在2G内存,cpu大概在2.0G,每台机器也就支持 250-400个并发,再多的话,就会相应时间非常的常,超过20秒,失去了意义 ,所以我们才得出这样的结论的。测试时使用的loadRunner8.0,不信的话,请你自己去测试一下吧,不知道你的并发量4000是怎么得到的?还请解释一下。 并发不是简单的配置能说明的,还看你应用复杂读 不过,你们的配置如果U>=2的话,应用又比较简单的话,一定有问题 我以前测试过单U+1G和应用比较简单的状况下,Tomcat可以200多接近300的并发 其实这个问题很复杂。。需要具体的分析 |
|
返回顶楼 | |
发表时间:2007-09-05
robbin 写道 引用 2。1台weblogic10 Express(相当于1台tomcat,用于发布jsp应用)加1台weblogic10(发布ejb应用),能支持1000个并发用户......
...... 4。1台tomcat4.1加1台weblogic8,只能支持350个并发用户,tomcat就连结超时,说明此种结构瓶颈在tomcat。 这说明瓶颈还不在EJB远程调用上,但是问题已经逐渐清楚了。为什么weblogic充当web容器发起远程EJB调用的时候可以支撑1000个并发,但是tomcat只能到350个?只有两个可能的原因: 1、你的tomcat没有配置好,严重影响了性能表现 2、tomcat和weblogic之间的接口出了问题 上面的帖子其实我也介绍过了,如果只是单纯的作为servlet容器来看,tomcat的性能不应该比weblogic差,甚至还要更好,所以你可以这样来拟定测试方案: 在同样硬件环境下对比测试tomcat5.5和weblogic10的servlet容器性能,分别写几个访问数据库,和不访问数据库的JSP页面测试就可以了,并发从500往上走,看看哪个throughput更高。记得要调优tomcat5.5,配置apr支持要打开。 如果测试结果表明tomcat并发响应能力远远差于weblogic,那就说明你的tomcat配置有很大的问题,好好钻研tomcat configuration && performance tuning吧; 如果测试结果表明tomcat并发响应能力与weblogic相当,或者差不多,那么很不幸,问题不在tomcat本身,而是出在了tomcat到weblogic的接口上。而tomcat是通过weblogic提供的EJB client jar去调用weblogic的EJB的,那你只好咨询BEA去寻求解决方案了。 经过今天修改tomcat的参数,修改如下: <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8080" enableLookups="false" redirectPort="8443" acceptCount="500" maxProcessors="500" minProcessors="500" maxSpareProcessors="200" connectionTimeout="20000" useURIValidationHack="false" disableUploadTimeout="true" /> 经过测试,并发人数是可以达到像robbin所说的一样,能够在600人左右,如果压到并发700人,就有15%左右的失败,虽然在调整上面参数之后,并发人数上去了,但是在同样的时间内所完成的事务数量下降了10%左右,并且响应时间延迟了1秒左右,但从整体上来说,牺牲一点事务吞吐量和响应时间,并发人数能够提高500,觉得还是值得的。谢谢robbin的建议。 由于本人使用的loadRunner 能支持的独立client数量在100个,所以没办法对ejb进行单独的压力测试。因为我在对前段应用调用ejb时,最多并发用户已经达到1000个,但是通过监控weblogic10中发布的ejb应用和连接池,发现ejb应用等待数量为0,但是连接池中最多有60个活动连接,有7个连接在等待,因为此时设置的weblogic连接池最大数量是60,后来对连接池数量进行增大到160个,再次进行测试,发现性能反而不如把连接池数量调为60个的时候。问起bea的人,他们也说不清楚原因。 同时对他们所提供的一种更好的jvm进行测试,jvm的名字是 RealTime.发现性能并没有太大改善。 我们现在的系统已经作了很多的缓存,有全局的,有局部的,都是放到内存中的HashMap,静态的页面都是放在apache上的,不过没有使用 apr, 接下来如果有时间,会测试一下这个咚咚,。 che前面是F5负载均衡器,在apache后面是tomcat,tomcat在公网上,然后通过内网网卡访问weblogic,weblogic才能访问数据库,tomcat不能直接访问数据库的,由于以前的网络结构的原因,也有安全的原因,公司还有部分服务器在北京(无线事业部)和广州(老系统,以后会逐渐迁移到上海),虽然现在也有其他的安全方案可以把tomcat放在内网,去掉weblogic,但是这种改变是需要时间的,也要考虑平稳过渡,所以还请各位理解。至于购买weblogic,公司也是有自己的考虑的。因为以前就是运行在weblogic上的,如果现在不用了,如果出了问题,就很难办了。 |
|
返回顶楼 | |
发表时间:2007-09-05
既然你用tomcat4都可以达到并发600,那tomcat5.5在同样环境下经过调优完全可以达到1000,看来问题还是在于你们tomcat没有配置好。
|
|
返回顶楼 | |
发表时间:2007-09-05
chenqj 写道 不是说ebay是用的ejb么?
ebay的CTO在QCon 2007上有份PPT,好像说ebay的主架构只用了J2EE最基本的功能,碰都没碰EJB这类高级货啊,当然在某些支线应用上可能会用了。 davexin 写道 同时对他们所提供的一种更好的jvm进行测试,jvm的名字是 RealTime.发现性能并没有太大改善。 Realtime版只是把垃圾收集引起的暂停时间讲的更低而已(30ms以内,而且需要你配JVM参数才会有这个效果),对吞吐量并没有帮助:) |
|
返回顶楼 | |
发表时间:2007-09-06
江南白衣 写道 chenqj 写道 不是说ebay是用的ejb么?
ebay的CTO在QCon 2007上有份PPT,好像说ebay的主架构只用了J2EE最基本的功能,碰都没碰EJB这类高级货啊,当然在某些支线应用上可能会用了。 davexin 写道 同时对他们所提供的一种更好的jvm进行测试,jvm的名字是 RealTime.发现性能并没有太大改善。 Realtime版只是把垃圾收集引起的暂停时间讲的更低而已(30ms以内,而且需要你配JVM参数才会有这个效果),对吞吐量并没有帮助:) 江南白衣,讲的很对,RealTime是对垃圾回收做了优化,目标是使响应时间变短,但是要在长时间运行情况下才能体现它的性能,由于时间紧,昨天我们只运行了半个小时左右,所以并没有体现出他的优越性能。也是一种遗憾吧,我想既然bea敢拿出来买,她如果没有那金刚钻,也不敢拿出来招摇了。 |
|
返回顶楼 | |
发表时间:2007-09-06
robbin 写道 既然你用tomcat4都可以达到并发600,那tomcat5.5在同样环境下经过调优完全可以达到1000,看来问题还是在于你们tomcat没有配置好。
是的,如果调整参数,可以达到并发人数达到1000以上,但是通过对比同样压力下的weblogic和tomcat,发现tomcat的响应时间都比weblogic长,并且tomcat的cpu的占用率达到45%-60%,而同样的压力下weblogic的cpu占用只有3%-5%。内存都是2G都用了97%,说明主要差别表现在cpu和相应时间上,我没有做tomcat 1000人并发测试,但是从以前600人并发的响应时间判断,我觉得响应时间可能会超过15秒。所以从综合各方面性能指标考虑,我觉得要找出一个响应时间,并发人数,完成交易数量3方面考虑折中,找出一个满足应用响应时间和并发用户的折中吧,如果是并发交易量比较大的应用,我想应该减少并发用户,提高单位时间内交易数量来满足应用需求吧。 |
|
返回顶楼 | |