IIS是微软出品的Web站点容器,可以使用它建立很多站点,同时为了避免访问压力,每个站点可以使用独立的应用程序池,每个应用程序池均是独立进程,使用独立分配的内存。
然而每个应用程序池对应的进程运行文件,均为w3wp.exe,有时候遇到没写好的程序代码,造成内存泄露的话,需要快速判断是哪一个应用程序池造成的。
有如下三种方式来快速判断:
1、启动任务管理器,在明细行中,通过进程对应的用户名判断
如下图,第1个w3wp是由NETWORK SERVICE运行,这个可以理解为主程序,另外4个w3wp对应的用户名,和应用程序池的名称一一对应。

2、启动命令提示符,运行如下命令:
C:\windows\system32\inetsrv\appcmd list wp
将可以看到如下信息,每个wp后显示的是进程的PID,后面显示的是对应应用程序池名称,这里是最准确的显示。

3、进入IIS管理器,进入到站点Home页,双击Worker Processes,即可看到应用程序池和工作进程,还可以看到其占用的内存。

