2011-04-26 42 views
3

我有一個相當繁忙的站點,每個月可以看到10米左右的視圖。IIS上的請求超時數很高

我的一個應用程序池似乎堵塞了幾個小時,我正在尋找一些關於如何解決它的想法..?我懷疑它以某種方式跑出線程,但我不知道如何確定這個追溯.. ..?以下是我所知道的:

  • 該網站從未「失望」,但約90%的請求開始超時。
  • 我可以看到大量的「HttpException - 請求超時」。在停機期間的日誌中
  • 我無法找到任何會導致超時的SQL錯誤或代碼錯誤。
  • 超時似乎已在所有頁面上的網站範圍內。
  • 有一個頁面上有一個錯誤,它會在該特定頁面上導致錯誤。
  • 該網站必須重新啓動。

該網站是ASP.NET C#3.5的WebForms ..

可能性:

  1. 主題枯竭:我的想法是,導致錯誤的頁面可能以某種方式開始干擾可用的線程?
  2. 全局代碼錯誤:另一種可能性是我的一個靜態類在某個地方有一個未發現的錯誤。這是不太可能的,因爲這從來沒有發生過,我無法找到這些類的任何日誌錯誤,但這是一種可能性。

UPDATE

我已經成功,現在跟蹤的問題,而它的發生。頁面正常加載,但由於某種原因WebResource.axdScriptResource.axd均爲需要一分鐘加載。在性能計數器中,我可以看到此時ASP.NET Requests Queued峯值。

+2

btw;沒有C#3.5這樣的東西;我認爲你的意思是C#3.0的目標.NET 3.5 – 2011-04-26 09:21:16

+0

正確,3.5 build .. – 2011-04-26 09:33:01

+0

你使用線程/鎖/互斥鎖和多個工作池嗎?搜索互斥鎖。 – Aristos 2011-04-26 09:36:06

回答

3

我想嘗試的第一件事是Sam Saffron的CPU analyzer tool,它應該表明是否有某些常見事情發生太多/太長。部分原因是因爲它不涉及任何變化;只需在服務器上運行它。

之後,還有其他各種調試工具可用;我們發現some very ghetto approaches可以非常有效地查看時間花費在哪裏(當然,它只能在成功結果的10%上運行)。

你當然可以打開服務器分析工具並拖動各種.NET/IIS計數器,其中可能幫助你找到一些東西。

這三個選項之間,你應該涵蓋的:

  • 代碼掉入一個黑洞,從來沒有走出來(通常線程相關)
  • 代碼運行,但過於緩慢(通常數據訪問相關)
+0

謝謝馬克,欣賞信息。現在我已經加載了一些性能計數器,但正如你猜測的那樣,現在所有的計數器看起來都很正常。如果它再次發生,將保持它們加載..此外,忘了提及,CPU在停機期間掉到了什麼地方.. – 2011-04-26 09:47:52

+0

@Dave如果CPU什麼都不是,那*可能*是大規模阻塞的(線程相關的錯誤),或者可能是數據訪問問題;都不涉及CPU – 2011-04-26 09:49:16

+0

謝謝馬克,是的低CPU確實使它看起來這樣。我想我可以排除數據訪問方面的問題。我多年來遇到過很多這樣的人,並且知道如何很好地發現他們。也不能拿起日誌中的任何SQL超時,並且沒有SQL的靜態頁面也會超時。所以我認爲線程阻塞看起來像這裏的罪魁禍首.. – 2011-04-26 10:01:10