阿江统计可能造成的服务器Service Unavailable现象及其解决
发布:Admin 日期:2007-02-23
前段时间就发现,服务器上的几个网站经常占用cpu到80%甚至更多!一旦出现此种情况就会严重影响服务器的性能及同一应用程序池下的其他网站的运行。这种情况下极有可能就Service Unavailable了。由于网站制作者水平参差不齐,文件众多,以前懒得分析,只是简单的对其设置了单独的程序池以及调小了程序池的回收时间来简单的处理了事。
假期对其中一个网站展开分析发现,罪魁祸首竟然是阿江统计!里面的数据库共有统计数将近40万,数据库已增至90多M!我在本机调式了一下,一旦查看或查询统计信息,cpu利用率便剧增!众所周知,Access数据库只能应付较少容量的数据库存储,一旦数据库数据量达到万甚至十万级别,Access的局限性便会严重影响系统的性能。此时的解决方案最简单的可能就是转换成SQL server数据库了,因为这种转换较其他转换容易一些。另外,虚拟主机一般均对IIS站点的cpu使用率,内存占用,甚至带宽等等都做了一定限制,而且很大一部分主机提供商实际的设置均比网站所宣称的要小,这种情况下更容易出现这种情况。当然还有另外一些可能导致Service Unavailable的原因,诸如:
1.有一个或多个ACCESS数据库在多次读写过程中损坏,微软的MDAC系统在写入这个损坏的ACCESS文件时,ASP线程处于BLOCK状态,结果其他线程只能等待,IIS被死锁了,全部的CPU时间都消耗在DLLHOST(ASP进程)中。
参考解决办法:
压缩和修复数据库
下载数据库文件--[如果是.asp的扩展名,请改为.mdb的扩展名]--用ACCESS打开--选择工具--数据库实用工具--压缩和修复数据库--[改回.asp的扩展名]--上传覆盖原来数据库文件
2.注册了不良的Com组件,特别是用VB开发的ACTIVE X控件,可能导致占用内存使用量不断增长
参考解决办法:尽量减少或避免非官方或是客户要求的不必要的组件
3.多媒体等文件下载占用服务器带宽(另外,如果有通过木马程序或者站点管理工具通过二进制方式下载的,也将严重消耗服务器的资源!)
参考解决办法:停止下载,检查网站安全
4.程序问题
没有及时的关闭不再使用的数据库,导致一直占用服务器资源
参考解决办法:在conn.asp 连接数据库字符串语句中加入如下 sub endConnection() conn.close set conn=nothing end sub
其它程序问题:把IE选项里 显示友好HTTP错误信息 的勾取消掉,再访问网站看出现什么错误信息,然后再调试。另外程序当中的死循环也是造成这种现象的愿因之一。
5.上传重要的数据库等文件更新,由于正处于受访问状态,可能导致瞬间占用率上升
一般此情况较少,若有出现此情况时,可能有必要先暂停站点,再作更新
6.网站当中的ACCESS数据库(如动网,以及本文提到的阿江统计或者其他程序)大了以后就很容易出现数据库方面的问题,当你的论坛数据库在30M以上,帖子5万以上,可能就会出现数据库吃不消的情况
7.建议取消程序中使用的on error resume next这个容错语句,对错误进行调试。 临时解决办法:定期删除多余的数据、压缩数据库,限制论坛灌水,甚至限制论坛注册。如果是动网论坛,可以使用论坛自带的分表储存功能,会有较好的效果
解决方案:
1、及时清理不必要的数据,以及定期压缩数据库,经常查看Access数据库的大小,如果数据库数据量存储需求确实太大,建议使用下面的解决方法。
2、该方法也是比较长远办法:更换数据库,一般选择转化为MS-SQL 的方案来解决。具体转换方法本博客中有相关文章,不再赘述。
3、如果数据量和访问量不是很大,Access数据库也没异常的情况下也出现Service Unavailable就极有可能是您的程序问题,请仔细检查您的程序。
假期对其中一个网站展开分析发现,罪魁祸首竟然是阿江统计!里面的数据库共有统计数将近40万,数据库已增至90多M!我在本机调式了一下,一旦查看或查询统计信息,cpu利用率便剧增!众所周知,Access数据库只能应付较少容量的数据库存储,一旦数据库数据量达到万甚至十万级别,Access的局限性便会严重影响系统的性能。此时的解决方案最简单的可能就是转换成SQL server数据库了,因为这种转换较其他转换容易一些。另外,虚拟主机一般均对IIS站点的cpu使用率,内存占用,甚至带宽等等都做了一定限制,而且很大一部分主机提供商实际的设置均比网站所宣称的要小,这种情况下更容易出现这种情况。当然还有另外一些可能导致Service Unavailable的原因,诸如:
1.有一个或多个ACCESS数据库在多次读写过程中损坏,微软的MDAC系统在写入这个损坏的ACCESS文件时,ASP线程处于BLOCK状态,结果其他线程只能等待,IIS被死锁了,全部的CPU时间都消耗在DLLHOST(ASP进程)中。
参考解决办法:
压缩和修复数据库
下载数据库文件--[如果是.asp的扩展名,请改为.mdb的扩展名]--用ACCESS打开--选择工具--数据库实用工具--压缩和修复数据库--[改回.asp的扩展名]--上传覆盖原来数据库文件
2.注册了不良的Com组件,特别是用VB开发的ACTIVE X控件,可能导致占用内存使用量不断增长
参考解决办法:尽量减少或避免非官方或是客户要求的不必要的组件
3.多媒体等文件下载占用服务器带宽(另外,如果有通过木马程序或者站点管理工具通过二进制方式下载的,也将严重消耗服务器的资源!)
参考解决办法:停止下载,检查网站安全
4.程序问题
没有及时的关闭不再使用的数据库,导致一直占用服务器资源
参考解决办法:在conn.asp 连接数据库字符串语句中加入如下 sub endConnection() conn.close set conn=nothing end sub
其它程序问题:把IE选项里 显示友好HTTP错误信息 的勾取消掉,再访问网站看出现什么错误信息,然后再调试。另外程序当中的死循环也是造成这种现象的愿因之一。
5.上传重要的数据库等文件更新,由于正处于受访问状态,可能导致瞬间占用率上升
一般此情况较少,若有出现此情况时,可能有必要先暂停站点,再作更新
6.网站当中的ACCESS数据库(如动网,以及本文提到的阿江统计或者其他程序)大了以后就很容易出现数据库方面的问题,当你的论坛数据库在30M以上,帖子5万以上,可能就会出现数据库吃不消的情况
7.建议取消程序中使用的on error resume next这个容错语句,对错误进行调试。 临时解决办法:定期删除多余的数据、压缩数据库,限制论坛灌水,甚至限制论坛注册。如果是动网论坛,可以使用论坛自带的分表储存功能,会有较好的效果
解决方案:
1、及时清理不必要的数据,以及定期压缩数据库,经常查看Access数据库的大小,如果数据库数据量存储需求确实太大,建议使用下面的解决方法。
2、该方法也是比较长远办法:更换数据库,一般选择转化为MS-SQL 的方案来解决。具体转换方法本博客中有相关文章,不再赘述。
3、如果数据量和访问量不是很大,Access数据库也没异常的情况下也出现Service Unavailable就极有可能是您的程序问题,请仔细检查您的程序。
评论: 0 | 引用: 0 | 查看次数: 4293
发表评论
上一篇
下一篇

文章来自:
Tags: 
