2009-07-29 49 views
1

我對.NET開發一般來說相當陌生。我想在我的Web應用程序上做一些工具來調整性能,尤其是與緩存有關的性能。我寫了很多自定義的動態生成的UserControl,我想嘗試以不同的方式進行緩存 - 可能通過ASPX頁面聲明或編程方式。ASP.NET Web應用程序上的代碼工具

我也有很多Oracle相互依賴的查詢,我想查看這些查詢的緩存結果,以查看哪些內容會提供最佳性能增益。

什麼會去了解這一點的最好方法是什麼?不知何故,我不認爲用秒錶觀看IE瀏覽器加載頁面是多少時間是最好的主意。我不知道我的緩存是否受到影響,或者是因爲感覺到延遲而被忽略。 VS2008是否有內置的工具來協助?

回答

2

我最近工作的項目需要檢查我們的SQL查詢的時間,並將它們輸出到調試模式下的調試偵聽器。通過這種方式,我們可以評估SQL查詢的執行時間以及執行時間,以及調試我們的網站代碼。

  • 的executeQuery
  • 的ExecuteNonQuery
  • 的ExecuteScalar

他們確實使用了:

我通過集中了SQL查詢到包裝方法的3種類型的SQL方法,我們採用這樣做Stopwatch類,但也有代碼將查詢轉換爲SQL語句,類似於在SQL Server Profiler中看到的。

每種方法是類似以下內容:

protected static object ExecuteScalar(SqlCommand comm, SqlParameter[] sqlParameters) 
{ 
    Stopwatch st = new Stopwatch(); 
    bool errorDetected = false; 

    try 
    { 
     comm.Parameters.Add(sqlParameters); 

     using(comm) 
     { 
       st.Start(); 
       object returnValue = comm.ExecuteScalar(); 
       st.Stop(); 
       return returnValue; 
     } 
    } 
    catch(Exception) 
    { 
     errorDetected = true; 
     st.Stop(); 
     throw; 
    } 
    finally 
    { 
     string output = GetSqlStringForParameters(sqlParameters,st.Elapsed,QueryType.Scalar); 

     if(errorDetected) 
     { 
       Debug.WriteLine("/*SQL (Errored)*/" + output,"DataAccess.SqlAdapter.ExecuteScalar"); 
     } 
     else 
     { 
       Debug.WriteLine("/*SQL*/" + output,"DataAccess.SqlAdapter.ExecuteScalar"); 
     } 
    } 
} 

這則輸出DebugView.exe我們的SQL語句是這樣的:

/*SQL*/ exec spsGetOrder @OrderNumber='234567' -- Rows returned = 1 ; 1 params |--> completed NonQuery in 0.0016144 seconds. 

這樣做的好處是,雖然,是有是這些語句的瓶頸,我們可以直接將查詢粘貼到SQL分析器中並獲取查詢的輸出。這也意味着,如果您有查看日誌文件的工具,則可以使用正則表達式來監視所用時間在特定範圍內的位置。

所以,如果你想尋找超過0的查詢。5秒,您可以搜索術語:

「在0 [5-9] \ d +」 < - 一切超過0.5秒 或 更大 「在[1-9] \ d +」 < - - 一切大超過1秒

這幫助我們非常關注我們的努力。它還可以幫助我們確定如果問題是數據庫相關的,或者如上文提供的ASP.NET問題。

最後,有一個叫Fiddler這也可以幫助你診斷頁面,因爲他們來你的計算機的工具。這給你喜歡的文件大小,將圖像/ CSS參考,下載時間信息。這在診斷ViewState大小問題時也非常有用。

我希望這有助於

1

我通常採用的方法是啓用ASP.NET跟蹤。有一個很好的指導,以啓用this here。它非常詳細,最好的是它是免費的。

需要關注的一件事是頁面的大小(尤其是它的視圖狀態),這是頁面執行代碼後下載多長時間的重要部分。另一個是代碼的某些部分呈現的速度有多快,可以通過在代碼被執行測試之前和之後致電Trace.Write來實現。

使用ASP.NET跟蹤的perf測試部分實際上只是一個指導,因爲它不容易重複,但是很好。如果你想加強它,Visual Studio 2008 Team System中的工具可能會更好(儘管我沒有使用過這些工具)。還有JetBrains dotTraceANTS Profiler

0

AppDynamics是一個很好的應用性能監控器,可與任何配置的測控儀表.NET應用程序。我認爲可以用這個工具來解決你的問題。 http://www.appdynamics.com/

0

我已經與New Relic有很好的經驗。很簡單安裝,非常清楚的儀表盤在其網站上,如果你碰巧主機上的Rackspace公司或亞馬遜的雲,他們通常提供免費升級到Pro帳戶。檢查他們!