asp.net 的進程模式
發表于:2007-06-30來源:作者:點擊數:
標簽:
asp .net 的進程模式 使用進程模型 進程模型配置 被動進程回收 主動進程回收 記錄進程模型事件 啟用網絡園 本節小結 -------------------------------------------------------------------------------- 對 ASP.NET 框架應用程序最重要的要求之一是 可靠性
asp
.net 的進程模式
使用進程模型
進程模型配置
被動進程回收
主動進程回收
記錄進程模型事件
啟用網絡園
本節小結
--------------------------------------------------------------------------------
對 ASP.NET 框架應用程序最重要的要求之一是
可靠性。在
服務器進程內運行的應用程序(在 IIS 中為 Inetinfo.exe)的結構沒有為生成可繼續長時間運行的可靠應用程序提供堅實的基礎。有太多的資源在進程級別上共享,而且一個錯誤便使整個服務器進程崩潰的事情也太容易發生。
為解決此問題,ASP.NET 提供了一個進程外執行模型,保護服務器進程不受用戶代碼的干擾。它還使您能夠對進程的生存期應用直觀推斷法,以提高 Web 應用程序的可用性。通過使用異步進程間通訊,可以在
性能、可縮放性和可靠性之間實現最佳平衡。
進程模型配置
進程模型設置在計算機的根配置文件 Machine.config 中公開。配置節命名為 <processModel>,如下例所示。默認情況下啟用進程模型 (enable="true")。
<processModel
enable="true"
timeout="infinite"
idleTimeout="infinite"
shu
tdownTimeout="0:00:05"
requestLimit="infinite"
requestQueueLimit="5000"
memoryLimit="80"
webGarden="false"
cpuMask="0xffffffff"
userName=""
password=""
logLevel="errors"
clientConnectedCheck="0:00:05"
/>
這些設置中的大多數控制何時啟動新的輔助進程為請求服務(正常取代舊的輔助進程)。進程模型支持兩種類型的回收:主動和被動。
被動進程回收
當進程行為失?;驘o法為請求服務時,發生被動進程回收。進程一般會顯示可檢測到的征兆,如死鎖、訪問沖突、內存泄漏等,以便觸發進程回收??墒褂孟卤碇忻枋龅呐渲迷O置來控制觸發重新啟動進程所依據的條件。
設置 說明
requestQueueLimit 處理死鎖條件。此 DWORD 值被設置為隊列中允許的最大請求數,超過這個數則認為輔助進程行為失常。當超出此數值時,會啟動新的進程并重新分配請求。默認值為 5000 個請求。
memoryLimit 處理內存泄漏條件。此 DWORD 值被設置為輔助進程可使用的物理內存的百分比,超過這個數則認為輔助進程行為失常。當超出此百分比時,會啟動新的進程并重新分配請求。默認值為 80%。
shutdownTimeout 指定輔助進程自身正常關閉所用的時間(時:分:秒格式的字符串值)。如果超時到期,ASP.NET ISAPI 將關閉輔助進程。默認值為“00:00:05”。
主動進程回收
主動進程回收定期重新啟動輔助進程,即使該進程十分正常。在這可能是防止服務由于進程模型無法檢測到的條件而被拒絕的有用方法。進程可在超過特定的請求數后或超時期限已到時重新啟動。
設置 說明
timeout 時:分:秒格式的字符串值,用于配置時間限制,超過此限制后將啟動新的輔助進程以取代當前進程。默認值為 infinite,此關鍵字指示不應重新啟動進程。
idleTimeout 時:分:秒格式的字符串,用于配置不活動的時間量,超過這個量后輔助進程將自動關閉。默認值為 infinite,此關鍵字指示不應重新啟動進程。
requestLimit 設置為請求數的 DWORD 值,超過這個數后將啟動新的輔助進程以取代當前進程。默認值為 infinite,此關鍵字指示不應重新啟動進程。
記錄進程模型事件
進程模型可在發生進程循環時向 Windows 事件日志寫入事件。這由 <processModel> 配置節中的 logLevel 屬性控制。
設置 說明
logLevel 控制向事件日志中記錄進程循環事件。其值可以是:
All:記錄所有進程循環事件。
None:不記錄事件。
Errors:僅記錄意外事件。
發生循環事件時,如果為該事件啟用了記錄,則向應用程序事件日志寫入以下事件。
關閉原因 事件日志類型 說明
Unexpected 錯誤 ASP.NET 輔助進程已意外關閉。
RequestQueueLimit 錯誤 因為超出了請求隊列限制,ASP.NET 輔助進程已重新啟動。
RequestLimit 信息 因為超出了請求限制,ASP.NET 輔助進程已重新啟動。
Timeout 信息 因為超時間隔已到,ASP.NET 輔助進程已重新啟動。
IdleTimeout 信息 因為空閑超時間隔已到,ASP.NET 輔助進程已關閉。
MemoryLimitExceeded 錯誤 因為超出了進程的內存限制,ASP.NET 輔助進程已重新啟動。
啟用網絡園
進程模型幫助啟用多處理器計算機上的可縮放性,將工作分發給多個進程(每個 CPU 一個),并且每個進程都將處理器關系設置為其 CPU。這樣就消除了處理器間的鎖爭用,是大型 SMP 系統的理想選擇。此技術稱為 Web 園藝。啟用網絡園的配置設置在下表中列出。注意,這些設置僅在服務器重新啟動后才生效。為使此更改發生,IIS 必須循環。
設置 說明
webGarden 控制 CPU 關系。True 指示進程應同相應的 CPU 有關。默認值為 False。
cpuMask 控制進程的數目和網絡園的工作機制。為每個 CPU 啟動一個進程,其中將掩碼中的相應位設置為 1。當 UseCPUAffinity 設置為 0 時,cpuMask 設置僅控制輔助進程的數目(設置為 1 的位數)。允許的最大輔助進程數是 CPU 的數目。默認情況下,啟用所有的 CPU,并啟動同 CPU 數目相同的輔助進程。默認值為 0xffffffff。
您應了解 Web 園藝的一些副作用:
如果應用程序使用會話狀態,則它必須挑選一個進程外提供程序(NT 服務或
SQL)。
應用程序狀態和應用程序靜態基于每個進程,而不是基于每臺計算機。
緩存基于每個進程,而不是基于每臺計算機。
本節小結
ASP.NET 提供了一個進程外執行模型,使服務器進程免受用戶代碼的干擾。它還使您能夠對進程的生存期應用直觀推斷法,以提高 Web 應用程序的整體可用性。
<processModel>設置在計算機的 Machine.config 文件的根配置文件中公開。默認情況下啟用進程模型。
進程模型支持兩種類型的回收:主動和被動。當進程行為失?;驘o法為請求服務時,發生被動進程回收。主動進程回收定期重新啟動輔助進程,即使該進程可能十分正常。
進程模型可在發生進程循環時向 Windows 事件日志寫入事件。這由 <processModel> 配置節中的 log-level 屬性控制。
進程模型幫助啟用多處理器計算機上的可縮放性,將工作分發給多個進程(每個 CPU 一個),并且每個進程都將處理器關系設置為其 CPU。此技術稱為 Web 園藝。
原文轉自:http://www.kjueaiud.com