2010-10-30 32 views

回答

3

工作進程,可以通過編程讀過程 - >從相應的PERF經過的時間。計數器(1)或直接從System.Diagnostics.Process命名空間;對於AppDomain,您可以在啓動時設置一個應用程序級別的變量,作爲您的基準和手動度量。

斯科特米切爾實際上在這方面有一些好的帖子,8年後仍然相關,不管信不信(2)。運行在卡西尼(Vista中,VS 2008),我看到一個精確的系統正常運行時間:

TimeSpan.FromMilliseconds(Environment.TickCount) 

...和精確的過程/應用程序域上的時間與這些:

foreach (Process p in Process.GetProcessesByName("WebDev.WebServer")) 
{ 
    Response.Write(DateTime.Now.Subtract(p.StartTime).ToString() + "<br/>"); 
} 

Response.Write(DateTime.Now.Subtract((DateTime)Application["StartTime"]).ToString()); 

我也能夠獲得正確的PerfomanceCounter,但似乎無法讀取正確的值(始終爲零,我的設置下):

Response.Write(new PerformanceCounter("Process", "Elapsed Time", "WebDev.WebServer").NextValue() + "<br/>"); 

斯科特的文章definitel y值得一讀 - 在ProcessInfoProcessModelInfo(eg。 ProcessModelInfo.GetHistory),但不幸的是它不是可在卡西尼號:

工藝指標只適用於 當ASP.NET進程模型是啓用 。當在工作進程 隔離模式下在 IIS 6或更新版本上運行時,此功能不支持 。

UPDATE: 如何正確讀取計數器,以避免零上NextValue()很好的解釋:http://blogs.msdn.com/b/bclteam/archive/2006/06/02/618156.aspx

HTH

(1)https://serverfault.com/questions/90927/lifetime-of-iis-worker-process-or-appdomai

( 2)http://www.4guysfromrolla.com/articles/041002-1.aspx

相關問題