找出IIS的Application Pool應用程式集區的PID

在IIS的設定上,可以設定多個Application Pool應用程式集區,再把網站分別放到集區內,但如果發現某個集區的CPU滿載時,怎麼知道是那個集區正在消耗資源.

在IIS的設定上,可以設定多個Application Pool應用程式集區,再把網站分別放到集區內,但如果發現某個集區的CPU滿載時,怎麼知道是那個集區正在消耗資源.

 

從工作管理員可以看到幾個w3wp.exe正在執行,但如果其中有一個在忙,還真是不知道是那個集區的問題.

IISInfo2

這時再拿出WMI來找看看,說不定可以找到我要的資訊,Win32_Process裡有,但要做點動作才能取得.

ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2"
                , string.Format("SELECT CommandLine,ProcessId,WorkingSetSize FROM Win32_Process where Name='{0}'"
                , "w3wp.exe")

看到回傳的CommandLine,ProcessId,WorkingSetSize,怎麼沒有看到ApplictionPool在那裡,而這資訊就在CommandLine裡.

而CommandLine的最後面就是Appliction Pool的名字,所以過濾後就可以取得.

就可以看到以下的畫面.

IISInfo1

 

當然也可以用iisapp.vbs就可以列出各個Application Pool及PID,這個部份可以參考 : (TechNet)使用 Iisapp.vbs 列出執行中的網頁應用程式

 

WMI應用範例 : IISInfoWin.zip