因為應用程式集區中的應用程式與其他應用程式被背景工作處理序邊界分隔,所以某個應用程式集區中的應用程式不會受到其他應用程式集區中應用程式所產生的問題的影響。
Windows 2003同時支援兩種工作模式,預設為ISS 6.0背景工作處理序隔離模式。背景工作處理序隔離模式防止一個應用程式或網站停止了而影響另一個應用程式或網站,大大增強了IIS的可靠性。那麼如何設定兩種工作模式呢?
啟動IIS管理器,右擊網站,選擇“屬性”,開啟屬性對話方塊(圖1)。
在IIS 6.0背景工作處理序隔離模式下,所有的應用程式代碼都在隔離環境中運行,它們是如何進行隔離的呢?Windows 2003新增了應用程式集區,背景工作處理序隔離模式允許客戶建立多個應用程式集區,每個應用程式集區都可以有不同的配置。因為這些應用程式集區直接從核心(而非WWW服務)接收它們的請求,所以效能和可靠性得到了增強。要隔離運行在同一台電腦上但屬於不同網站的Web應用程式,需要為每個網站建立單獨的應用程式集區。
建立應用程式集區
在IIS管理器中,開啟本機電腦,按右鍵“應用程式集區”,選擇建立“應用程式集區” (必須在背景工作處理序隔離模式下才能建立應用程式集區) 。“應用程式集區名稱”框中,輸入新的應用程式集區名稱。如果在“應用程式集區 ID”框中出現的 ID (如:AppPool #1)不是您想要的,可進行重新命名。如果您單擊了“將現有應用程式集區作為模板”,請在“應用程式集區名稱”框中按右鍵想要用來作為模板的應用程式集區。最後單擊[確定]。
指派應用程式集區
在 IIS 管理器中,按右鍵您要為其指派應用程式集區的應用程式,然後單擊“屬性”。 單擊“主目錄”選項卡,確認您正在指派的目錄或虛擬目錄的“應用程式名稱”是否已被填寫。如果“應用程式名稱”框尚未被填寫,請單擊“建立”,然後輸入名稱。
在“應用程式集區”列表框中,選擇您想要為其指派的應用程式集區的名稱。最後單擊[確定]。
一起來看看有關應用程式集區的一些問題。應用程式集區的“屬性”對話方塊有四頁——回收,效能,健全狀態,標識,六所示。在這些選項頁中,最令人信服的恐怕就是“回收”頁,使用該選項頁可以管理背景工作處理序的回收。在背景工作處理序隔離模式中,IIS可以配置成定期重新啟動應用程式集區中的背景工作處理序,從而更好地管理那些有錯誤的背景工作處理序。這確保了池中的應用程式運行正常,並且可以恢複丟失的系統資源。為了回收背景工作處理序,失敗背景工作處理序接收請求的能力將被限制,直到它處理完儲存在請求隊列中的所有剩餘請求。為了排出當前請求,可以給予進程配置限制。同一命名空間組的替換背景工作處理序在舊的背景工作處理序停止前啟動,從而防止服務中斷。舊的進程完成其未決的請求,然後正常關閉,或者如果在達到了配置的時間限制、請求數、設定的時間計劃,或當達到指定的記憶體用量限制後仍沒有關閉,則明確地終止進程。預設情況下,應用程式集區每隔1740分鐘(29小時)回收一次。
W3SVC根據“健全狀態”頁的選項來判斷應用程式集區運行是否正常,包括:每隔指定的時間Ping背景工作處理序,時間按秒計,預設值30秒啟動時間限制(背景工作處理序必須在指定的時間內開始)關閉時間限制(背景工作處理序必須在指定的時間內關閉)是否啟動快速失敗保護(如果在指定的時間段內一定數目的背景工作處理序發生失敗,則禁用應用程式集區)。另外,ISAPI應用程式(包括ASP.NET和asp.dll)可以聲明自己不再適合提供服務,要求回收。
預設情況下,當IIS 6.0回收一個池時,它會使用一種稱為overlapped recycle的回收技術。在這種回收模式下,失敗的背景工作處理序仍會保持運行狀態,同時建立一個新的背景工作處理序。IIS 6.0把新傳入的請求傳遞給新的背景工作處理序,但不拆除老的背景工作處理序,直至老的背景工作處理序處理完它隊列中的請求,或者遇到逾時錯誤。在此期間,TCP/IP串連不會丟失,因為有http.sys保持著串連的有效性。當失敗的背景工作處理序逾時出錯時,下一個請求傳遞給背景工作處理序的請求是新的請求,因此原來儲存在進程中的會話資訊就會丟失。所有這類回收操作都自動進行,無需管理員幹預,而且在大多數情況下,不會造成明顯的服務中斷現象。如有必要,可以將配置資料屬性LogEventOnRecycle的值設定為1,指示W3SVC執行回收操作時產生一條事件記錄記錄。
對於那些不能以多個執行個體啟動並執行應用程式,overlapped recycle回收技術可能引起問題。如果遇到這類問題,可以將配置資料屬性DissallowOverlappingRotation的值設定成True(1),關閉某個應用程式集區回收操作時的進程“重疊”現象。另外,對於失敗的背景工作處理序,有時我們可能不想將它拆除,仍舊保留該進程,以便檢測和尋找發生問題的根源,這時可以將配置資料屬性OrphanActionExe設定成執行檔案的名字,使得背景工作處理序成為“孤兒”時執行檔案仍保持運行狀態。
另一個與應用程式集區有關的特性是,IIS 6.0允許將應用程式集區配置成一個Web園(Web Garden)。要理解Web園的概念,可以設想這樣一種情形:假設有一個IIS 5.0伺服器和三個Web網站,每一個Web網站運行著相同的應用程式,如果IIS 5.0能夠自動按照圓形迴圈的模式將請求依次發送給這些功能上等價、實際上分離的Web網站,將負載分離到三個不同的進程,就可以構成一個小型的Web農場(Web Farm)——這就是Web園。
在IIS 6.0的Web園中,我們不必建立額外的Web網站,只要指定用於某個應用程式集區的背景工作處理序的數量就可以了。具體的配置步驟是:開啟應用程式集區的“屬性”對話方塊,轉到“效能”頁,在“Web園”下面的“最大背景工作處理序數”輸入框中輸入進程數量,八。當伺服器的負載較小,不需要額外的背景工作處理序時,IIS 6.0在一定的時間後(預設20分鐘,可配置)自動縮減實際的背景工作處理序數量如果負載變大,需要額外的背景工作處理序,IIS 6.0再次增加背景工作處理序數量。這一切操作都自動進行,不需要管理員幹預。
圖6
兩個新的配置資料屬性——SMPAffinitze和SMPAffinitzeCPUMask——允許配置為背景工作處理序指派的特定處理器:將SMPAffinitized屬性設定成true表示應該把分配給應用程式集區的特定背景工作處理序指派給特定的CPU,SMPProcessorAffinityMask屬性用來配置十六進位的處理器掩碼,該十六進位處理器掩碼指出應用程式集區中的背景工作處理序應該綁定到哪個CPU。