2012-12-05 96 views
1

解釋這個問題到底是什麼並不容易,但我嘗試着;-)。隨機緩慢加載頁面

這裏有一些數據:

  • 微軟服務器與IIS7(未RC2)
  • 3GB內存
  • 只有這個應用程序是該服務器
  • SQL 2008年快遞
  • 庫模式
  • SimpleInjector
  • MVCSitemapProvider

現在確定問題所在。這不是啓動,因爲該站點在2秒內加載。應用程序池回收後。啓動後,頁面在200ms或更少(或更多)的情況下加載,但有時(我不能說什麼時候,因爲它是隨機的,它不是在回收後),它們需要2分鐘或更長時間。

我試了一下發現問題。它顯示這樣的:

  • ASP.NET開始請求:121456ms(這是隨機地)
  • 過濾:2ms的
  • 控制器:26ms
  • 查看:298ms
  • ASP.NET端請求: 0ms

這就像一個請求堆棧,我不知道。

編輯:

所以,我取出全部MVC站點地​​圖提供者,但假體性能比較的問題是仍然在這裏。

然後我檢查了IIS配置並注意到AppPool是NetworkService而不是ApplicationPoolIdentity(其他MVC解決方案在ApplicationPoolIdentity上運行),現在看起來甚至更快(頁面加載< 50ms)!如果問題仍然存在,我會寫在這個線程中。

+0

可能是一個愚蠢的問題,但MVC3是最新的服務器?我遇到了一個問題,那就是我的MVC3不是最新版本,而且我的webapp發生了類似的情況 - 它停止了服務某些資源並讀取某些路由值。如果你在開發環境中運行足夠長的時間,你能重現嗎? –

+0

我不能說它真的是最新的。我的公司還有其他產品MVC3應用程序(在RC2服務器上),它們的工作非常完美。不幸的是我不能用VS12重現這一點。 –

回答

1

我在MVC3項目上遇到了一個非常類似的問題,它的結構與上面描述的有些類似。我們的問題最終被綁定到MVCSitemapProvider。我會尋找關於具體問題的筆記,但是我們發現,如果我們禁用SiteMap創建菜單,就像測試一樣,一切都很快,然後當我們重新打開它時會變得緩慢。

我會建議作爲調試問題的下一步。

好的,我和我的一位同事談了這個項目,我現在回想起來。有幾個問題。首先,MVC站點地​​圖提供程序吞下所有的異常;這並不完全糟糕,但難以解決問題。我們發現兩種不同的情況導致了兩個稍有不同的問題,都導致放緩。首先,我假設在你的_Layout.cshtml或其他佈局文件中,你需要調用提供程序來生成你的菜單或者麪包屑。

  1. 如果你有,你有沒有在站點地圖中定義一個控制器動作,你到那個頁面的任何時間,以產生菜單和麪包屑的嘗試異常後拋出異常,你永遠也看不到他們。這是非常昂貴的,並且降低了該頁面的速度。
  2. 如果您的站點地圖中定義了一個指向控制器操作的拼寫錯誤或不存在的站點地圖,每次站點地圖嘗試呈現菜單和/或麪包屑時,它都會拋出併吞下許多例外,每一個頁面。

由於這兩個問題和我們在網站地圖上的其他問題,我真的會推薦檢查你的站點地圖文件,並確保你在那裏代表你的所有控制器動作,並且你沒有任何節點錯誤地定義。如果你不能完全確定,你甚至可能想在站點地圖代碼中加入一些斷點,並逐步查看它是否爲你拋出異常,然後從那裏追溯。

+0

感謝您的提示。我會刪除它,並希望問題沒有了......但很難檢查,隨機引起: - )... –

+0

@DonMerdino我添加了一些細節。我真的希望這可以幫助你,我知道幻影性能問題可能是解決問題最令人沮喪的一些問題。 –

+0

謝謝你的提示!看起來MVC SiteMap Provider在這裏不是問題。我在第一篇文章中添加了更多細節。 –