系列文章:
構建高性能.NET應用之配置高可用IIS服務器-第一篇:IIS必須掌握的知識
構建高性能.NET應用之配置高可用IIS服務器-第二篇 IIS請求處理模型
構建高性能.NET應用之配置高可用IIS服務器-第三篇 IIS中三個核心組件的講解(上)
構建高性能.NET應用之配置高可用IIS服務器-第三篇 IIS中三個核心組件的講解(下)
我們在本篇中主要講述的就是“工作進程回收機制”,下面我們就來具體的看看。
本篇文章的議題如下:
工作進程回收機制講解
基於時間的回收機制
基於請求數的回收機制
基於內存使用的回收機制
基於活動狀態的回收機制
工作進程回收機制講解
在IIS6和IIS7的應用程序池中,可以進行一系列的配置來控制如何啟動和停止池中的工作進程。合理的配置可以使得應用程序的可用性更高,特別是出現問題的時候,可以盡可能的減少損失。通過配置,可以使得應用程序池中,一些運行的比較慢或者將要失敗的進程可以被快速的結束,從而使用新的進程來取代它們。
回收機制與啟動機制不同,因為回收機制是屬於比較智能的策略,回收機制允許一個進程在被回收之前先處理完現有的任務,而重啟機制則是強制關閉。使用回收機制,可以在舊的進程還在處理之前的請求的時候,同時開啟新的進程,使得新的請求被新進程處理。
有一點要清楚的就是:當一個工作進程被回收的時候,任何保存在進程中的狀態都會被清理掉,例如session,cache。如果我們要確保運行狀態,例如session,cache等不隨着工作進程的回收而清理,那么就必須采用其他的方式來保存狀態,而不是直接保存在工作進程的內存中,例如,對session可以采用數據庫存儲的方式,對cache可以采用分布式緩存來實現。
下面,我們就來看看工作進程被回收的幾個策略,或者說,什么時候啟動回收機制。
在講解之前,我們可以查看一下應用程序池中回收機制的配置,如圖是IIS7的:
點擊“正在回收”之后,看到如下的界面:
除了上面的看出方式之外,我們還可以進入應用程序池的“高級設置”進程配置,如圖:
然后在“回收”進行設置,如圖:
大家可以看到,我們這里可以基於很多不同的策略進行配置,而這些也使我們本篇文章要講的,下面我們就來具體的看看每一種回收策略以及具體的配置的信息。
基於時間的回收機制
這個回收策略應該是比較容易理解的,就是對時間進行設置,來決定什么時候,或者間隔多長時間來回收。
固定時間收集的間隔
通過這個配置項,我們可以設置應用程序池每個多長的時間(分鍾)去對池中的工作進程進行資源的回收,默認是1760分鍾,也就是一天。如果我們的應用程序在還沒有達到這個時間間隔就失敗了,出現了問題,那么,我們就要把這個值設置為失敗時間的80%。
舉例來說,如果一個應用程序,在1000分鍾之類就失敗,那么它所占用的是無法被回收的,因為回收的時間被設置為1740分鍾之后,如果我們放任這種情況,那么服務器的資源就會被耗盡。此時,我們可以通過多次的數據取樣,獲取平均的失敗時間間隔,假設是1000分鍾,那么這個時候,我們就把這個“固定時間收集的間隔”設置為800分鍾。這個配置在某些情況下可以是一個應急的解決方案,可以快速的搞定資源泄露的問題,但是需要技術人員真正的解決站點運行失敗的原因。
設置回收的時間間隔
另外一種比較回收方法就是設置在一天中的那些時候去進行回收。設置如下:
我們可以控制在哪個時間點去進行回收,特別實在診斷問題的時候。如果我們發現在某個點,站點總是不能出來請求或者資源的使用過多(例如,站點訪問高峰值的時候),我們可以通過設置,使得資源盡快的被回收。
今天就到這里,下篇接着講述!
系列文章鏈接:
IIS負載均衡-Application Request Route詳解第一篇: ARR介紹
IIS負載均衡-Application Request Route詳解第二篇:創建與配置Server Farm
IIS負載均衡-Application Request Route詳解第三篇:使用ARR進行Http請求的負載均衡(上)
IIS負載均衡-Application Request Route詳解第三篇:使用ARR進行Http請求的負載均衡(下)
IIS負載均衡-Application Request Route詳解第四篇:使用ARR實現三層部署架構
負載均衡原理與實踐詳解 第三篇 服務器負載均衡的基本概念-網絡基礎
負載均衡原理與實踐詳解 第九篇 服務器負載均衡技術進階-會話保持(上)