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