新闻动态

   

您现在的位置是:首页 » 新闻动态 » 产品FAQ


w3wp.exe占用cpu过高的解决方法


人气: 20487  日期: 2012-07-29  作者: 大向网络  [打印本文]

 w3wp.exe 进程会吃满 CPU,w3wp.exe 是 Windows 2003 Server 的 IIS 6.0 里用来关联应用程序池的进程程序。这就很异常了,这台机器配置是挺高的,正常情况下每个 w3wp.exe 进程只会占用 10% 以内的 CPU,内存也只占用几十 MB,这个异常进程我杀掉几次,过一会又会慢慢上来,从百分之几十的 CPU 占用直到 100%,内存也会很快吃到一两百 MB。

 IIS6.0 提供的 IIsApp.vbs 脚本能找到某个 w3wp.exe 对应的应用程序池,进而就能知道是哪个网站干的好事了。当然前提是每个虚拟主机网站要单独配置应用程序池


使用此方法的排除需要有以下条件:

条件(1)首先在使用前,我们运行先将Windows 任务管理器的PID(进程标识符)打开,方法如下(图1)所示!

图1

在查看--排行列--PID(进程标识符) 将其选择上后确定即可看到程序对应的PID标识符!

条件(2)每个虚拟主机使用一个独立应用池用于分析使用!如(图2)所示:

图2

至此我们可以进行IISAPP工具的使用了,我的经验是建议各位不要学我使用随机的应用池名.最好规范一下,每个站点使用相对应的域名,然后应用池也使用相应的域名,这样可以节省相关的排错工作量!

使用方法:在服务器上--开始菜单--运行--cmd

在命令提示符下运行iisapp -a

注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池。因此我们通过(图1)中找到占用严重的w3wp.exe的PID为2972,此时我们可以通过以下所示中找不能通过对应的2972的应用池名后找到相关站点!


C:\Documents and Settings\administrator>iisapp -a
W3WP.exe PID: 12092   AppPoolId: AppPools #4
W3WP.exe PID:2972   AppPoolId:AppPools #13W3WP.exe PID: 12164   AppPoolId: AppPools #11
W3WP.exe PID: 10392   AppPoolId: AppPools #51
W3WP.exe PID: 10520   AppPoolId: AppPools #39……………………
W3WP.exe PID: 4224   AppPoolId: AppPools #68
W3WP.exe PID: 10304   AppPoolId: AppPools #60
W3WP.exe PID: 6792   AppPoolId: AppPools #25
W3WP.exe PID: 6884   AppPoolId: AppPools #33

(iisapp实际上是存放在C:\windows\system32目录下的一个VBS脚本,全名为 iisapp.vbs,如果你和我一样,也禁止了Vbs默认关联程序,那么就需要手动到该目录,先择打开方式,然后选“Microsoft (r) Windows Based Script Host”来执行,就可以得到PID与应用程序池的对应关系。)
3、到iis中察看该应用程序池对应的网站,就ok了,做出上面的内存或CPU方面的限制,或检查程序有无死循环之类的问题。 




  上一篇:使用CDN后,Discuz!X多个频道无法访问的解决办法
  下一篇:linux+wdcp网站可以打开 wdcp进不去的原因之一
相关文章(Tags:w3wp,PID)