2014-12-01 40 views
0

我在IIS 7.5上運行的asp.net應用程序,在Windows Server 2008 R2 - 使用經典模式的應用程序池,框架版本4申請「凍結」,並請求隊列已滿

有時候我遇到以下問題: 該應用程序可以工作幾天,但突然間我收到一個HTTP錯誤503 - 服務器不可用。

當我看着應用程序池,它似乎正在運行(我看到它啓動),但它實際上FREEZES - 它的每個請求都以503響應。 在工作進程列表(在IIS管理器中)我看到很多請求未處理。

重要的是要提到其他應用程序池下運行的其他asp.net應用程序正在工作就好,這意味着IIS工作正常,問題只出現在這個特定的應用程序池中。

當我研究了HTTP錯誤日誌,我看到下面的錯誤日誌在Windows \ SYSTEM32 \ LogFiles文件\ HTTPERR文件夾:

  • 在常規的設置時,一切工作正常,我注意到的 記錄「Timer_ConnectionIdle 「(我讀過的東西是正常的)。
  • 在某些時候,我注意到「Client_Reset」記錄的出現。
  • 「Client_Reset」錯誤開始後15分鐘 - >「QueueFull出現」的記錄。

爲了與應用程序一起工作,我正在做一個iisreset(我想池的回收也足夠了)。

我很樂意收到任何幫助或建議。

編輯:

需要提及的,沒有什麼相關的被寫入到IIS日誌,或在系統和應用程序日誌是非常重要的。此錯誤發生之前。

+0

它可能是某種資源爭奪問題?甚至可能是僵局?你有(例如)'全局代碼嗎?asax'訪問一些鎖定/共享資源..? – user1429080 2014-12-05 11:40:25

回答

2

沒有關於您的問題的更多信息,大多數快速解決方法將是Configure Recycling Settings for an Application Pool。由於您的問題是關於請求隊列的,因此您可以選擇選項在達到多個請求之後。

+0

您的意思是在處理了一定數量的請求之後回收池嗎?或者在請求隊列中有一定數量的請求未決之後? – Dvirski 2014-12-08 11:24:29

+0

是的,您的其他請求將在回收後處理。 – 2014-12-08 11:26:31

+0

是對什麼? :]處理了一定數量的請求後回收池?在我的情況下,它不會幫助,因爲請求隊列正在填充未處理的請求..所以我怎麼知道什麼時候設置回收? – Dvirski 2014-12-08 11:52:15

1

當我遇到HTTP 500錯誤時,我發現啓用IIS跟蹤非常有幫助。以下是描述啓用跟蹤並查看跟蹤的過程的鏈接。網站的第一部分介紹瞭如何安裝IIS,因此您可能要跳至標題爲「啓用失敗請求跟蹤」的部分。

Troubleshooting Failed Requests Using Tracing in IIS 7

編輯:

既然你得到一個QueueFull錯誤,您可能要監視的請求隊列。最簡單的方法是使用Perfmon。在帶有IIS的服務器上,打開「性能監視器」並在「HTTP服務請求隊列」下添加相應的計數器。在你的情況下,對於不良應用程序池的「當前請求隊列」可能是有價值的。