免费信息发布

w3wp.exe占用CPU100%解决方法 w3wp时不时占用CPU高

来源:网络搜索 浏览:914次 时间:2015-02-07

自己服务器运行1个月或几个月后慢慢发现iis服务器w3wp.exe进程时不时出现cpu 100%或时不时占用cpu过高,检查程序和服务器没有被木马或被攻击,如何解决。特别有时候访问html网页CPU变化不大,但一旦访问php、asp等程序网页(php+mysql)等就容易让w3wp.exe进程出现占用CPU较长或短时为100%(程序没有改过网站没有修改过、服务器配置也没有改变过,以前新装服务器的几个月里没有出现这个问题),同时访问带程序网页(非静态html)打开也很慢。

以下是经验供大家参考:

1、程序导致

(windows系统IIS环境)一个个网站手动停止,观察CPU变化确定是哪个网站出现问题,找到后检查程序。

2、缓存文件导致运行越来越慢

如果不是第一点照成,可以考虑c:\windows\temp\文件夹内缓存文件过多,一般运行长时间后没有清理就会照成几十万条的缓存临时文件,当用户访问程序网页时候就会自动去c:\windows\temp\文件存储或读取临时缓存文件,犹豫缓存文件过多照成读取写入缓慢。

解决方法,直接打开c:\windows\temp\文件夹,删除所有缓存文件,但通常如果缓存文件过多很容易照成打开此文件夹时卡死状态。避免这个情况出现,可以使用命令清除缓存文件。

点击电脑开始--运行,输入cmd回车

这个时候将会出现黑色背景命令窗口,此时然后再输入  del c:\windows\temp\*.* /s /q     回车执行删除任务。

图文教程:

第一步:打开命令窗口

点击电脑“开始”---> "所有程序" ----> “附件” ----> “命令提示符”,即可弹出命令窗口(一般黑色背景)

打开命令提示符窗口
命令提示符窗口打开截图

第二步:输入删除缓存命令

命令提示符窗口中输入命令  del c:\windows\temp\*.* /s /q后回车 开始执行删除任务

输入删除命令截图
输入删除命令截图

第三步:等待

执行删除命令后删除截图
执行删除temp目录缓存文件截图

回车后就会出现开始删除临时缓存文件的执行情况,如果缓存文件多会花很长时间删除,这个时候只需要慢慢等待,比如干其它事,如果你缓存已经1年半载没有删除过,可能需要半天或1-2天才能删除完成,你就过个半天或1-2天再登陆服务器看看删除情况。

删除完成后观察w3wp.exe进程导致CPU是否还出现过高情况。记得每隔一段时间清理下缓存文件,可以改善服务器长时间运行后越来越慢问题。

如果以上任仍然不能解决,可以在网络上搜索其他关于w3wp.exe进程导致CPU占用100%解决方法。

w3wp.exe占用CPU100%的解决办法
说点关于W3WP.EXE的知识.
Q : W3WP.EXE,应用程序,应用程序池之间的关系
A : 一个应用程序池可以包含多个应用程序,一个应用程序池创建一个W3WP.EXE进程.那么我们就不能简单的说一个进程池对应一个W3WP.EXE进程了!其实是多个应用进程池对应一个W3WP.EXE进程的.
Q : 如何启动和关闭W3WP.EXE这个进程
A : W3WP.EXE这个进程将在你访问www应用程序的时候启动.有人就会这么问了:"我启动了一个Web应用程序,发现系统自动创建了一个 W3wp.exe进程。但我关闭这个Web应用程序后,发现这个刚创建的W3Wp.exe进程还在,请问如何关闭该进程。"这个进程不会在你关闭了这个程序以后,就马上关闭的.那是因为Http是无连接的访问,当你关闭了web网页,不会返回相应的关闭信息,所以W3WP.EXE这个进程不会因为你关闭了 web应用程序尔关闭.
Q : 那么如何关闭这个进程呢?
A : 在应用程序池的配置中,"空闲超时"中设定合适的时间,系统默认的是20分钟.设定好指定的时间,那么在这个时间范围内没有在访问应用程序,那么系统会自动的关闭W3WP.EXE这个进程的.而不需要我们人为的干预的.也可以在Windows任务管理器里面,结束这个进程
Q : 如何让W3WP.EXE进程长时间的运行.
A : W3WP.EXE这个进程的默认生命是1740分钟,但依然是在这种默认的自然规律下,W3WP.EXE将在自己失业20分钟后,被系统直接枪杀.这样就可以看出,要想让W3WP.EXE长时间的生存,那我们可以通过”空闲超时”不作处理来达到我们的目的.
Q : 在IIS6下,经常出现w3wp.exe的内存及CPU占用不能及时释放,从而导致服务器响应速度很慢。
A: 解决内存占用过多,可以做以下配置
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。再设置当内存占用超过多少(如500M),就自动回收内存。
解决CPU占用过多:
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的CPU监视,不超过25%(服务器为4CPU),每分钟刷新,超过限制时关闭。
根据w3wp取得是那个一个应用程序池:
1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid
2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池。(iisapp实际上是存放在 C:\windows\system32目录下的一个VBS脚本,全名为iisapp.vbs,如果禁止了Vbs默认关联程序,那么就需要手动到该目录,先择打开方式,然后选“Microsoft (r) Windows Based Script Host”来执行,就可以得到PID与应用程序池的对应关系。)
3、到iis中察看该应用程序池对应的网站,就ok了,做出上面的内存或CPU方面的限制,或检查程序有无死循环之类的问题。
A2 : by 小步舞曲
查看占用cpu的w3wp进程里面里面有那个用户呼叫的token
Q : 另一种加载了某程序后发生w3wp.exe问题
A: 修改C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config,再配置节点<processModel>中有一个属性"memoryLimit",这个属性的值是一个百分比,默认为"60"(注意,是60%不是 60M),即制定了ASP.NET进程能够使用所有物理内存的60%,当ASP.NET使用的内存量草果这个限额时,IIS会开始自动回收进程,即创建一个新的进程去负责应付HTTP请求,而将旧进程所占用的内存回收.