月光博客

青青子衿, 悠悠我心, 但为君故, 沉吟至今

« 朝鲜核试验Google Earth坐标Z-Blog的RSS优化插件Better Feed »

Z-Blog大访问量异常的解决方法

  Z-Blog是一个很好的单用户Blog系统,我不止一次这么说了,特别是当访问量很大的情况下,Z-Blog的表现也是可圈可点的,唯一的问题可能还是和数据库有关。

  Z-Blog之所以可以应付大访问量的负载,主要是因为其缓存(Cache)技术,在重建页面的时候,将大量数据以缓存文件的方式放在Include目录下,这样对于访客的访问就基本可以不连接数据库,而真正可能出问题的瓶颈,显然就是数据库。

  Z-Blog是基于ASP+ACCESS的,ACCESS数据库存在的问题是非常严重的,当外部连接数增大的时候,ACCESS数据库的处理能力飞快的下降,数百个同时在线连接就可以让ACCESS数据库处于死锁的状态,从而导致网站崩溃。因此,如果你的BLog日访问量有几万IP,那么你使用Z-Blog必须要面对这个数据库性能问题。

  目前Z-Blog 1.5存在的性能问题,就是对于数据库访问的问题(1.6版本已经进行了部分修改)。单个页面中,页面计数器存在对于数据库的直接访问,并且是Update方法的访问,这个访问是会带来麻烦的,由于这个计数器的存在,当在线连接数猛增的时候,Z-Blog的文章页面将出现类似死锁的界面,因为数据库会死掉。同时还会发生的事情是,所有评论留言都会死锁,因为那也是访问数据库。进而所有访问数据库的功能都会死锁。

  当然,这个问题可以使用换SQL Server来解决,不过需要修改Z-Blog的相关代码,而且如果是企业用户,需要购买价格不菲的SQL Server。ACCESS无法解决这个问题,因为其本身有不可调和的内部问题。

  如果不使用换数据库的方法,就只有在代码上下功夫了。根据我的观察,对于数据库的直接访问应该就只有计数器这个部分,我目前想到一个思路,就是将计数器的内容也当作文件写入Cache,系统读计数器,全部从Cache中读取,当进行索引重建的时候,再将Cache中的数据写入ACCESS数据库中,这样就可以做到大部分访问都脱离数据库,当在线连接数很大的时候,性能问题也有可能得到一定的解决。

  当然,这样的功能需要写不少程序代码,如果不想写代码,而又遇到异常的大访问量,那么修改Z-Blog模板删除页面计数器功能,也可以临时解决一些问题,代价是文章无法统计点击数了。



原创文章如转载,请注明:转载自月光博客 [ http://www.williamlong.info/ ]

本文链接地址:http://www.williamlong.info/archives/657.html
  • 文章排行:
  • 1.Aether
  • woooh.com/
  • 其实点击数关掉也罢,有Google计数分析就够了,分析和报表才是重点。
  • 2006-10-12 1:19:26   回复该留言
  • 2.Aether
  • 另外,页面上众多的相关链接虽然增大了流动的可能性,但是也增加了用户对选择的难度,选择太多,就等于没有选择,所以相关性的东西也不是越多越好吧。
  • 2006-10-12 1:23:18   回复该留言
  • 3.even
  • 点击数其实不是大问题,很多问题都牵涉到数据库,我想知道如何通过修改Z-Blog的相关代码换成SQL Server。

    月光能写个教程么?
  • 2006-10-12 16:17:32   回复该留言
  • 5.williamlong
  • williamlong.info
  • 不会吧,你那个cache下的文件会自动删除吗?如果将计数器文件建立在Include下应该不会删除了吧。
  • 2006-10-14 0:46:25   回复该留言
  • 6.man
  • 请问月光,zblog的分类文章怎么调用的囝??
    想在另一个网站调用原先的那个zblog的分类文章?
  • 2006-10-14 10:26:01   回复该留言
  • 8.linker
  • linwan.com
  • zblog确实非常优秀!
    其实,确实非常希望能够有修改为sql server的说明。空间提供商已经给我警告了三次了。并且在这里,我才知道空间商警告我的原因。
    williamlong兄,是否有意为之一下?
  • 2006-10-14 23:36:46   回复该留言
  • 9.williamlong
  • williamlong.info
  • SQL SERVER和ACCESS的不同就是和时间上处理有一些不同,大部分功能都可以不修改代码即可移植,你直接将ACCESS中的文件转换到SQL Server看看如何。
  • 2006-10-15 0:36:55   回复该留言
  • 11.rainbowsoft
  • 引自 williamlong
    不会吧,你那个cache下的文件会自动删除吗?如果将计数器文件建立在Include下应该不会删除了吧。

    我的意思是你把计数的array写进内存的cache时就会面临意外关机或是重启时清零的问题.
    应该是间隔一定时间保存到文件的cache中去.
  • 2006-10-19 6:44:52   回复该留言
  • 13.ted
  • 我遇到一个问题就是由于我得空间搬迁我就把文件全部down下来
    然后再上传上去,发现不能管理登陆了!
    这是为什么?
    http://www.googleg.cn/blog2/
    QQ:32318756
  • 2007-3-22 22:57:54   回复该留言
  • 14.菠萝莉
  • 先涨涨见识,流量还没有呢。呵呵
  • 2007-7-27 16:21:36   回复该留言
  • 15.afan
  • williamlong兄,我不小心把Cache里的文件都给删了,导致博客不能显示文章。怎么办,我没备份啊,还有后台登陆不上去,总是提示失败。
    http://www.faninf.cn/blog
  • 2008-1-24 22:35:07   回复该留言
  • 16.ziylh00
  • wangkan.cn
  • 错误原因:未知错误

    ID:-2147217900

    摘要:
    '13' 附近有语法错误。

    Microsoft OLE DB Provider for SQL Server

    http://www.wangkan.cn/view.asp?id=3312 1.8的转换成sql出的问题,怎么回事吧。
    '<% On Error Resume Next %> 注释掉了还是这样的
  • 2009-5-28 12:30:52   回复该留言

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 通过Google订阅本站
  • 通过鲜果订阅本站
  • 通过电子邮件订阅本站

站内搜索

热文排行

最新评论及回复

最近发表

网站收藏

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循“署名-非商业用途-保持一致”的创作共用协议.

This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.