Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> 電腦軟件教程 >> 服務器技術 >> 關於服務器 >> 深入剖析IIS 6.0(三)

深入剖析IIS 6.0(三)

日期:2017/2/8 10:36:20      編輯:關於服務器

四、應用程序池詳解 
  前面我們了解了IIS 6.0體系結構的關鍵組件,下面來看看有關應用程序池的一些問題。應用程序池的“屬性”對話框有四頁——回收,性能,運行狀況,標識,如圖六所示。在這些選項頁中,最引人注目的恐怕就是“回收”頁,使用該選項頁可以管理工作進程的回收。在工作進程隔離模式中,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再次增加工作進程數量。這一切操作都自動進行,不需要管理員干預。 

圖八 

  兩個新的配置數據屬性——SMPAffinitze和SMPAffinitzeCPUMask——允許配置為工作進程指派的特定處理器:將SMPAffinitized屬性設置成true表示應該把分配給應用程序池的特定工作進程指派給特定的CPU,SMPProcessorAffinityMask屬性用來配置十六進制的處理器掩碼,該十六進制處理器掩碼指出應用程序池中的工作進程應該綁定到哪個CPU。 

  寫到這裡,文章的篇幅似乎已經太長了。本文主要從體系結構的角度介紹IIS 6.0的新特性,並且盡力做到全面,至少要比通常見到的介紹更完善一些。文章的第二部分將涵蓋更多的IIS 6.0新特性,你會發現許多新特性正是自己長久以來盼望的。
 前文介紹了IIS 6.0的安裝和Web服務器的新型體系結構。IIS 6.0新特性的數量多得令人驚奇,其中一些特性是如此引人注目,以至於人們的大部分注意力都被它們吸引。在這第二篇介 紹IIS 6.0的文章中,我們不僅將了解這些已成為“明星”的特性,還將關注一下IIS 6.0各種較少有人注意卻同樣重要的改進之處。 

  一、安全 

  微軟一次又一次地做著同樣一件事情——某個軟件產品出了問題,飽受人們诟病,於是趕緊發布新的版本將問題解決。例如,發布Windows NT 4.0之後,因穩定性問題而飽受批評;於是微軟發布了Windows 2000,新操作系統的穩定性頗受好評,但Win 2K服務器默認安裝的IIS 5.0卻成了巨大的安全隱患,需要下大力氣加以整治才能解決問題。IIS 6.0默認不安裝,如果按照缺省方式安裝,Web服務器只能提供靜態內容服務。因此,從這個角度看,即使以後IIS 6.0應用引擎和組件突然出現了問題,IIS 6.0還是極大地降低了安全風險。另外,Windows Server 2003還有一個新的組策略“禁止安裝IIS”,有了該組策略,我們就可以禁止Windows 2003在活動目錄(AD)森林中禁止不准備作Web服務器用的機器上安裝IIS 6.0,防止網絡上出現根本無用的、不安全的IIS 6.0服務器。不過,目前這個組策略只對Windows 2003服務器有效,不能防止Windows XP Pro和Win 2K的機器安裝IIS 5.0。 

  當然,由於剛剛安裝好的IIS 6.0不支持動態內容,所以出現了第二個人們經常會問的問題:“為什麼我的服務器不能運行ASP?”(前文提到,第一個人們經常會問的問題是:“IIS 6.0可以在Win 2K服務器上運行嗎”?答案是“不”)。要想在IIS 6.0上運行程序,必須使用IIS 6.0的一種新特性,即Web服務擴展,或Web Service Extension(這個名字似乎意味著它與XML Web服務有某種關系,實際情況並非如此。) 

  如果要為某個程序啟用Web服務擴展,首先打開IIS管理器(在“控制面板”→“管理工具”中。以前叫做Internet服務管理器或ISM),如圖一,點擊“添加一個新的Web服務擴展”,啟動向導創建一個新的規則。為規則指定一個名字,然後找到想要啟用的執行文件。另外,\system32\inetsrv下有一個iisext.vbs腳本,它也能夠配置並管理運行帶有IIS 6.0的Windows Server 2003的Web服務擴展、應用程序和單獨的文件。管理員可以使用此腳本來啟用和列出應用程序;添加和刪除應用程

 在圖一中,注意“所有未知ISAPI擴展”和“所有未知CGI擴展”這兩種Web服務擴展。默認情況下,這兩種擴展是禁用的,意味著除非明確地允許一個應用在IIS 6.0上運行,否則它就不能運行。如果一個用戶請求了某個沒有啟用的文件,IIS 6.0將向用戶返回404錯誤——文件或目錄沒有找到,同時在W3SVC日志中記錄“404.2文件或目錄無法找到:鎖定策略禁止該請求”。在IIS 6.0中,404.2和其他子狀態代碼是W3SVC日志文件的一項可選功能,用來幫助排解故障、疑難(IIS 5.0和IIS 4.0中也有子狀態代碼,不過不會在日志文件中記錄,但可以將它們轉到定制的錯誤頁面,便於根據子狀態代碼執行特殊的處理)。IIS 6.0的子狀態代碼很有用,它們提供了描述問題的詳細信息,例如:403.20,禁止訪問:Passport登錄失敗;403.18,禁止訪問:無法在當前應用程序池中執行請求的URL;404.3,文件或目錄無法找到:MIME映射策略禁止該請求;500.19,服務器錯誤:該文件的數據在配置數據庫中配置不正確。所有這些錯誤和其他錯誤都映射到定制的錯誤頁面,錯誤頁面不會把子狀態代碼發送給用戶,攻擊者無法獲知具體的錯誤信息。 
  另一個安全方面的改進之處是IIS 6.0允許指派一個加密服務提供者(Cryptographic Service Provider,CSP),能夠將基於硬件的安全套接字層(SSL)加速器集成到IIS 6.0,從而把加密任務從服務器的通用CPU轉移到了專門為加密操作而優化的專用設備,有利於提高性能和可靠性。 

  二、配置數據 

  在IIS 5.0和IIS 4.0中,配置數據庫采用二進制文件結構,但IIS 6.0放棄了這一做法。IIS 6.0的配置數據由兩個XML文件構成:一個是Metabase.xml,包含IIS 6.0服務器的配置信息;另一個是mbschema.xml,包含配置數據的模式定義。IIS管理器提供了一項新的功能,允許保存配置數據副本,只要右擊Web網站,然後選擇“所有任務”→“將配置保存到一個文件”,然後指定配置數據副本的文件名字和保存路徑即可。按照這種方式保存配置數據時,IIS 6.0利用系統的機器碼(Machine Key)加密配置數據的某些部分,因此,配置數據的副本只對創建該副本的機器有用。 

  不過,在“將配置保存到一個文件”對話框中,我們可以選中“用密碼對配置進行加密”選項,然後指定密碼,用密碼來保護導出的配置文件。如果提供了密碼,IIS 6.0將用密碼來替代機器碼,以後只要提供同一個密碼,就可以將配置數據導入到另一個服務器。另外,我們可以使用命令行腳本iisback.vbs(在systemroot\System32中)創建和管理遠程或本地計算機的IIS配置的備份副本,管理員可以使用此腳本工具創建其IIS配置的備份副本,從備份副本還原IIS配置以及列出和刪除備份副本。 

  有些時候,我們只要保存某個應用程序池、Web網站或虛擬目錄的配置,而不是保存全部的配置信息,這時可以按照如下步驟操作:右擊要保持配置信息的對象,選擇菜單“所有任務”→“將配置保存到一個文件”,如圖二所示,如果准備將配置數據導入到另一個服務器,必須提供加密文件的密碼

Copyright © Windows教程網 All Rights Reserved