从IIS6.0可以在IIS中架设多个站点并给每个站点指定不同的应用程序池,分别对各程序池进行CPU,内存的使用限制。而每一个应用程序池会在任务管理器中对应一个系统进程(w3wp.exe),每一个进程都有一个PID来标识。当某个w3wp.exe进程占用资源很高的时候如何快速定位到哪个站点呢?这就需要使用iisapp来查看PID所对应的IIS管理器中的应用程序池名称,来快速定位到出问题的站点。
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---
或者
先再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值,就知道是哪一个应用程序池出了问题,就可以查到具体是什么网站有问题了!!!