2013-03-22 69 views
1

我們有一個非常大的三層.NET 4.0 Web應用程序(ASP.NET,WCF,SQL Server 2008 R2),它具有一些性能問題,我嘗試進行診斷。 ASP.NET層使用SQL會話狀態提供程序,並且有相當廣泛的會話狀態使用。測量ASP.NET SQL會話狀態提供程序的性能

<sessionState mode="SQLServer" sqlConnectionString="..." cookieless="false" timeout="20"/> 

我想弄清楚需要多少時間來加載和保存會話到數據庫。請注意,這與使用SQL事件探查器或其他數據庫方法來測量該層上的時間不同;我想測量從ASP.NET層花費的總時間。 I.e.這將包括會話對象序列化/反序列化,連線時間和SQL保存/加載時間。

我是非常有經驗的開發人員(自80年代初以來),我現在谷歌搜索小時 - 有大量文章對比了會話狀態方法和一般性能概念等,但我什麼都沒有找到如何實際測量SQL會話狀態提供程序的總時間。我最初想到使用HttpModule掛鉤事件並使用秒錶,但似乎並沒有一條幹淨的路徑。 (我會解決的方法是合理精確到百分之幾...)

任何想法/建議非常感謝,謝謝。

+0

你有沒有嘗試添加使用'Trace',然後就打開跟蹤一些診斷代碼?這樣你可以非常徹底地診斷選定的頁面。 – 2013-03-22 14:23:27

+0

你會在哪裏添加Trace語句? – 2013-03-22 14:55:38

+0

在您的代碼中儘可能多地分析確切的時間點, – 2013-03-22 15:06:33

回答

0

您不僅可以將會話超時更改爲秒,然後更低和更低的量,直到它不加載和保存會話?

+0

感謝您的想法......問題在於會話狀態通常會隨着用戶點擊更多頁面,執行更多操作等而建立。實際衡量整個應用程序的狀態提供者性能非常重要,而不僅僅是達到低閾值時間到。 – 2013-03-22 14:21:11

0

託管堆棧可以在VS探查器中進行概要分析。請參閱:

對於低層次的東西用Xperf,看到Two Minute Drill: Introduction to XPerf

對於SQL Server端有性能故障排除許多方法,如Waits and Queues。對於特定的報表持續時間/ IO成本,您可以使用分析器跟蹤,請參閱Scenarios for Using SQL Server Profiler

現在爲一個非常具體入侵方式在你的情況下,你可以使用性能計數器。不是股票種類,但創建自己的。請參閱Using XSLT to generate Performance Counters,以獲得一種簡便的方法,通過它自己的性能計數器來增強您的應用所需的管道,然後使用性能跟蹤來連接您的代碼。使用標準Perforrmance計數器工具鏈(logman.exe,perfmon.exe)進行採集和分析。

0

要做到這一點,最簡單的方法是分析應用程序,並查看時間在ASP.NET深處花費的時間。您將能夠通過類和方法名稱快速找出與會話相關的活動。

Perfview對此很好。它有一個採樣分析器,這意味着它會給你準確的,未校正的分析信息。但它不能告訴你用什麼方法花了多少秒。它告訴你的是百分比。

我會對空白頁面進行負載測試,讓perfview運行30秒。

dottrace是一個簡單的分析器,它也顯示每次調用花費的CPU時間量,我相信。

0

首先想到的是創建一個頁面,除了可能加載/存儲會話狀態變量外,其他任何內容都不會執行任何操作。從那裏你可以設置一個編碼的UI測試,訪問頁面多次,並建立一個統計估計頁面加載時間的變化和分佈。

WCAT(Web能力分析工具),也可以用於查看性能負載下如何變化......

相關問題