2011-05-02 20 views
2

什麼可能會導致計數器頁面錯誤/秒和緩存錯誤/秒上的值非常高?asp.net應用程序中的高頁面錯誤/秒和緩存錯誤/秒

計數器頁面/秒幾乎爲零。大約爲零,偶爾會在短時間內上升到300。平均約10(隨着時間的推移)。

高速緩存故障/秒爲零,持續2秒,然後在2-3秒內升至約10000。這一直是重複的。

頁面讀取/秒很低,約爲0-20。

頁面錯誤/秒的25000 avarage偶爾顛簸〜80000

凡在Web應用程序我應該開始尋找?

+0

問:這些asp.net頁面錯誤或內存頁面錯誤?這是兩個完全不同的東西。 – NotMe 2011-05-02 19:54:41

+0

這是內存頁面錯誤。 – Patrik 2011-05-03 06:12:47

回答

2

根本的問題是由於大量字符串的GC必須處理的。

例如我們有相當多的字符串轉換的數據層中 DataReader的[ 「塔」]。的ToString()

此替換爲

(串)的DataReader [ 「列」] .Tostring()和它幫助了很多。

另一個問題是我們在asp.net緩存中緩存了很多相同的字符串。 我們對此進行了優化,僅將引用緩存到只存儲一次字符串的列表。 我們還對緩存進行了優化,以便緩存將在.NET緩存中的所有計算機上重用的內容以及只會重用的內容,但不會保存在我們緩存的另一臺服務器上的同一臺服務器上,因此不會保留一個參考,因此將釋放,所以GC可以釋放內存。

1

如果您正在討論asp.net頁面錯誤,請查看Windows服務器日誌以及您可能需要確定發生了什麼的任何日誌。您應該會看到很多.net錯誤。

如果您正在討論MEMORY頁面錯誤和緩存錯誤,那麼這可能是正常行爲。內存頁面錯誤很常見,並且基本上是硬件中將數據從虛擬內存轉移到物理內存的信號。請參見http://en.wikipedia.org/wiki/Page_fault

降低內存頁面錯誤的最佳方法是增加機器中可用的物理內存量。

你也可能需要閱讀:http://blogs.technet.com/b/askperf/archive/2008/06/10/the-basics-of-page-faults.aspx

+0

我正在談論內存頁面錯誤。我們在機器中有大約7 GB的可用RAM。我們更新了Web應用程序,之後頁面錯誤變得很高。所以我需要輸入哪裏開始尋找。 – Patrik 2011-05-03 06:14:36