win2003+iis6.0环境下w3wp.exe占用过高的解决方案

前段时间,朋友的服务器出现w3wp.exe进程一直处在80%至90%左右,严重影响其它用户网站的访问效率。顺便说一下,朋友的服务器为Win2003系统,大约有约100左右个网站。出现这样的问题,只有找到对应的网站,并检查是否被挂马。在此记录一下解决这次事件的过程。

因为朋友的服务器的网站较多,不同类型的网站采用不同的“应用程序池”,而不是每个网站对应不同的“应用程序池”,所以先找出对应的“应用程序池”名。

1.任务管理器>查看>选择列>PID(进程标识符)

打开“Windows 任务管理器”,调出PID列。目的是找出CPU占用率高的w3wp.exe映像名称的PID值,如下图

2、注册CScript

首先,在cmd中输入iisapp -a并回车
此时,系统会提示:此脚本不能与WScript工作。
接着,系统会提示是否注册CSript,选择“是”。
最后,系统会提示“成功注册了CScript”

3、注册成功后再运行iisapp -a命令

执行iisapp -a命令,系统列出w3wp的PID及对应的应用池名,内容如下:

Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.
C:\Documents and Settings\Administrator>iisapp -a
W3WP.exe PID: 4880   AppPoolId: WinWebMail
W3WP.exe PID: 5028   AppPoolId: DefaultAppPool
W3WP.exe PID: 4148   AppPoolId: apppool005001
W3WP.exe PID: 3492   AppPoolId: apppool005003
W3WP.exe PID: 6116   AppPoolId: apppool020001
W3WP.exe PID: 5652   AppPoolId: apppool010001
W3WP.exe PID: 5144   AppPoolId: apppool001001
W3WP.exe PID: 588    AppPoolId: apppool005002
W3WP.exe PID: 2568   AppPoolId: apppool025001

4、通过PID值查找相应的应用池名,利用排除法关闭站点

比如W3WP.exe PID: 5144占用CPU百分之百,那么在iis里对应的是apppool001001。

5、关闭站点,观察CPU状态

如果一个“应用程序池”多应多个网站,那么只有一个个的关闭这些网站,观察CPU状态。

关掉其中一个站点,如果CPU五分钟下降了,就说明是这个站点的问题

6、CPU使用超标的解决方法

对于CPU使用超标的解决方法有多种可能性,可以通过“应用程序池”属性中的内存回收、性能监视等方式尝试,关于“应用程序池”属性中的相关内容自行百度,也可检查网站是否被挂马等。

7、重启iis,继续观察CPU使用状态

只有确定是哪个网站导致CPU占用率过高,才能好对症下药,找出原因所在。由于朋友服务器的一个应用程序池对应若干个网站,我所采用的方法是关掉该程序池对应的所有网站,然后直接重启服务器,观察CPU使用状态。如果没有问题,就开启一个站点,并观察。这样利用排除法找出有问题的网站。

阅读更多
个人分类: web
上一篇VBS自动将IE缓存目录复制过来的文件改名
下一篇asp/ajax实现进度条方案
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭