2013-11-14 120 views
65

在IIS有兩個區域(當然,多於兩個)可發生回收:IIS:空閒超時VS回收

  1. 「進程模型」節→「空閒超時」下(默認20分鐘)

  • 的 「回收」 節→ 「固定時間間隔」 根據(默認1740分鐘)
  • 我的問題是:

    1. 這兩種方法有什麼區別?
    2. 將它們設置爲0的負面影響是什麼?

    回答

    67

    空閒超時是,如果不採取行動已從您的Web應用程序要求,它的進程將下降,從內存中釋放一切

    循環是在您處理關閉並重新啓動應用程序強制行動,內存泄漏的目的和系統健康

    兩者的負面影響通常是使用你的會議和應用程序狀態丟失,如果你惹到回收時間更快。(登錄用戶等將被註銷,如果他們在哪裏「檢出」所有人都會丟失「這就是爲什麼回收處於如此大的超時值,空閒超時並不重要,因爲無論如何都沒有人登錄;圖20分鐘不採取行動他們還沒有「購物」

    積極的將擺脫空閒時間,因爲如果您的網站不是一個高度活躍的網站,其中的用戶如果每20分鐘有1個用戶可以說,那麼就需要等待它加載,所以一個網站在20分鐘內得到的時間少於1次實際上你會想要增加這個值,因爲網站必須從頭開始重新加載對於每個用戶來說,但是如果你長時間將其設置爲0,代碼中的任何內存泄漏都會超過一定的時間,完全接管服務器。

    +0

    謝謝!這就說得通了。我的主要困境是「第一負荷」需要很長時間。我認爲如果我把這兩個都設爲0,那麼我可以繞過這個。但是,內存泄漏問題是一個問題。有沒有辦法「回收」,然後「強制」一個請求,以便「第一次訪問」在回收後立即結束並完成?或者可能在凌晨2點安排回收,然後在凌晨2:30安排「首次訪問」?有沒有辦法在IIS中做到這一點? – Ricky

    +0

    @瑞奇我也遇到了第一次打老齡問題。您需要將您的應用程序池startMode設置爲AlwaysRunning:http://msdn.microsoft.com/en-us/library/ee677285%28v=azure.10%29.aspx –

    +0

    這對我也很有用:https:/ /www.simple-talk.com/blogs/2013/03/05/speeding-up-your-application-with-the-iis-auto-start-feature/ –

    23

    here:節省系統資源

    一種方法是在一個應用程序池配置工作進程空閒超時 設置。 配置這些 設置後,工作進程將在指定的不活動時間段後關閉。空閒超時的默認值是 20分鐘。

    還要檢查Why is the IIS default app pool recycle set to 1740 minutes?

    如果您的服務器上只有幾個網站,你希望他們 總是加載快那麼這個設置爲零。否則,當您沒有任何流量時,您的應用程序池將終止,因此 它可以在下次訪問時再次啓動。問題是,第一 訪問的應用程序池需要創建一個新的W3wp.exe工作進程 因爲應用程序池需要創建這是緩慢的,ASP.NET或 另一個框架需要加載,然後你應用程序需要加載 。這可能需要幾秒鐘。因此,我設置爲0 每一個機會,我也有,除非它是承載了很多 網站並不總是需要運行一個服務器。

    0

    我已經繼承了一個桌面應用程序,可以調用IIS上的一系列Web服務。 Web服務(也)必須能夠獨立運行定時進程(無需客戶端)。因此他們都有計時器。 Web服務計時器正在關閉(內存泄漏?),所以我們將空閒時間設置爲0,並且定時器保持不變。

    0

    現在IIS已

    Idle Time-out Action : Suspend設置

    掛起只是凍結過程,它是比破壞過程更加高效。