在IIS的設定上,可以設定多個Application Pool應用程式集區,再把網站分別放到集區內,但如果發現某個集區的CPU滿載時,怎麼知道是那個集區正在消耗資源.
在IIS的設定上,可以設定多個Application Pool應用程式集區,再把網站分別放到集區內,但如果發現某個集區的CPU滿載時,怎麼知道是那個集區正在消耗資源.
從工作管理員可以看到幾個w3wp.exe正在執行,但如果其中有一個在忙,還真是不知道是那個集區的問題.
這時再拿出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的名字,所以過濾後就可以取得.
就可以看到以下的畫面.
當然也可以用iisapp.vbs就可以列出各個Application Pool及PID,這個部份可以參考 : (TechNet)使用 Iisapp.vbs 列出執行中的網頁應用程式
WMI應用範例 : IISInfoWin.zip