由恶意刷票引起的CPU100%问题,及IIS:Service Unavailable与应用程序池
这几天公司的服务器CPU高占100%,我被当作高手派去解决此问题,呵,开个玩笑,这是老大指定的任务。
一,现发W3WP.EXE进程占用CPU特别高,结束此进程后,马上又会产生一个同样的进程,直接导致CPU100%。
一般我们认为会是哪个网站执行了死程序,因为我们通常自己本机调试时会有这样的情况(在2000 SER环境中),但我们通常是高度好了才上传的,疑惑中……GOOGLE一下,发现说是应用程序池的问题。可是更改了应用程序池的配置,让其超过CPU90%就回收,但无效。
服务器环境为2003SER IIS6.0,装有PHP,JAVA环境。
一步一步来:
一,现发W3WP.EXE进程占用CPU特别高,结束此进程后,马上又会产生一个同样的进程,直接导致CPU100%。
一般我们认为会是哪个网站执行了死程序,因为我们通常自己本机调试时会有这样的情况(在2000 SER环境中),但我们通常是高度好了才上传的,疑惑中……GOOGLE一下,发现说是应用程序池的问题。可是更改了应用程序池的配置,让其超过CPU90%就回收,但无效。
服务器环境为2003SER IIS6.0,装有PHP,JAVA环境。
一步一步来:
1) 先断开网络停止网站请求,发现CPU降下来了;
2) 停止所有的站点,开启网络;
3) 依次开启站点,查看是哪些站点吃性能这么厉害;
4) 发现两个站点开启后浏览会有CPU高点问题,于是先停止这两个站点,开启其他站点;
5) 从程序上先入手,是否有死程序:发现其中A站点因为使用了一个ACTIVX控件而直接导致客户端CPU高占100%,这一站点先查看,去除这个控件,但此站点上传已有一段时间,未发现服务死机现象,排除此站最大嫌疑之帽子,但先也先去除这个控件再说;
发现另一个站点只要一开启,但我自己未浏览即没有请求的情况下即CPU100%,想,这可能有来自我之外的大量请求;
6) 继续找这个站的原因,本地调试此站程序,未发现问题;
7) 查看此站IIS日志,惊人!四天的四声达3G。分析日志,发现来自同一URL的请求居然达几百万条。此URL是投票程序。莫非有人恶意刷票?答案是确定的,是刷票。投票使用GET方式提交,限制IP访问的方式来控制,但未见好的效果,这个刷票程序明显伪造了一批IP来刷票。
8) 更改此URL地址,暂时取消投票;重启IIS,限制此站最大连接数为100;再观察。
9) 却发现Service Unavailable错误,原因未知。GOOGLE一下。说是应用程序池的原因。不知如何更改这个。重启IIS好几次,无效。问MSN上的几个好友,未得到满意结果;
10) 删除此站,重建站点,解决。
最大问题是被人恶意攻击,我想这相当于DDOS,几百万的请求,普通的服务器哪吃得消?
经过两天的观察调试,在头晕脑胀的情况下,解决了问题。
以上是过程描述,我想也是解决方法,有遇上同类问题者参考。

comments(1)