2012-05-23 26 views
0

如何識別使用大量內存的默認應用程序池上的Web應用程序?確定在iis中佔用內存的最多Web應用程序7

編輯 我的應用程序池包含許多應用程序,我不能分離或阻止他們,我可以知道使用哪些資源對一些特定的應用程序在我的多應用程序池?

+0

是否有可能將您的應用程序分配到不同的池,然後檢查'w3wp'的哪個實例消耗內存? –

+1

爲什麼你在同一個池中有多個應用程序?當他們被分成他們自己的游泳池時,發現這一點非常簡單。 – Leniency

+0

我在默認應用程序池中有多個應用程序,並且很難分離主題 –

回答

1

您可以使用性能監視器,打開它,然後單擊「添加計數器」,然後選擇「Asp.Net應用程序」或「ASP.Net Apps vx.xxxxx」,然後選擇您的計數器。

1

我以前需要爲運行多個應用程序池的Web服務器執行此操作。根據this article:「如果您需要確定哪個應用程序池與特定w3wp.exe進程關聯,請打開管理命令提示符,切換到%windir%\ System32 \ inetsrv文件夾(cd%windir%\ System32 \ inetsrv)並運行appcmd list wp,這將在引號中顯示w3wp.exe進程的進程標識符(PID),您可以將該PID與任務管理器中可用的PID進行匹配。

這正是我所做的。

+0

問題是有一些w3wp.exe進程需要大量內存,並且此進程爲我的服務器上的所有Web應用程序提供服務, t很容易分開主題,同一個池中有超過15個站點,但是這個巨大的內存消耗是新的,我最近沒有添加任何應用程序。 –

+0

在這種情況下,我同意上面的評論員。您可以將應用程序分離到他們自己的應用程序池中,注意每個進程的額外開銷。然後使用我上面的建議來決定哪個進程屬於哪個應用程序。 IME,在每個應用程序池中配置內存消耗限制以使池在達到最大值後自動自行回收是值得的。也許這不是一個可持續的補救措施,如果這是一個不變的問題,但在這裏看到更多:http://technet.microsoft.com/en-us/library/cc725749(v=ws.10).aspx – phixed

+0

在這種情況下我的主要問題沒有答案?我無法知道哪個特定應用程序在我的多應用程序應用程序池中使用了內存? –

1

認爲在IIS中,如果您有多個共享1個應用程序池的Web應用程序,則w3wp.exe進程會將每個Web站點隔離到它自己的AppDomain中。如果您使用的是.NET 4,則看起來好像有一些performance metrics that can be read per AppDomain.

這意味着您可能可以在應用程序中添加一些代碼,以便轉儲出自己的AppDomain的統計信息,然後您可以彙總並報告上。

我還沒有嘗試過這個自己,但似乎它可以幫助...


一個這樣做的很簡單的形式可能是剛剛在你的Application_Start()方法,設置AppDomain.MonitoringIsEnabled = true;

然後有一個「stats.aspx」頁面,將AppDomain.CurrentDomain.MonitoringTotalProcessorTime以及其他任何統計信息轉儲到標籤。

相關問題