构建高性能.NET应用之配置高可用IIS服务器-第四篇 IIS常见问题之:工作进程回收机制(上)
? ? ??通過三篇文章的普及,相信大家對IIS應該有了一個基本的了解。那么從本篇文章開始,我們就開始進入IIS一些比較實際的話題:如何配置IIS,使得其性能盡可能的高。
??????? 我們在本篇中主要講述的就是“工作進程回收機制”,下面我們就來具體的看看。
??????? 本篇文章的議題如下:
??????? 工作進程回收機制講解
基于時間的回收機制
??????? 基于請求數(shù)的回收機制
??????? 基于內(nèi)存使用的回收機制
??????? 基于活動狀態(tài)的回收機制
??????? ?
工作進程回收機制講解
在IIS6和IIS7的應用程序池中,可以進行一系列的配置來控制如何啟動和停止池中的工作進程。合理的配置可以使得應用程序的可用性更高,特別是出現(xiàn)問題的時候,可以盡可能的減少損失。通過配置,可以使得應用程序池中,一些運行的比較慢或者將要失敗的進程可以被快速的結束,從而使用新的進程來取代它們。
回收機制與啟動機制不同,因為回收機制是屬于比較智能的策略,回收機制允許一個進程在被回收之前先處理完現(xiàn)有的任務,而重啟機制則是強制關閉。使用回收機制,可以在舊的進程還在處理之前的請求的時候,同時開啟新的進程,使得新的請求被新進程處理。
有一點要清楚的就是:當一個工作進程被回收的時候,任何保存在進程中的狀態(tài)都會被清理掉,例如session,cache。如果我們要確保運行狀態(tài),例如session,cache等不隨著工作進程的回收而清理,那么就必須采用其他的方式來保存狀態(tài),而不是直接保存在工作進程的內(nèi)存中,例如,對session可以采用數(shù)據(jù)庫存儲的方式,對cache可以采用分布式緩存來實現(xiàn)。
下面,我們就來看看工作進程被回收的幾個策略,或者說,什么時候啟動回收機制。
在講解之前,我們可以查看一下應用程序池中回收機制的配置,如圖是IIS7的:
? ? ? ? ? ? ? ? ? ? ? ? ? ?
點擊“正在回收”之后,看到如下的界面:
除了上面的看出方式之外,我們還可以進入應用程序池的“高級設置”進程配置,如圖:
然后在“回收”進行設置,如圖:
大家可以看到,我們這里可以基于很多不同的策略進行配置,而這些也使我們本篇文章要講的,下面我們就來具體的看看每一種回收策略以及具體的配置的信息。
基于時間的回收機制
??? 這個回收策略應該是比較容易理解的,就是對時間進行設置,來決定什么時候,或者間隔多長時間來回收。
固定時間收集的間隔
??? 通過這個配置項,我們可以設置應用程序池每個多長的時間(分鐘)去對池中的工作進程進行資源的回收,默認是1760分鐘,也就是一天。如果我們的應用程序在還沒有達到這個時間間隔就失敗了,出現(xiàn)了問題,那么,我們就要把這個值設置為失敗時間的80%。
舉例來說,如果一個應用程序,在1000分鐘之類就失敗,那么它所占用的是無法被回收的,因為回收的時間被設置為1740分鐘之后,如果我們放任這種情況,那么服務器的資源就會被耗盡。此時,我們可以通過多次的數(shù)據(jù)取樣,獲取平均的失敗時間間隔,假設是1000分鐘,那么這個時候,我們就把這個“固定時間收集的間隔”設置為800分鐘。這個配置在某些情況下可以是一個應急的解決方案,可以快速的搞定資源泄露的問題,但是需要技術人員真正的解決站點運行失敗的原因。
設置回收的時間間隔
??? 另外一種比較回收方法就是設置在一天中的那些時候去進行回收。設置如下:
??? 我們可以控制在哪個時間點去進行回收,特別實在診斷問題的時候。如果我們發(fā)現(xiàn)在某個點,站點總是不能出來請求或者資源的使用過多(例如,站點訪問高峰值的時候),我們可以通過設置,使得資源盡快的被回收。?
??? 今天就到這里,下篇接著講述!
相關內(nèi)容
構建高性能.NET應用之配置高可用IIS服務器-第一篇:IIS必須掌握的知識
構建高性能.NET應用之配置高可用IIS服務器-第二篇 IIS請求處理模型
構建高性能.NET應用之配置高可用IIS服務器-第三篇 IIS中三個核心組件的講解(上)
作者介紹:汪洋,哪合伙CEO,曾大漢電子商務有限公司首席技術官,副總裁,負責公司產(chǎn)品、技術、運營,參與商業(yè)模式設計。華康移動醫(yī)療前CTO,副總裁,首席架構師。微軟MVP
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
贊賞
人贊賞
總結
以上是生活随笔為你收集整理的构建高性能.NET应用之配置高可用IIS服务器-第四篇 IIS常见问题之:工作进程回收机制(上)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 构建高性能.NET应用之配置高可用IIS
- 下一篇: [.NET Core].NET Core