在IIS有兩個區域(當然,多於兩個)可發生回收:IIS:空閒超時VS回收
- 「進程模型」節→「空閒超時」下(默認20分鐘)
和
- 的 「回收」 節→ 「固定時間間隔」 根據(默認1740分鐘)
- 這兩種方法有什麼區別?
- 將它們設置爲0的負面影響是什麼?
我的問題是:
在IIS有兩個區域(當然,多於兩個)可發生回收:IIS:空閒超時VS回收
和
我的問題是:
空閒超時是,如果不採取行動已從您的Web應用程序要求,它的進程將下降,從內存中釋放一切
循環是在您處理關閉並重新啓動應用程序強制行動,內存泄漏的目的和系統健康
兩者的負面影響通常是使用你的會議和應用程序狀態丟失,如果你惹到回收時間更快。(登錄用戶等將被註銷,如果他們在哪裏「檢出」所有人都會丟失「這就是爲什麼回收處於如此大的超時值,空閒超時並不重要,因爲無論如何都沒有人登錄;圖20分鐘不採取行動他們還沒有「購物」
積極的將擺脫空閒時間,因爲如果您的網站不是一個高度活躍的網站,其中的用戶如果每20分鐘有1個用戶可以說,那麼就需要等待它加載,所以一個網站在20分鐘內得到的時間少於1次實際上你會想要增加這個值,因爲網站必須從頭開始重新加載對於每個用戶來說,但是如果你長時間將其設置爲0,代碼中的任何內存泄漏都會超過一定的時間,完全接管服務器。
從here:節省系統資源
一種方法是在一個應用程序池配置工作進程空閒超時 設置。 配置這些 設置後,工作進程將在指定的不活動時間段後關閉。空閒超時的默認值是 20分鐘。
還要檢查Why is the IIS default app pool recycle set to 1740 minutes?
如果您的服務器上只有幾個網站,你希望他們 總是加載快那麼這個設置爲零。否則,當您沒有任何流量時,您的應用程序池將終止,因此 它可以在下次訪問時再次啓動。問題是,第一 訪問的應用程序池需要創建一個新的W3wp.exe工作進程 因爲應用程序池需要創建這是緩慢的,ASP.NET或 另一個框架需要加載,然後你應用程序需要加載 。這可能需要幾秒鐘。因此,我設置爲0 每一個機會,我也有,除非它是承載了很多 網站並不總是需要運行一個服務器。
我已經繼承了一個桌面應用程序,可以調用IIS上的一系列Web服務。 Web服務(也)必須能夠獨立運行定時進程(無需客戶端)。因此他們都有計時器。 Web服務計時器正在關閉(內存泄漏?),所以我們將空閒時間設置爲0,並且定時器保持不變。
現在IIS已
Idle Time-out Action : Suspend
設置
掛起只是凍結過程,它是比破壞過程更加高效。
謝謝!這就說得通了。我的主要困境是「第一負荷」需要很長時間。我認爲如果我把這兩個都設爲0,那麼我可以繞過這個。但是,內存泄漏問題是一個問題。有沒有辦法「回收」,然後「強制」一個請求,以便「第一次訪問」在回收後立即結束並完成?或者可能在凌晨2點安排回收,然後在凌晨2:30安排「首次訪問」?有沒有辦法在IIS中做到這一點? – Ricky
@瑞奇我也遇到了第一次打老齡問題。您需要將您的應用程序池startMode設置爲AlwaysRunning:http://msdn.microsoft.com/en-us/library/ee677285%28v=azure.10%29.aspx –
這對我也很有用:https:/ /www.simple-talk.com/blogs/2013/03/05/speeding-up-your-application-with-the-iis-auto-start-feature/ –