IIS6.0架構(二)
IIS6.0架構(二)
閱讀次數:135 次 來源:admin 發布時間:4.1.概述
W3Core又稱為工作進程(Worker Process)或W3WP.exe。在默認情況下,IIS 6.0是在工作進程隔離模式下運行的。對于每一個web應用程序,IIS6.0都有一個或多個工作進程實例來運行它。
在W3SVC的管理和監控下,W3Core負責對用戶的web應用程序進行管理。它的主要功能是在一個名為W3Core.dll的動態聯接庫中實現的。在IIS5.0隔離模式下,這個DLL可以被加載到Inetinfo.exe進程中;在應用程序隔離模式下,這個DLL可以被加載到W3WP.exe進程中。
4.2.用戶web應用程序(web Application),應用程序池(Application Pools)與工作進程(Worker Process)之間的關系
ü 在IIS6.0中,每一個用戶web應用程序都會運行在一個應用程序池中。這個應用程序池可以是IIS默認的應用程序池,也可以是用戶自定義的應用程序池。
ü 作為一個宿主程序,每個應用程序池中都會運行著一個或者多個用戶web應用程序。
ü 在應用程序池中,存在著一個或者多個工作進程。每個工作進程只能屬于一個特定的應用程序池,由這些工作進程來負責管理應用程序池中的用戶web應用程序。
他們的結構關系如下圖所示:
(圖 16)應用程序池
如果,我們將應用程序池比喻成為一座公寓,那么在公寓里面的那些住戶就是一個個web應用程序,而公寓的物業的管理人員就是工作進程。如果公寓比較大,住戶比較多,那么就可能需要有多個物業管理人員。也就是說,每個應用程序池里面可以有多個工作進程在工作。
4.3.W3Core在IIS安全性方面的考慮
在IIS6.0或更早的版本中,用戶的web應用程序是允許運行在進程內的。他們使用系統(System)帳戶運行。這個系統帳戶是:IWAM_計算機名。因為是在系統帳戶下運行,所以這些web應用程序有比較高的權限。
在IIS6.0中,默認情況下,w3wp.exe的所有實例都在一個權限有限的“網絡服務”帳戶下運行。如下圖所示:
(圖 17)網絡帳戶的配置
當然,用戶可以在需要的情況下為W3WP.exe配置新的運行帳戶。
這樣做的好處是:一旦一個web應用被攻擊成功,攻擊者只能訪問當時運行的工作進程的帳戶有權訪問的資源,默認的網絡服務帳戶不能寫入Inetpub文件夾,執行權限也極其有限,所以在一定程度上提高了IIS的安全性。
4.4.W3Core在IIS性能方面的考慮
在IIS5.0中,由WWW服務負責將用戶的http請求轉發給web應用程序處理,并負責將web應用程序處理的結果返回給用戶。
這一處理的流程如下圖所示:
(圖18)用戶請求的處理過程
在這個過程中,數據需要經過多次傳遞和轉化,這些傳遞和轉換主要包括:
ü 內核模式到用戶模式的轉化。TCPIP.sys運行在內核模式下,IIS運行在用戶模式下。這個轉化一項系統開銷很大的操作。
ü IIS負責對用戶的http請求進行監聽。
ü 用戶http請求的需址過程。即,確定由哪個web應用程序來處理用戶的請求。這一工作需要IIS來完成。
因此,IIS5.0的這種對用戶的http請求的處理過程對IIS的性能有很大的影響。
在IIS6.0中,除了將WWW服務從Inetinfo.exe進程中獨立了出來,作為一個單獨的組件(W3SVC)來處理外,還將接收用戶http請求的功能從W3SVC中分離了出來。接收用戶http請求的功能現在由W3Core來實現。W3SVC僅負責對W3Core進行創建和監控,不再負責對用戶http請求進行處理。因此,在處理用戶的http請求的時候,內核模式下的HTTP.SYS直接監聽用戶的http請求,并將用戶的http請求直接轉發給W3Core。并由W3Core所管理的web應用程序來處理用戶的http請求。
這一操作過程如下圖所示:
(圖 19)用戶請求的處理過程
通過這種方式,IIS6.0中處于內核模式下的HTTP.SYS直接與用戶應用程序通信。這就縮短了數據的請求、轉發過程,提高了IIS的性能。
5. 應用程序池5.1.概述
作為宿主程序,在應用程序池中存在著一個或者多個web應用程序,并且由一個或者多個工作進程來管理這些web應用程序。在W3SVC的監控和管理下,應用程序池主要負責如下四方面的工作。
? 回收
? 性能
? 運行狀況
? 標識
關于對這四方面的配置,可以在應用程序池的屬性頁對話框中進行。具體路徑如下:開始菜單->管理工具->Internet信息服務管理器->應用程序池->屬性。
5.2.應用程序池的回收功能
在工作進程隔離模式中,通過配置,IIS可以定期重新啟動應用程序池中的工作進程。通過這種機制IIS可以更好地管理那些有錯誤的工作進程。在默認情況下,當IIS回收一個應用程序池的時候,它會使用一種稱為overlapped recycle的回收技術。
在這種回收模式下,失敗的工作進程將不會接收新的http請求,當它處理完存儲在請求隊列中的所有剩余的http請求后,這個進程則正常關閉;或者如果在達到了配置的時間限制、請求數、設置的時間計劃,或當達到指定的內存用量限制后仍沒有關閉,則明確地終止進程。默認情況下,應用程序池每隔1740分鐘(29小時)回收一次。
為了防止服務中斷,在失敗的工作進程繼續處理存儲在請求隊列中的剩余的請求的時候,IIS啟動了新的工作進程,所有新的http請求都會由給這個新的工作進程處理。在此期間,TCP/IP連接不會丟失。
關于應用程序池在他方面的功能在前面的章節中已有詳細的介紹,這里就不再過多介紹了。
6. 應用程序隔離模式6.1.概述如果你的服務器是從windows2000升級到windows2003,那么IIS 5.0也會被升級到IIS6.0,這種情況下,IIS是運行在IIS5.0隔離模式下的;如果你的服務器是新安裝的windows2003,那么IIS是運行在工作進程隔離模式下的。因此,在IIS6.0中有兩種應用程序隔離模式:IIS5隔離模式和工作進程隔離模式。
6.2.應用程序隔離的目的
作為一個web應用程序運行的平臺,在IIS中將會運行著很多個web應用程序,每個web應用程序的穩定性也各不相同。為了保證IIS的高度穩定性和可靠性,要求在IIS中運行的各個web應用程序彼此相互獨立,互不影響。也就是說某一個web應用程序的崩潰不會導致其他web應用程序的崩潰或者整個IIS的崩潰。因此,在IIS中提出了應用程序隔離的概念。
6.3.在IIS5.0中的做法
在IIS5.0中,對應用程序的隔離主要有如下幾個要點:
? 還不存在HTTP.SYS驅動程序,對用戶http請求的監聽功能由Inetinfo.exe進程實現。
? WWW服務位于Inetinfoexe進程之中。所以WWW服務的穩定性也會影響到整個IIS的穩定性。
? 提供了三個不同級別的應用程序保護,即低級別,中級別,高級別。關于應用程序保護級別的詳細情況,請見。。。。節。
? 存在進程之間互相通信的問題,加大了系統開銷。
IIS5.0中,對應用程序進行隔離的結構如下圖所示:
(圖 20)IIS 5.0的應用程序隔離情況
當一個http請求到底以后,首先由TCPIP.SYS將請求傳遞給Inetinfo.exe中的WWW服務,然后再由WWW服務轉發給DLLHost.exe進程中的web應用程序處理。在這里就存在了一個進程之間通信的問題,必然會引起一些大的系統開銷。
WWW服務僅僅負責對DLLHost.exe宿主進程地創建。當這些宿主進程創建完畢后,WWW服務就不會再對它進行管理。
根據應用程序保護級別的不同,web應用程序的隔離程度也各不相同。在低級別的隔離模式中,web應用程序的運行效率最高,但是,由于它直接運行在WWW服務的進程之中,所以它對整個IIS的穩定性的影響也最大。在高級別的隔離模式中,每一個web應用程序都運行于一個屬于它的宿主進程(DLLHost.exe)中,雖然這個web應用程序的運行效率降低了,但是,由于它被隔離在一個特定的宿主進程之中運行,所以它對整個IIS系統的穩定性的影響也減小了,一個web應用
程序的崩潰不會影響到其他web應用程序以及整個IIS系統的運行。
6.4.IIS5.0隔離模式
在IIS6.0中,為了考慮應用程序的兼容性,因為某些web應用程序可能依賴于IIS5.0的架構。比如,某些Web應用,特別是有些Internet Server API(ISAPI)篩選器,在進程外運行時可能會遇到問題。在IIS 5.0和IIS 4.0中,ISAPI篩選器總是運行在進程Inetinfo.exe之內的,它們的設計目標本來就不是運行在進程之外的,正是由于這些原因,某些篩選器在IIS 6.0的工作進程隔離模式中運行時可能會出現問題。因此,IIS6.0提供了另一種應用程序隔離模式:IIS5.0隔離模式。IIS5.0隔離模式的結構圖如下圖所示:
(圖 21)IIS5.0隔離模式
在IIS6.0中,IIS5.0隔離模式主要有如下幾個要點:
? 在內核模式中實現了HTTP.SYS驅動程序,由它負責對http請求的監聽。
? WWW服務從Inetinfo.exe進程之中獨立了出來。并且由WWW服務負責對宿主進程(DLLHost.exe)的創建和管理。與IIS5.0不同,WWW服務創建了宿主進程DLLHost.exe之后還負責對它進行管理,比如監聽它的狀態,運行情況等。
? WWW服務負責對http請求進行轉發。當用戶的http請求從HTTP.SYS驅動程序傳遞過來以后,由WWW服務負責將這個請求傳遞個相關的web應用程序處理,并將處理結果返回。
Web應用程序允許運行在Inetinfo.exe進程之中,也可以運行在DLLHost.exe宿主進程之中。
6.5.工作進程隔離模式工作進程隔離模式是IIS6.0所提供的全新的應用程序隔離模式。它的組成結構如下圖所示:
(圖 22)工作進程隔離模式
在IIS6.0中,工作進程隔離模式主要有如下幾個要點:
? 在內核模式中實現了HTTP.SYS驅動程序,由它負責對http請求的監聽。
? WWW服務從Inetinfo.exe進程之中獨立了出來,它運行在了新的進程SVCHost.exe之中。
? WWW服務只負責對應用程序池的創建和管理。
? HTTP.SYS驅動程序直接與應用程序池中的工作進程(Worker Process)通信。
? 一個應用程序池中可以運行一個或者多個web應用程序,并且由一個或者多個工作進程來管理它們。
? 工作進程(Worker Process)之中實現了原來WWW服務的功能:接收HTTP.SYS轉發過來的用戶http請求。WWW服務將不再負責這部分工作。
7. Web園
在一個應用程序池中存在著一個或者多個web應用程序,并且由這個應用程序池中一個或者多個工作進程來管理這些web應用程序。如果在一個應用程序池中存在著多個工作進程的話,那么就形成了一個web園(Web Gardens)。
關于Web園的配置,如下圖所示,只需要將“最大工作進程數”的值設置為大于1的值就可以了。
(圖 23)配置Web園
這樣做的好處是:提高了處理用戶http請求的效率;當一個工作進程壞掉之后,其他的工作進程仍然能夠處理用戶的請求,保證了系統的穩定性和可靠性。