通过IIS自带工具Iisapp.vbs查询哪个站点占用资源
IISAPP.vbs介绍:报告服务于某个特定应用程序池当前正在运行W3pwp.exe进程的进程标识符(PID)。
情况:由于服务器上架设了IIS几十个虚拟主机,某天发现IIS中某虚拟主机进程w3wp.exe占用非常大的cpu及内存,但由于过多的站点无法查出是那个站点从而进行分析排错,此时我们可以通过微软IIS自带的IISAPP.VBS工具将此站点查找出来!
使用此方法的排除需要有以下条件:
条件(1)首先在使用前,我们运行先将Windows 任务管理器的PID(进程标识符)打开,方法如下(图1)所示!
图1
在查看--排行列--PID(进程标识符) 将其选择上后确定即可看到程序对应的PID标识符!
条件(2)每个虚拟主机使用一个独立应用池用于分析使用!如(图2)所示:
图2
至此我们可以进行IISAPP工具的使用了,我的经验是建议各位不要学我使用随机的应用池名.最好规范一下,每个站点使用相对应的域名,然后应用池也使用相应的域名,这样可以节省相关的排错工作量!
使用方法:在服务器上--开始菜单--运行--cmd
在命令提示符下运行iisapp -a
注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池。因此我们通过(图1)中找到占用严重的w3wp.exe的PID为2972,此时我们可以通过以下所示中找不能通过对应的2972的应用池名后找到相关站点!
C:\Documents and Settings\administrator>iisapp -a
W3WP.exe PID: 12092 AppPoolId: AppPools #4
W3WP.exe PID:2972 AppPoolId:AppPools #13 W3WP.exe PID: 12164 AppPoolId: AppPools #11
W3WP.exe PID: 10392 AppPoolId: AppPools #51
W3WP.exe PID: 10520 AppPoolId: AppPools #39 ……………………
W3WP.exe PID: 4224 AppPoolId: AppPools #68
W3WP.exe PID: 10304 AppPoolId: AppPools #60
W3WP.exe PID: 6792 AppPoolId: AppPools #25
W3WP.exe PID: 6884 AppPoolId: AppPools #33
(iisapp实际上是存放在C:\windows\system32目录下的一个VBS脚本,全名为iisapp.vbs,如果你和我一样,也禁止了Vbs默认关联程序,那么就需要手动到该目录,先择打开方式,然后选“Microsoft (r) Windows Based Script Host”来执行,就可以得到PID与应用程序池的对应关系。)
3、到iis中察看该应用程序池对应的网站,就ok了,做出上面的内存或CPU方面的限制,或检查程序有无死循环之类的问题。
更多详细可以参考微软官方提供的说明文档:
报告为特定的应用程序池提供服务且当前正在运行 w3pwp.exe 进程的进程标识符 (PID)。
iisapp 语法
iisapp [a/ AppPoolName | /p AppPoolID]
iisapp 参数
iisapp 注释
• |
如果未指定应用程序池名或 ID,则 iisapp 列出所有运行应用程序。 |
• |
仅当使用 /s 时,才可使用 /u 和 /p 命令行选项。必须同时使用 /p 和 /u 才能提供用户密码。 |
• |
Iisext.vbs 执行 IIS 管理器中可用的相同操作。可使用任何一种工具管理 IIS 网站。 |
• |
发出命令的计算机必须正在运行 Windows XP 或 Windows Server 2003 操作系统。用户必须是命令所影响的计算机上的 Administrators 组成员。 |
• |
命令所影响的计算机必须是运行带有 Internet 信息服务 (IIS) 6.0 的 Windows Server 2003 的服务器。 |
iisapp 示例
下列示例显示在特定的情况下如何使用 iisapp。
iisapp 查看所有运行应用程序
下列示例显示本地计算机上运行的所有应用程序池,按其进程 ID (PID) 和应用程序池 ID (AppPoolID) 标识。该命令忽略所有可选参数并接受默认值。
iisapp
Iisapp 发出如下响应信息:
正在连接到服务器 ...已完成。W3WP.exe PID:2232 AppPoolID:DefaultAppPool W3WP.exe PID:2608 AppPoolID:MyAppPool
按进程 ID 查看运行应用程序
如果知道特定应用程序的 PID,则可以使用下列命令检查其状态。
iisapp /p 2608
Iisapp 发出如下响应信息:
正在连接到服务器 ...已完成。W3WP.exe PID:2608 AppPoolID:MyAppPool
iisapp 格式图例
格式 | 意义 |
斜体 |
用户必须提供的信息 |
粗体 |
用户必须完全按照显示的那样键入的元素 |
省略号 (...) |
可以在命令行中重复多次使用的参数 |
在括号 ([]) 之间 |
可选项目 |
在大括号 ({}) 之间,将选项用竖线 (|) 隔开。例如:{even|odd} |
用户必须从中只选择一个选项的选项集 |
Courier font |
代码或程序输出 |