全国服务热线:18980020603 成都热线:028-86633922
新闻中心网站专题联系我们
行业新闻 建站经验 网站建设资讯 手机网站资讯 微信网站建设资讯 APP开发资讯 商城网站资讯

建设大型商城网站要考虑数据库压力和服务器负载

发布人:桔子科技    发布时间:2015-02-20 09:46:49    分享到:
所谓大型商城网站就是访问量与流量都很大的一些网站,因此在建站初期就要考虑好当流量达到某一级别是是否可以支撑网站继续正常运营下去。其中主要考虑的方面有几点:数据库压力,网页优化,服务器负载。

  一、

  1、数据库压力问题 所有的压力最终都会反映到数据库方面,一定要对数据库有一个整体的规划。 可以按照业务、区域等等特性对数据库进行配置,可以考虑分库、使用rac、分区、分表等等策略,确保数据库能正常的进行交易。

  2、事务问题 你采用了两种类型数据库,一个SQL Server、一个oracle,如果一个交易需要在两个数据库中操作,那么必须考虑到分布式事务,你应该仔细的设计你的系统,来避免使用分布式事务,以 避免分布式事务带来更多的数据库压力和其它问题。推荐你采用延迟提交的策略(并不保证数据的完整),来避免分布式事务的问题,毕竟commit失败的几率 很低。(某个超大型系统,有3套数据库,也是采用的延迟提交策略,避免分布式事务带来的对数据库过大的压力)。

  看到了你在应用前端(weblogic EJB)采用了F5,我个人不是很赞同这个方案,虽然F5是一个好的L4产品,也能基于第7层做负载均衡和容灾。但是一个有事务交易的EJB,如果采用了 这种方案,把不需要使用分布式事务的交易变成了分布式交易,试想,一个web如果在一个请求中,访问了后端两个EJB,那么L4就会有可能把请求分发到不 同的服务器上,没有对事务维持在一个服务器中,就不能使用本地事务。同样,一个web,访问后端一个请求,这个请求中需要3个EJB,那么极有可能把这3 个请求分发到不同的服务器,又造成了分布式事务。weblogic是一个好的J2EE产品,对这种有事务关联的负载均衡,它会优先考虑采用一个服务器里面 的应用,这样就采用了本地事务,提高了响应速度,减小了分布式事务对应用和数据库的压力。

  3、web的优化 我个人认为,一个商业的应用,硬件的投资可能不是主要的瓶颈,往往可维护性,可扩展性是最主要的问题。

  没有必要采用不成熟的方案,要更多的使用成熟的方案,将静态、图片独立使用不同的服务器,对于常态的静态文 件,采用E-TAG或者客户端缓存,google很多就是这样干的。对于热点的功能,考虑使用完全装载到内存,保证绝对的响应速度,对于需要频繁访问的热 点数据,采用集中缓存(多个可以采用负载均衡),减轻数据库的压力,比如:很多配置信息,操作员信息等等。

  对了,对于几乎除二进制文件,都应该在L4上配置基于硬件的压缩方案,减少网络的流量。提高用户使用的感知。

  4、网络问题 你不可能要求所有的使用人员,都和你的服务器在一个运营商的网络内,可以考虑采用镜像、多路网络接入、基于DNS的负载均衡。如果有足够的投资,可以采用CDN(内容分发网),减轻你的服务器压力。

  二、

  F5的负载均衡 是必不可少的,他的每秒点击量能达到将近30万,并且它有会话的 粘性,只要是同一个ip发过来的请求,它就会把它分到同一台机器的,不用 担心分发错误的。现在的问题是apache和tomcat的能力不平衡,动态的内容压力太大,不是数据库的压力,我们的数据库 oracle是RAC群集。性能很好

  三、

  tomcat为什么死掉?当时CPU或者内存的占用率是多少?看看其中JVM占用了多少?有没有OOM的错误?不可能20台tomcat只能支撑5000的并发。。。以前做过单台的resin峰值到3K都是绰绰有余的。。。把缓存做好,减少动态查询

  四、

  1、F5的使用 F5不光可以做web的负载均衡,也可以做基于第4层的负载均衡。 比如:银行接口,大部分基于socket通讯的,就可以在前面架设一套F5设备,将请求分发到不同的服务器上。

  大部分使用F5都是在web层次上,如果使用基于源IP地址的策略,有很多客户端都是基于代理服务器,这个时 候源IP地址是一样的,其实并没有把这些用户给分发到不同的服务器上,建议采用基于cookie insert的方式,采用cookie的会话保持策略,loadbalance的算法,需要仔细的结合自己的应用的实际情况来设置。

  2、大并发的问题 现在你得到了一个大概的系统能承受的并发,但是还达不到系统的设计目标。 应该从应用的角度去分析这个问题,web方面,通过工具(httplook),检查一下客户端发起的请求都是什么响应状态,如果看到很多304请求状态, 你需要优化你的url缓存,看一下每个url的耗费时间,仔细针对比较慢的进行调优;对于tomcat或者weblogic,在高并发的情况下,用 kill -3  ,获得ThreadDump(HeapDump需要特殊的设置),看一下在高并发下,jvm的线程到底在干什么,仔细的分析可能对你有帮助。

  如果在这些还没有改善的情况下,应当去想一想,硬件是否足够、配置是否合理等等系统级别的问题。

  五、

  似乎在说瓶颈在于tomcat并发承载能力不够,但为什么tomcat只能承担单机200个并发?当并发急剧 上升的时候,tomcat在执行动态请求的时候,瓶颈在哪里?是哪部分程序,或者哪个环节首先导致tomcat失去响应的?在davexin描述的刀片硬 件上面,tomcat上面如果跑的仅仅是最简单的jsp页面,在采用BEA JRockit JVM的情况下,500个并发也可以达到。

  我的推测是瓶颈还是出在EJB远程方法调用上!

  tomcat上面的java应用要通过EJB远程方法调用,来访问weblogic上面的无状态 SessionBean,这样的远程方法调用一般都在100ms~500ms级别,或者更多。而如果没有远程方法调用,即使大量采用spring的动态反 射,一次完整的web请求处理在本地JVM内部的完成时间一般也不过20ms而已。一次web请求需要过长的执行时间,就会导致servlet线程被占用 更多的时间,从而无法及时响应更多的后续请求。

  如果这个推测是成立的话,那么我的建议就是既然你没有用到分布式事务,那么就干脆去掉EJB。weblogic也可以全部撤掉,业务层使用spring取代EJB,不要搞分布式架构,在每个tomcat实例上面部署一个完整的分层结构。

  另外在高并发情况下,apache处理静态资源也很耗内存和CPU,可以考虑用轻量级web server如lighttpd/litespeed/nginx取代之。

  六、

  tomcat之所以并发低很可能是由于remote session bean造成的,remote session bean又一次被滥用了,在楼主的这种业务情况下,web层和service层根本不需要分开,象楼主这样分开带来就是一访问业务层就带来长时间的远程请 求,确实导致tomcat上servlet资源释放的问题。那么remote session bean应该被用在什么地方呢,without ejb上有写到金融系统常用ejb。我把他的这句话延伸一下,也就是说当业务的运行时间远超过远程调用的时间时,我们就可以用remote session bean来把这个业务分离出去。而楼主的系统中没有这种业务情况。所以使用remote session bean应该来说是一个错误的选择,不过这个错误的选择带来的危害被大量的硬件所掩盖,带来的是成本的提高。而性能上还不如slsb。

  所以我觉得如果要改架构最便捷的方法是使用slsb,把remote session bean去掉。这样改造的成本比较低,如果换成spring+hibernate成本就高得多了。也就是说可以 struts+Bean+DAO+helper,然后把weblogic作cluster,任意一个node上都部署相同的应用。也就是水平扩展,理论上 来讲当性能不满足要求时添加node就行了,如果能做成农场就更加方便了。当然即使非农场也没有关系,可以用现在在使用的stick分发。这样的改造之所 以方便是因为把remote session bean改成slsb是很容易的,而且团队里的人估计对ejb都更加熟悉一点,成本会比较低一点

  七、

  近段时间正在做购买新硬件和新软件的预算,公司高层准备买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。成都网站建设桔子科技有的不仅仅多8年的网站建设经验,更多的是站在用户的角度去设计网站,符合大多数人的使用习惯,做更好的用户体验!
本文来源于成都网站建设公司、成都网站设计制作公司与成都APP开发公司-桔子科技公司!
成都网站建设,成都网站设计,成都网站制作,成都网页设计,成都网站建设公司,成都网络公司,成都网站设计公司, 成都网站制作公司,成都手机网站建设,手机网站建设,成都APP开发,APP开发,成都建网站,成都做网站,成都微信网站建设,成都微商城网站建设,成都商城网站建设,成都网络营销。
 

下一篇:电子商城网站建设开发如怎么引用户上一篇:成都商城网站建设的五大原则

最新案例
手机/微网站
  1. [成都]微信网站建设:微信分销系统能为商铺带来哪些特色服务
  2. [成都]微信网站建设:如何通过微信公众号来推广产品
  3. [成都]微信网站建设:微信开发都有些什么功能
  4. [成都]手机网站:手机网站设计需要达到什么效果
  5. [成都]手机网站:手机网站响应式网站解决方案
  6. [成都]手机网站:手机网站响应式网站解决方案
网络营销
  1. APP开发: APP网页评分功能设计
  2. APP开发:手机APP开发前这4点必须要了解
  3. APP开发:为什么企业要做手机APP
  4. APP开发:你可以更好的留住APP用户
  5. APP开发:开发时间的长短主要由哪些因素决定
  6. APP开发:电子商务类APP开发的4点建议
img

7x24小时售后服务

img

5倍故障时长赔付

img

15天无理由退款

img

N对一管家服务

让我们的顾问联系您

  • 电话:4006-028-024 028-86633922

    邮箱:Service@orangeapp.cn

    成都市成华区崔家店路789号上城国际1-24-9号

qq sina