woaidongmao

文章均收录自他人博客,但不喜标题前加-[转贴],因其丑陋,见谅!~
随笔 - 1469, 文章 - 0, 评论 - 661, 引用 - 0
数据加载中……

网站静态化的第一部分,百万帖子页面

不知道因为什么原因,当系统的访问量达到了8000IP的时候,tomcat的内存总是会莫名其妙的增加到上限,而且到最后垃圾回收也会非常费力,最后导致系统停止响应,我调试过各种参数,包括垃圾回收策略,并行回收,修改各内存配置的参数,结果都一样,没办法,绝对对这一访问量最大的部分进行全部静态化。

一、静态化要考虑三个方面的事情,

1 对SEO

  能够让搜索引擎更方便的进行信息采集和分类,提升其速度和准确性

2 对用户

  不能影响版面的展示,不能为了速度影响了美观和可用性

3 对维护

  一些内容可以方便的更换,比如菜单调整,连接调整,广告位的调整等

二、最终采用了如下的方案进行

1 使用freemarker进行静态化

2 将菜单,广告位等以后可能变化的地方,使用JS进行操作。 一些地方采用多个连续的JS,方便以后进行整体调整。

3 通过urlrewrite 将访问转到静态化后的页面

4 通过404的错误处理,对尚未静态化的页面进行处理

5 静态化时,考虑到帖子量在百万级别,为了防止一个文件夹下面有太多文件,决定根据帖子编号的末尾2位数字进行文件夹分组,比如12345 则分配到 45这个子文件夹里面,67890 则分配到90这个文件夹里面。这样就将帖子近似均分到100个文件夹,每个文件夹的帖子在1万个,还可以接受。如果以后帖子再多,我就再考虑分成1000个文件夹了。这个设置要为以后的扩容留有余地。


三、具体操作

1 根据现有帖子页面制作ftl的模板,里面要考虑js的脚本位置。

2 制作批量生成的程序,为减轻服务器的压力,以某个数据库备份为蓝本,在本地完成这部分帖子的初始化,生成htm文件,然后将静态化好的目录整个打包上传到服务器。

3 启动404的处理,比较新的帖子如果没有被静态化,则由这个程序进行处理

4 帖子管理程序改造,在帖子保存时自动进行静态化

5 启动urlRewrite 其中比较关键的部分是

RewriteRule ^/view-([0-9]*?)([0-9]{2}).htm /laozizhu/$2/$1$2.htm [PT]

里面将帖子编号的最后2位单独分组出来,作为目录名,如果以后帖子多了,可以用最后三位来分组了。只需要再次生成帖子,然后简单的修改这个规则即可,前台访问不受任何影响。


四、效果:

目前网站访问量已经达到每天7w的独立IP,tomcat占用内存不超过300M,系统线程数一直在最低的线上。

五、总结

静态化,还是针对大访问量的最佳方案,不是伪静态化,而是真正的静态化。

posted on 2009-08-11 13:20 肥仔 阅读(158) 评论(0)  编辑 收藏 引用 所属分类: Web-后台


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理