服务器正常运行CUP一般应该都在60%以下,有时候CUP出现上下波动很大,或者是服务器突然很卡,或很慢.查看任务管理器,可以发现很多的w3wp.exe消耗CPU,结束后立即有新的w3wp.exe出现占CPU,管管理员在这种情况.只好重新启动IIS服务,奇怪的是,重新启动IIS服务后一切正常,但可能过了一段时间后,问题又再次出现了。
直接原因:
有一个或多个ACCESS数据库在多次读写过程中损坏,微软的MDAC系统在写入这个损坏的ACCESS文件时,ASP线程处于BLOCK状态,结果其他线程只能等待,IIS被死锁了,全部的CPU时间都消耗在w3wp.exe中。
解决办法:1
在iis管理器里面设置多个应用程序池, 并把虚拟主机站点分别加入应用程序池。在多应用程序池的情况下,每个应用程序池会对应生成一个w3wp.exe文件。通过任务管理器可以查看到所有w3wp.exe占用cpu利用率情况。 通过iis管理器打开应用程序池,可以逐个停掉应用程序池。一边停应用程序池,一边在任务管理器里面观察哪个w3wp.exe的cpu利用率一下子从降下来,cpu利用率恢复正常。这样可以判断是那个应用程序池出了问题。然后可以再建立多个应用程序池,每一个应用程序池对应一个站点。这样逐个停应用程序池,就可以确定到底是哪个网站出问题。最有问题的往往是计数器类的ACCESS文件,例如:“**COUNT.MDB” ,“*COUNT.ASP”,找到这个文件后,可以删除它,或下载下来,用ACCESS2000修复它,问题就解决。
解决办法:2
w3wp.exe占用cpu过高查询方法,很多web提供商最头疼的问题,在任务管理器经常出现w3wp.exe占cup过高,导致整台服务器受影响.解决办法如下:
1.先把任务管理器打开,发现那个w3wp.exe占cup关高就结束进程
2.在我的电脑-管理-事件查看器-系统-会找到关w3wp.exe的错误报告,把程序池名字记录下,再把具体时间记录下来.(如12.59.56).
3.在到系统上面的安全性.找到对应时间(如12.59.56)登陆过的用户.
4.打开iis找到2中查询到的程序池,和3查询到登陆过的用户,取交集,即可精确查到是那个web占点站cup.
2是偶的个人查询方法,以后有新改进会在blog通知大家
- 在WINDOWS2003+IIS6下,经常出现w3wp的内存占用不能及时释放,从而导致服务器响应速度很慢。
今天研究了一下,可以做以下配置:
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。同时,设置同时运行的w3wp进程数目为1。再设置当内存或者cpu占用超过多少,就自动回收内存
一般来说,这样就可以解决了。但仍然会出现个别网站因为程序问题,不能正确释放。
那么,怎么样才能找到是哪一个网站的?
1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid
2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池
3、到iis中察看该应用程序池对应的网站,就ok了。
由 YuanBin 于 2008-5-5 17:08:01 最后编辑
由 YuanBin 于 2008-5-5 17:11:12 最后编辑 - 2.YuanBin
- W3Wp.exe是IIS工具的一部分。
银月的相关描述:
w3wp.exe是IIS(因特网信息服务器)的工作进程池,每一个w3wp.exe是IIS的一个WEB园,一般在IIS6.0中出现,一般的工作进程池只有一个web园,但是如果在工作进程池的web园的最大工作进程数被修改可能出现多个w3wp.exe,或者有多个工作进程池同时工作也可能出现多个w3wp.exe的出现
w3wp.exe的启动用户是系统内置安全帐户network service
w3wp.exe的正常路径是%windir%\system32\inetsrv,一般在C:\WINDOWS\system32\inetsrv