仰天一笑(Ansonxuyu),专业从事软件定制开发、Web软件开发,网站建设,网络推广,APP开发,微博应用开发,微信应用开发,电子商务开发,物联网开发等技术。
互联网8年风雨,愿在此交朋识友,交流心得,分享技术知识(策划/研发/运营/推广/合作)!QQ:943530498


仰天一笑

昨日不悔,今日勿失,明日莫忧! —徐羽

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

IIS 环境下 w3wp.exe 进程 CPU 占用过高的解决方案

前一段时间,自己这站点就遇到了 IIS+PHP 环境下 w3wp.exe 进程 CPU 占用过高的问题,造成 IIS  无法正常的工作,从而让网站时好时坏。上周研究了三天后,找到了最终原因,目前工作了十天,没有任何问题,看来原因找到,故以下按照 WIN2003  详细分析给大家做为参考。
出现这种问题时,首先要判定是哪个网站造成了 w3wp.exe  进程占用过高。这点,网上流传的方法还是比较可行的。不过,想判定这个必须要一个先决的条件:就是你的各个 WEB 网站必须使用独立的应用程序池。
判定方法:

1 在任务管理器中增加显示 pid 字段。就可以看到占用内存或者 cpu 最高的进程 pid !

2 在命令提示符下运行  iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到 pid 对应的应用程序池。3 到  iis 中察看该应用程序池对应的网站就可以了!然后真对站点排除错误!(如果运行后出现 error – no no results  这样的提示,说明你的站点没有开启或还没有被访问过!)

解决方法:

1  尝试删除系统路径\System32\Logfiles\W3SVC1  下当天的错误日志文件,如:ex060904.log,然后重新启动IIS,等待一段时间,看看有没有问题。注:有时非法重启或者写入日志错误都 有可能造成 w3wp.exe 进程锁死。
2 设置应用程序池的CPU监视,不超过25%,每分钟刷新,超过限制时自动关闭。注: 此方法只能用来做为测试,在真正的环境下,这个可能会引起网站时好时坏。不推荐长期使用。
3  检查你的程序代码,或者网页调用,程序没写好或者有死循环,是最容易造成 w3wp.exe 锁死的。注:方法是先停止IIS,再删除当天的网站 日志(系统路径\System32\Logfiles\对应的网站目录下),然后开启IIS,等待CPU高占用的出现,这时在1分钟内打开新建的日志文 件,按出现时间,对应检查里面所罗列出现的文件,检查代码是否有问题。
4 检查数据库完整性和 ODBC 的有效性。注:有些写 得不好的 ASP 程序,在访问数据库无法做到容错性,所以有些时候数据库损坏或者 ODBC 传送数据不正常,都有可能造成多次强制查询,从而体现为  w3wp.exe 高 CPU 占用。
5 检查文件的权限。注:不要奇怪,某些时候真的出现这种事情,一个文件无法写入或者无法 读取,都会引起很大的问题。

posted on 2011-06-17 16:27  仰天一笑  阅读(6817)  评论(0编辑  收藏  举报