青青子衿, 悠悠我心, 但为君故, 沉吟至今
« YouTube上传支持Gears美国运动员借助Google Earth获取北京奥运会金牌 »

企业应用网站性能优化实例分析

  前段时间对某个企业应用网站进行了一次优化分析,解决这个网站经常死机和CPU高负载的种种问题,根据我接触的一些应用和服务器配置,我对这个案例总结了一些优化方案,用来解决网站的高负载和高并发等问题,这里我和大家分享一下这个案例,希望能和大家一起探讨一下这种解决方案的优劣。

  一、网站当前状况和性能现状

  系统硬件配置:CPU为两个Intel Xeon 2.4G,物理内存为2.5G.

  系统软件配置:操作系统为Windows Server 2003标准版,数据库为SQL Server 2000.

  服务器访问量:工作日:访问人数 10000,浏览量 30000 ,休息日:访问人数 4000,浏览量 10000,每用户访问页面为2.88页面,平均停留时间为3分钟。由于存在大型下载文件,服务器流量每天有80G到160G左右。

  WEB系统:采用Tomcat服务器,使用Struts和Hibernate.

  网站系统:网站有几套不同的系统,有新闻发布CMS系统、文件下载系统、反馈系统等等,使用基于Java的Struts和Hibernate的MVC架构,动态应用。

  服务器CPU目前通常为40%左右,很多情况能增加到80-90%.

  二、网站性能分析

  通常情况下CPU达到80%说明系统性能存在瓶颈,需要找出系统的瓶颈究竟在哪里。

  分析过程是,远程登录服务器,打开SQL Server 2000的事件探查器,记录和分析SQL语句,同时打开任务管理器,查看各个进程占用CPU的状况。

  经过查询,SQLServer占用较大的CPU,说明系统调用CPU查询较多,初步可以确认是数据库引起的系统瓶颈,由于使用Struts和Hibernate应用,调用数据库频繁,因此可以采用减少SQL查询的方式降低对SQLServer的调用,通常情况下有两种方法:Cache或静态化。

  另外,服务器的Web系统采用的架构存在一些问题,因为存在大型下载文件,占用的流量非常大,而Tomcat本身对于静态文件的处理性能并不好,也会对系统性能产生负面的影响。

  三、网站和服务器优化方案

  1、缓存

  将页面静态化是通常的优化方案,但是对于当前的Tomcat服务器下的Struts和Hibernate未必有效,因为Tomcat对于静态HTML文件本身支持并不理想,并且新闻内容更新较为频繁。因此,在现有架构的基础上,可以使用hibernate的ehcached的动态缓存的方式,在动态应用中减少数据库负载,提升访问速度。

  使用ehcache对访问频率高,对数据库消耗大的页面进行动态缓存(时间10分钟),在缓存的时间范围内这些页面直接重缓存中读取,无需访问数据库,提高这些页面的访问速度,减小数据库访问的压力。这样SQL Server数据库的负载会大为降低。

  2、静态化

  对于一般的网站来说,效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。因此,从长远考虑,需要对当前网站的架构进行一番调整,以适应静态化页面的需求。

  首先,由于Tomcat对于静态页面支持不太好,也不支持URL 重写,因此需要安装Apache服务器。

  其次,由于Struts对于搜索引擎不友好,因此将其全部转换为静态HTML页面,即可降低对数据库的查询次数,也可提高对搜索引擎的友好度。因此需要使用HTML静态化的方式优化服务器端的WEB程序。

  具体实施方案是,将现有Tomcat配置为8080端口,安装Apache服务器,配置为80端口,在Apache中修改httpd.conf文件,使得Tomcat解析JSP文件,静态HTML文件、图片文件、大型下载文件使用性能更好的Apache支持。

  修改Apache的.haccess文件,将Struts应用重写为静态Html文件形式,修改相关代码,使得其能自动生成静态HTML文件。

  优化访问量最多的页面,首页index.jsp为目前访问量最多的页面,里面的动态代码删除,将这个页面转化为静态的html页面index.html.

  3、应用部署

  如果资金允许的话,可以将数据库SQL Server 2000升级为SQLServer 2005,并单独部署到另外一台独立服务器上,文件下载也单独部署一台服务器。

  由于Tomcat本身的局限性,一个Tomcat的资源无法无限利用服务器的所有资源,并且Tomcat需要响应的请求太多,势必影响到整体的性能,因此配置多服务器可以使得Web网站的负载大幅降低,从而提高整体的响应能力。

  不过这种部署的缺点是需要付出升级软件、购买服务器、托管带宽等成本开销,建议不到万不得已,可以不用付出额外的资金升级。

  以上就是我针对某企业应用网站进行分析和优化的具体步骤和方案,希望能起到抛砖引玉的作用,供大家参考。



  除非注明,月光博客文章均为原创,转载请以链接形式标明本文地址

  本文地址:http://www.williamlong.info/archives/1476.html
  • 文章排行:
  • 1.星云际会
  • 5楼呵呵 这是来的最早的一会了 这方面不太懂 学习了
  • 2008/8/27 22:11:25   支持(13)反对(9) 回复
  • 3.wangd
  • 没想到日pv才3万的站点也居然需要专门优化,看来相关开发人员的经验不是很丰富。就是就是.PV 3W ,随便怎弄都行.
    月光啊.Tomcat对静态支持也是不错的啊.如果量大的话,可以用nfs,再大就用存储了.Tomcat也是可以支持URL重写的,只是要加载一个开源的东西就行.
    有问题可能联系:[email protected]
    月光看来在技术方面还要加强哦.

  • 2008/8/28 11:01:49   支持(12)反对(9) 回复
  • 6.诡谲
  • 对于静态文件,推荐使用lighttpd~!
  • 2008/8/29 9:44:09   支持(9)反对(7) 回复
  • 8.lizongbo
  • 没想到日pv才3万的站点也居然需要专门优化,看来相关开发人员的经验不是很丰富。

    有没有检查过tomcat的启动参数?默认参数情况下,分给Tomcat的java虚拟机的内存是很少的。 服务器内存有2
    g 那么至少应该给tomcat的启动参数配上 -Xmx512m.

    在不大改动代码的情况下,其实用oscache的jsp标签对页面进行缓存,比生成静态文件的方式更方便更有效。
    tomcat处理静态文件的性能没有apache高,但是一点也不弱。

    除了大文件下载,普通的cms类系统,在这个服务器合理优化部署的情况下,每天承受上百万级别的pv也是可能的。


  • 2008/8/28 9:24:32   支持(10)反对(9) 回复
  • 9.族长
  • 公司刚弄了一台服务器来。还不太会管理。麻烦。。
  • 2008/8/29 14:04:18   支持(9)反对(8) 回复
  • 10.lei
  • 噢,原来是windows下的所谓server···
    无视。
  • 2008/9/8 16:17:51   支持(9)反对(8) 回复
  • 12.李少麒
  • 站长工具 gongju com 里面也有个测速的,有条形码,可以很直观地看出下载速度,解析速度等。我经常下面的这个测速功能去测试:ce.gongju com/williamlong.info
  • 2012/4/27 10:52:22   支持(8)反对(7) 回复
  • 13.cancer8
  • 学习了!看来以后要经常来学习
  • 2008/8/27 22:36:36   支持(8)反对(8) 回复
  • 14.小劳
  • 我自己也用过Windows服务器,但感觉无论如何优化如何加固都远远不如转用Linux……
  • 2008/8/28 12:20:28   支持(6)反对(6) 回复
  • 15.jack
  • 我做好的这个网站九城购物,怎么能让他更好的优化些呢,缓存和静态化我的做了
  • 2010/7/19 9:31:06   支持(9)反对(9) 回复
  • 17.AreYouOK
  • 为什么不用linux呢,linux下的postgresql和mysql测试性能远优于mssql
  • 2008/8/28 13:02:49   支持(6)反对(7) 回复
  • 18.david
  • 不知道月光是否有使用比较成熟的开关cms系统给企业网站应用呢,写写这方面的案例估计也很受欢迎。毕竟涉及企业级应用的博客读者不会太多。

    tomcat那玩意做企业web应用的主要优势是哪些啊,怎么理解呢?
  • 2008/8/27 21:46:22   支持(10)反对(12) 回复
  • 22.williamlong
  • 可能Linux的相关维护人员较为缺乏吧。
  • 2008/8/28 15:52:57   支持(9)反对(11) 回复
  • 23.bera
  • struts 不是Struct 月光写错了
    jsp网页的静态化用freemarker来做就可以了
  • 2008/8/27 21:28:35   支持(8)反对(11) 回复
  • 24.cyg
  • 以后多发一些这方面的知识吧!
  • 2008/8/27 22:36:41   支持(6)反对(9) 回复
  • 25.鬼火
  • 这个应该是最初的设计人员没搞好资源配置的缘故,访问量并不太大啊?
  • 2008/8/28 17:58:09   支持(8)反对(11) 回复
  • 26.fly512
  • 就这点访问量,还这么大的压力,垃圾程序
  • 2008/8/28 16:12:28   支持(8)反对(12) 回复
  • 28.小胖
  • 建议从索引的角度来考虑。
    我的一个服务器只是普通的p4台式机,只有1g的内存,但是可以支持将近10万ip的访问量,响应速度在1.4秒左右。
    对于网站来说,数据库优化最重要,一个相同的查询,优化前后效率可以相差几百倍。
  • 2008/8/29 10:14:44   支持(6)反对(12) 回复
  • 29.notbig
  • 转换数据库为MySQL或者Oracle,用LAMP,性能会高很多
    还有老至强性能很差,升级到双54x0吧。嫌耗电多可以用低功耗版的L5420
  • 2008/8/31 13:45:00   支持(5)反对(12) 回复

发表评论:

 请勿发送垃圾信息、广告、推广信息或链接,这样的信息将会被直接删除。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 关注新浪微博:关注新浪微博
  • 关注腾讯微博:关注腾讯微博
  • 关注认证空间:关注QQ空间
  • 通过电子邮件订阅
  • 通过QQ邮件订阅

站内搜索

热文排行


月度排行

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.
This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.