论坛首页 Java企业应用论坛

请教大型WEB系统的架构设计和技术选型

浏览 118900 次
精华帖 (1) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2007-09-05  
不是说ebay是用的ejb么?
0 请登录后投票
   发表时间: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万
0 请登录后投票
   发表时间:2007-09-05  
网站类的运用,通常是并发大,交易少。大多数网站都是使用增多应用服务器,使用开源产品resin/tomcat来做的。
很少听说网站类的使用tomcat做前端。
楼上的8000说的对:weblogic永远是对于银行,证券,电信的行业所准备。比如我们现在用的系统,weblogic跑在32CPU的IBM小型机上。
至于ejb,可以很明确的说,那玩意降低性能,调试麻烦,没什么好处。
现在我们做的这个项目非常庞大,金额接近1亿,IBM做的架构,也抛弃ejb,使用spring+hibernate开源方案
0 请登录后投票
   发表时间:2007-09-05  
如果LZ只是支持用户信息注册,充值这些简单业务的话,根本用不着这么兴师动众
原来的系统优化下完全可以的。。。
主要分离静态和动态的数据就好了(当然这种说法不准确,大致意思)想个人信息,充值信息,一个人3天难得动一回的,数据量再多一倍无所谓;如果提供了论坛等等一些更新比较快的服务的话,和其他数据分开就好了
0 请登录后投票
   发表时间: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的并发
其实这个问题很复杂。。需要具体的分析
0 请登录后投票
   发表时间: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上的,如果现在不用了,如果出了问题,就很难办了。
0 请登录后投票
   发表时间:2007-09-05  
既然你用tomcat4都可以达到并发600,那tomcat5.5在同样环境下经过调优完全可以达到1000,看来问题还是在于你们tomcat没有配置好。
0 请登录后投票
   发表时间:2007-09-05  
chenqj 写道
不是说ebay是用的ejb么?


ebay的CTO在QCon 2007上有份PPT,好像说ebay的主架构只用了J2EE最基本的功能,碰都没碰EJB这类高级货啊,当然在某些支线应用上可能会用了。

davexin 写道

同时对他们所提供的一种更好的jvm进行测试,jvm的名字是 RealTime.发现性能并没有太大改善。


Realtime版只是把垃圾收集引起的暂停时间讲的更低而已(30ms以内,而且需要你配JVM参数才会有这个效果),对吞吐量并没有帮助:)



1 请登录后投票
   发表时间:2007-09-06  
江南白衣 写道
chenqj 写道
不是说ebay是用的ejb么?


ebay的CTO在QCon 2007上有份PPT,好像说ebay的主架构只用了J2EE最基本的功能,碰都没碰EJB这类高级货啊,当然在某些支线应用上可能会用了。

davexin 写道

同时对他们所提供的一种更好的jvm进行测试,jvm的名字是 RealTime.发现性能并没有太大改善。


Realtime版只是把垃圾收集引起的暂停时间讲的更低而已(30ms以内,而且需要你配JVM参数才会有这个效果),对吞吐量并没有帮助:)




江南白衣,讲的很对,RealTime是对垃圾回收做了优化,目标是使响应时间变短,但是要在长时间运行情况下才能体现它的性能,由于时间紧,昨天我们只运行了半个小时左右,所以并没有体现出他的优越性能。也是一种遗憾吧,我想既然bea敢拿出来买,她如果没有那金刚钻,也不敢拿出来招摇了。
0 请登录后投票
   发表时间: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方面考虑折中,找出一个满足应用响应时间和并发用户的折中吧,如果是并发交易量比较大的应用,我想应该减少并发用户,提高单位时间内交易数量来满足应用需求吧。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics