专业网络服务提供商
关于进一步加强国内域名注册信
信产部、公安部全面开展依法打
“感恩回报,传递激情” —书生
关于2009年春节期间公司有关活
关于总部基地机房升级断网通知
关于网通服务器迁址的紧急通知
国研IDC机房进行设备升级割接通
关于上调中文域名注册和续费价
英文CN域名规则调整通知
关于部份服务器升级南北双通服
首页帮助中心服务器正文

w3wp.exe(iis6)占用cpu100%

特征:
  
服务器正常CPU消耗应该在75%以下,而且CPU消耗应该是上下起伏的,出现这种问题的服务器,CPU会突然一直处100%的水平,而且不会下降。查看任务管理器,可以发现是IIS进程消耗了所有的CPU空闲时间,管理员在这种情况下,只好重新启动IIS服务,重新启动IIS服务后一切正常,但可能过了一段时间后,问题又再次出现了。

最有可能的直接原因:
此问题一般由网站程序设计不当引起死循环导致。如:有一个或多个ACCESS数据库在多次读写过程中损坏,微软的MDAC系统在写入这个损坏的ACCESS文件时,ASP线程处于BLOCK状态,结果其他线程只能等待,IIS被死锁了,全部的CPU时间都消耗在IIS进程中。

解决办法: 
  首先给每个站点都建一个应用程序池,这样便于找出问题出在哪一个站点上。(多个应用程序池会加重系统开销,建议把站点分批排查)
  
1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid。
 
2、在命令提示符下运行iisapp.vbs -a (此脚本文件在system32目录中,如果说找不到再加上路径运行一次)。这样就可以看到pid对应的应用程序池的名称了。
 
3、到iis中察看该应用程序池对应的网站,然后针对该站点排除错误。
(如果运行后出现 error - no no results 这样的提示,说明您的站点没有开启或还没有被访问过)
  
下面详细介绍一下 iisapp 的语法:

语法:
iisapp [a/ AppPoolName | /p AppPoolID]

参数
/a AppPoolName

指定特定应用程序池的名称。(可选项)

/p AppPoolID

按 ID 号指定应用程序池。(可选项)

注释
• 如果未指定应用程序池名或 ID,则 iisapp 列出所有运行应用程序。
 
• 仅当使用 /s 时,才可使用 /u 和 /p 命令行选项。必须同时使用 /p 和 /u 才能提供用户密码。
 
 
• Iisext.vbs 执行 IIS 管理器中可用的相同操作。可使用任何一种工具管理 IIS 网站。
 
• 发出命令的计算机必须正在运行 Windows XP 或 Windows Server 2003 操作系统。用户必须是命令所影响的计算机上的 Administrators 组成员。
 
• 命令所影响的计算机必须是运行带有 Internet 信息服务 (IIS) 6.0 的 Windows Server 2003 的服务器。
 

Copyright © 2000 - 2008 北京贰度网络科技发展有限公司 Morecn.Inc
《中华人民共和国电信与信息服务业务经营许可证》编号:京ICP证05007082号