网站经常由于一些莫名其妙的原因,导致w3wp.exe程序的CPU使用率达到100%,从而影响网站的访问速度。
现象:这几天发现打开网站反应缓慢,远程登入服务器发现cpu占用率达到100%,主要是一个w3wp.exe的进程占用的,用户是NEW WORKSERVICE 用户的,看不出来是哪个网站造成的cpu占用率过高,服务器正常运行CUP一般应该都在60%以下,有时候CUP出现上下波动很大,或者是服务器突然很卡,或很慢.查看任务管理器,可以发现很多的w3wp.exe消耗CPU,结束后立即有新的w3wp.exe出现占CPU,管管理员在这种情况.只好重新启动IIS服务,奇怪的是,重新启动IIS服务后一切正常,但可能过了一段时间后,问题又再次出现了。
分析:出现这种情况的原因可能是访问量过大,也可能是某个网站程序有问题造成的,特别是有asp网站+access数据库的,因为access数据库先天的不足,数据库文件损坏就会造成访问异常缓慢。有一个或多个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的错误报告,把程序池名字记录下,再把具体时间记录下来。
3)在到系统上面的安全性.找到对应时间(如12.59.56)登陆过的用户。
4)打开iis找到2中查询到的程序池,和3查询到登陆过的用户,取交集,即可精确查到是那个web占点站cup。
关于w3wp.exe程序CPU使用率100%,本文就介绍这么多,希望对大家有所帮助,谢谢!