欢迎光临富库网络,建网站、我们只用效果说话!

咨询电话:18615619656  /  18615619657

十年建站经验,千家经典案例!
我们为您提供优质的服务,专业的技术支持,优惠的价格!
全新体验 全新感受 打造行业品牌!技术与艺术完美结合!
部分优秀案例,点击可查看详情
大型网站负载探讨(下)

发布者: | 发布时间: 2014-10-31 16:40:00| 查看数:  

十一、 
 
  对于楼主的问题,以及公司的架构方案,我认为你们仍然在犯错! 误区:遇到性能问题的第一件事情就是找硬件和容器的事情! 性能问题的基本上无一例外的都出在写的程序有问题,满足不了伸缩性。 好好看看你们的程序吧,不要再给bea打电话了,你得到的建议,基本上都是用不到的。 robin的观点是对的,我甚至怀疑你们的数据库连接是否有释放问题的。 增加你们前端的内存,多做缓存。hibernate的cache方案不差jdbc对数据库的频繁使用 html的书写是否符合w3的规范  
 
  最好在一个服务器上部署整个应用! 
 
  十二、 
 
  淘宝用的weblogic8,他们的web层使用的Turbine,且大量的使用velocity,由于对事务要求及其苛刻用到了ejb,也用到spring很多其他服务,访问数据库使用ibatis,他们对weblogic优化到的极致加上外面也架了apache,,在如此高并发的情况,且高度复杂的搜索。。。,还能保持如此的响应速度,确实很不错。 
 
  淘宝的搜索功能说是在的非常强大,不晓得是不是yahoo中国来人做的,一直觉得很神奇 
 
  robbin大哥说的还是很有道理,对于大多数门户门户网站,使用EJB确实浪费,购买weblogic的钱可以购买很多硬件来apache,tomcat负载均衡远远胜过于ejb方案的性能。没有绝对的性能好坏之分,主要还是看你的需求,weblogic永远是对于银行,证券,电信的行业所准备,他们所使用的硬件对象也绝对不是刀片,双路至强的硬件这样的东东。 
 
  十三、 
 
  经过今天修改tomcat的参数,修改如下: 经过测试,并发人数是可以达到像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上的,如果现在不用了,如果出了问题,就很难办了。 
 
  十四、 
 
  是的,如果调整参数,可以达到并发人数达到1000以上,但是通过对比同样压力下的weblogic和tomcat,发现tomcat的响应时间都比weblogic长,并且tomcat的cpu的占用率达到45%-60%,而同样的压力下weblogic的cpu占用只有3%-5%。内存都是2G都用了97%,说明主要差别表现在cpu和相应时间上,我没有做tomcat 1000人并发测试,但是从以前600人并发的响应时间判断,我觉得响应时间可能会超过15秒。所以从综合各方面性能指标考虑,我觉得要找出一个响应时间,并发人数,完成交易数量3方面考虑折中,找出一个满足应用响应时间和并发用户的折中吧,如果是并发交易量比较大的应用,我想应该减少并发用户,提高单位时间内交易数量来满足应用需求吧。 
 
  十五、 
 
  又回到了realtime的定义,并不是很快的意思,而是响应时间是可预计的。 
 
  而JVM对响应时间可预计性的影响,主要表现在 1.线程调度受操作系统线程调度的影响 2.垃圾收集引起的暂停 
 
  所以jrockit选择了动态垃圾收集,以频繁的收集来换取每次中断时间的减少,所以,对吞吐量来说,是反而会下降的。大部分jvm都有吞吐量优先,短暂停时间两种截然不同的垃圾收集算法。