今天远程登录服务器,发现访问速度非常慢,可这又不是网速慢的时候啊,打开服务器的任务管理器一看,CPU占用居然达到了100%,顿时紧张了起来。
一直都只听说别人服务器占用CPU达到100%,可自己还是头一次遇到,于是查资料、请教高手,就这么弄了一个通宵,在睡觉前,我想把自己的经历和解决办法写下来。
一开始我采用很笨的办法——挨个停站去查是哪个站点占用了这么大的CPU,结果花了2个小时,都没有找到。
后来学会了一个好办法,其实也是最简单的办法,利用IIS自带的“应用程序池”。
首先给每个站点都建一个应用程序池,这样便于找出问题出在哪一个站点上。
接下来依此操作:
1、在任务管理器中增加显示pid字段,方法是“查看”——“选择列”——勾选“PID”。
2、将“显示所有用户的进程”打勾,这样才可以看到默认为“NETWORK”用户的w3wp.exe网站应用程序池进程。
3、在命令提示符下运行iisapp -a。这样就可以看到pid对应的应用程序池的名称,你这时就可以记下占用CPU超标的网站pid号。
注意,有一些人在第一次运行时会提示“此脚本不能与 wscrīpt 工作”,点击确定就可以了。然后再次运行iisapp -a。
4、到iis中察看该应用程序池对应的网站,然后针对站点排除错误。
好了,到这里,你应该已经找到占用CPU和内存超标的网站了,然后将这个网站对应的应用程序池停用即可,或者也可以在这个程序池里限制网站的CPU和内存使用率。
不过限制网站的CPU和内存使用率并不是最终的解决方案,因为没有人会对一个提示“Service Unavailable”的网站感兴趣,因此,找到网站占用CPU过大的根本原因才是最重要的,找吃CPU元凶的方法我以后会抽空写出来,不过现在我自己还没有找到很好的方法,目前能做的只有将那个占用CPU超标的网站停止掉。
想维护和管理好网站服务器看来真不是一件简单的事情,不过在自己动手的过程中,也可以发现和找到很多快乐,我之前就解决了2003系统上传文件不能超过200K的问题,今天则又有了一些收获。
此外,这个通宵的经历也使我认识到了在windows系统中任务管理器的重要,对此感兴趣的朋友,还可以看看我前面的文章:Windows任务管理器的五个技巧。




