2010-11-11 109 views
45

我們有一個部署到服務器的asp.net MVC應用程序,但是當服務器的請求過多時,客戶端只會得到「503服務不可用」錯誤。
但是,如果我將應用程序部署到另一臺服務器(較低的硬件配置),一切正常,甚至更多的要求它可以處理好。
我的問題是什麼可能的配置可以導致以前的服務器只是拋出503錯誤? (這意味着請求沒有達到我們的申請)。有什麼可能導致「服務不可用503」錯誤?

+2

實際上有[很多可能的原因](http://www.microsoft.com/technet/prodtechnol/windowsserver2003/library/iis/55f71614-ef1b-4015-b9c8-a42c1e700c25.mspx?mfr=true)。 – 2010-11-11 05:17:27

+10

已關閉?瞭解部分或全部答案是否有用?堆棧溢出很奇怪。不得提供所有類型的信息,只有一種特定類型! ;) – 2014-07-03 08:11:51

+1

堆棧溢出的這種奇怪的活動是在我們的幕後。無論如何,這是我最喜歡的網站天才程序員在這個網站。 – 2014-10-01 05:09:48

回答

65

您的網頁由應用程序池提供服務。如果您禁用/停止應用程序池,並且任何人嘗試瀏覽該應用程序,您將獲得服務不可用。它可因多種原因發生......

  1. 您的應用程序可能已崩潰[檢查事件查看器,看看你可以在你的應用/系統日誌中找到事件日誌]

  2. 應用程序可能經常崩潰。如果應用程序池在5分鐘內崩潰了5次[檢查您的應用程序池設置以確保快速失敗],則您的應用程序池將被IIS禁用,並且您將最終收到此消息。

無論哪種情況,問題都是您的工作進程失敗,您應該從崩潰的角度對其進行故障排除。

What is a Crash (technically)... in ASP.NET and what to do if it happens?

3

主要是指這樣的情況:併發請求數太多,並且進一步超過默認的1000個排隊請求。這是有1000個或更多的排隊請求到您的網站。

如果存在長時間運行的任務並因此備份請求隊列,則可能發生這種情況(假設應用中沒有錯誤)。

根據應用程序池的設置方式,您可能會看到這種情況。通常,應用程序池的過程模型有一個稱爲最大工作進程的項目。默認情況下,這是1.如果將其設置爲大於1(通常最大爲硬件上的核心數量的最大值),則可能不會看到發生這種情況。

只要注意,除非該網站非常繁忙,否則不應該看到這一點。如果這樣做,它確實指向長時間運行的任務

+2

對不起Shiv。這是不正確的。 http://support.microsoft。com/kb/943891 – 2010-11-11 03:37:09

+0

什麼是不正確的? – 2010-11-11 03:38:45

+5

你在說什麼會導致服務器太忙的錯誤。問題是服務不可用。這兩個問題是完全不同的。檢查我的答案。 – 2010-11-11 03:39:57

2

最近我們遇到了這個錯誤,根本原因竟然是在IIS服務器上過期的SSL證書。負載平衡器(我們的Web層的前面)發現SSL過期,而不是將HTTP流量處理到其中一個IIS服務器,而是開始顯示此錯誤。所以基本上IIS無法服務器請求,原因完全不同:)

5

如果服務器沒有足夠的內存也會導致此問題。這是我與Godaddy VPS的親身經歷。

相關問題