以往,兩個 Web Application 放在同一個 Application Pool 時,其中一個非常吃資源,往往會影響到另一個Web Application。因此,兩個Web Application 都看起來不正常,常常令人無法了解誰是禍首,也引起一番爭論。
常見的建議,是將這兩個應用程式分開到不同的 Application Pool,再來看看誰是罪魁。這樣一來,勢必有一個Web Application 必須換Application Pool,也就等於應用程式重起啟動,會讓線上使用者跳腳。
以前,這是原罪,一定要經過這樣的痛楚才能得到是非的原因。在 ASP.NET 4 則新增了一項功能,可以在同一個 Application Pool 的 ASP.NET 4 Applications,也可以找到分別的效能計數器。這項功能稱 Application domain resource management,簡寫為 ARM
設定
ARM 預設為非啟動,必須手動修改 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Aspnet.config下,新增一行設定appDomainResourceMonitoring ,如下
<appDomainResourceMonitoring enabled="true"/>設定完畢後,記得將該 Application Pool 重啟,才會讀取這個新的設定。
效能計數器
在 ASP.NET Apps v4.0 下,會比 V2.0 多了 % Managed Processor Time(estimated) 及 Managed Memory Used(estimated) 這兩組計數器,其下可再細分出每個應用程式的效能。
結論
經過這樣的設計,找效能殺手的應用程式,果然比以前來的有效率多了。但為什麼不預設就是啟動的呢?還得手動地加上設定?我猜這也會造成效能上的issue 吧。
REF
沒有留言:
張貼留言