通过iisapp命令查找pid解决IIS的CUP占用率过高问题

服务器技术    2011-07-08 15:14  

  我们先来看看iisapp的一些参数

  iisapp -a pid

  可以查出对应的域名

  反之 iisapp -p domain 查pid的语法

  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 的服务器。

  说明一下:w3wp.exe为IIS里面的应用程序池进程,有几个进程就会有几个w3wp.exe,会发现某个w3wp.exe进程CPU和内存都高得可怕。

  好,那我们来看看具体实践中该如何解决首先是windows2003

  首先打开windows任务管理器–点击查看—选择列–把PID给钩上,就可以在进程里面看到PID的选项了。

  点击运行–输入CMD–输入iisapp -a—很奇怪,这里显示PID的,是用弹出窗口一个个出现的,不知道别人会不,,反正我就是这样,太不利于查看了。

  注意,希望人BLOG听说第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池,这个我就没测试了。

  这样吧,先再CMD里面输入:cd %systemroot%\system32

  然后再输入:cscrIPt.exe iisapp.vbs -a

  CMD窗口显示如下:

  W3WP.exe PID: 2488 AppPoolId: AppPool #26

  W3WP.exe PID: 3008 AppPoolId: AppPool #2

  W3WP.exe PID: 4704 AppPoolId: AppPool #15

  W3WP.exe PID: 6388 AppPoolId: AppPool #19

  W3WP.exe PID: 6004 AppPoolId: AppPool #8

  奇怪的是,我还是弹出了窗口,不过不影响显示。有了这样对于就好办了。

  再任务管理器里面查看占用CPU和内存过高进程的PID值,就知道是哪一个应用程序池出了问题,就可以查到具体是什么网站有问题了。

  相关资料:

  win2000的解决方法

  2000下要怎么办呢?win2000下不大方便,需要将站点的应用程序保护设置为高,默认是中。

  然后打开管理工具 > 组件管理,组件服务 — 计算机 — 我的电脑 — com+ 应用程序

  选择查看 > 状态查看,就可以看到类似如下的显示:

  名称 运行 PID

  IIS-{www.zoubin.com//Root} 是 2544

在线留言

我要留言