今天晚上博客停掉约4个小时


2010-5-3 00:24 .Net,wordpress 2个评论172

  首先向访问的朋友说说声对不起,今天晚上许多来访者吃了个闭门羹,呵呵,不过我一直在处理,直到刚才才处理好,因为我家里的网速比较慢,所以排查问题花了不少时间。
  问题的起因是由于我的一篇文章《实战设计模式之用组合模式实现JSON(六)》,ID为808的文章造成的,由于这篇文章是从word中复制过去了,当中包含了一些特殊字符(目前是估计,我还没有去查这篇文章,删除这篇文章问题已经解决,所以判断是包含特殊字符或者内容),造成了.net在作xslt+xml转换的时候CPU 100%运转,而我的服务器提供商Godaddy似乎有相应保护机制,当某个虚拟主机的CPU占用率超过设定值的时候,会自动停止这个虚拟主机的动态内容服务,为什么说只停动态内容呢,因为静态页面是一直可以访问的。
  说下排查的经过吧,我现在的博客是我前几天花了一些时间加了一个拦截器,增加了24小时排行版、30天排行版、访客留言添加了所在位置、不少数据都做了缓存处理等功能,这部分的改造我下次将会讲到。由于我采用的解决方案是由xslt+xml实时生成内容输出到页面,所以当某个用户访问了这个页面的时候,就出现了我前面讲到的问题。
  其实我使用xslt+xml做解决方案已经有三年了,我蛮喜欢这种解决方案的,可以达到数据和实现的完美分离。不过缺点也是有的,比如说xml对数据的要求很高,一方面是xml的元字符,而最重要的一点,则是编码问题,如果你采用了utf8做解释,而你的数据中包含unicode特殊字符的时候,肯定会出现错误。我以前就曾经出一过人民币符号解释出错的问题,后来采用了&ren;,但偶尔还是会出错,最后只好全部采用了gb2312进行解释。
  另外如果你是用.net进行xslt+xml的解释,还要注意一个问题,就是代码执行权限要求是Full Trust Level,而大部虚拟主机都是High Trust Level或者Medium Trust Level的,当然如果你是自己的服务器就不会存在这个问题了:P。
  之前在设计这个拦截器的就时候就准备了两种方案,一种是直接读数据库+缓存,另一种是直接生成静态页面,生成静态页面的好处是只要服务器没有宕机就可以访问,但不好的地方是实时性不强,所以我在24小时排行等地方都采用了Ajax进行获取。所以这次有问题之后我就考虑干脆使用静态页面方案算了,速度上肯定会比较快,而且不会受服务器的影响,毕竟虚拟主机谁都有可能占用CPU100%,如果是使用静态页只要主机不挂掉,基本上都可以保证能访问。
  最终查出问题的是生成静态面的时候,当到了808(呵,这个ID真不错,可惜没干好事),发现我本机的CPU占用100%,一查进程,是w3wp这个进程一直在100%地占用着CPU,郁闷 。
  刚刚又发现一个奇怪的问题,如果我使用aspx直接去访问某个页面,会了直处理请求状态,服务器一直无响应,但如果我使用url rewite重写一个非aspx的url,则可以访问,在我本地没事,奇怪,有知道的朋友告诉一声是怎么回事。另外还有一个奇怪的问题,我数据库链接是使用using,但却报连接池超时的错误,甚至导致mysql不能访问(或者是巧合,godaddy的服务器经常性不能访问),本地没有发现问题。
  呵呵,现在是凌晨0点47分,发现还有十来个人正在访问我博客,同志们,你们辛苦了,这么晚了也要注意休息哈,我是来不起了,准备一会儿去见周公,你们也跟随我吧,哈哈。

无觅相关文章插件,快速提升流量

嗯,或者你也可以收听我的微博,腾讯微博(主要用这个,其他的看我的个人介绍)

我写博客常常出现错别字,常常错得还很离谱,有时候我自己看了第二遍都骂我自个儿,但我又不习惯重复审查,纠结啊...各位看到啥错别字或者不明白的地方,请给我留言指出来,感谢感谢。

  

  • 2个评论在 "今天晚上博客停掉约4个小时"

  • 跨省追捕
    2010-5-3 13:03
    回复TA

    幸好没有使用.net

    • 涂雅
      2010-5-3 13:36
      回复TA

      呵呵,是服务器的问题,和.net没啥关系吧,不过.net的主机限制太多,成本比较高。LA(N)MP比较好一些

  • 评论敬告那些为做SEO而评论的朋友,本博不欢迎此类评论,请不要利用本博做关键字,一律封杀。

    绝不跨省追捕
    不会发垃圾邮件
    增加你的流量