Metabase.xml文件是IIS的設置文件,每個網站已經IIS的設置都在這個下面,所以在修改這個文件之前要把這個文件備份一下。這個文件在C:/WINDOWS/system32/inetsrv/Metabase.xml,前篇的啟用IIS的靜態壓縮也可以在文件下設置,也可以在IIS的圖形界面下設置。
對IIS的性能優化要對癥下藥,對不同的網站有不同的優化方法,在分析你網站的特點的情況下,然后對Metabase.xml文件里面的參數進行調節,提高IIS的性能。
AppAllowDebugging
作用:指定在服務器上是否啟用ActiveServerPage(ASP)調試。在啟用此屬性的情況下,IIS應用程序線程是序列化的;對于每個應用程序,一次只允許執行一個線程。序列化線程會對Web服務器性能產生負面影響。建議您在所有產品服務器上將此屬性設置為false。
注意:當允許進行服務器端調試時,將串行化IIS應用程序線程:對于每個應用程序,同一時間只允許運行一個線程。這會影響繁忙站點的服務器性能。
AspBufferingOn
作用:該屬性指定ASP應用程序的輸出是否需要緩沖。如果將該值設置為true,在緩沖區刷新到客戶端瀏覽器之前,應用程序的所有輸出都集中到緩沖區里。啟用了緩沖,ASP應用程序就必須在客戶端瀏覽器收到任何輸出前處理完所有的ASP腳本。因此,啟用了緩沖的應用程序比沒有啟用緩沖的似乎要慢一些,盡管啟用緩沖的腳本所用的總時間更少。所以,如果啟用了緩沖,那么請考慮使用ASP內置的Response對象的Flush方法在處理腳本的同時將內容一份份的傳遞給用戶。
注意:如果將該屬性設置為false,那么ASP腳本的輸出一旦可用就會輸出到客戶端瀏覽器。如果沒有啟用緩沖,那么所有修改現有的HTTP頭或生成新頭的方法必須在內容的主體傳送到客戶端瀏覽器之前執行。如果啟用了緩沖,這個限制就沒有必要了。建議您在所有產品服務器上將此屬性設置為true。
AspQueueConnectionTestTime
作用:IIS將所有的ASP請求放置到隊列中。如果請求在隊列中等待的時間比AspQueueConnectionTestTime屬性指定的時間(以秒為單位)長,則ASP將在執行請求前檢查確定客戶端是否仍是連接的。如果客戶端已斷開連接,則不處理該請求并且從隊列中刪除該請求。
注意:多數情況下,用戶不會等待處理ASP頁面超過幾秒的時間。雖然最長等待時間隨用戶不同而不同,但通常可接受的最長時間是大約10秒??梢允褂肁spQueueConnectionTestTime屬性來確保IIS不浪費時間來處理已被用戶放棄的請求。當處于ASP將要開始處理腳本的狀態時,該屬性對于使ASP進行有效處理非常有用。一旦腳本在運行,應用程序仍然應該繼續使用ASP內置Response對象的IsClientConnected方法在合適的時候對客戶端連接進行檢查。
AspRequestQueueMax
作用:該屬性指定了允許進入隊列的并發ASP請求的最大數目。在隊列占滿時,任何試圖請求ASP文件的客戶端瀏覽器都將收到HTTP500"服務器太忙"的錯誤。
注意:在IIsWebService級別上設置該屬性可運用于所有級別上的所有進程內的和共用的進程外應用程序項。進程內的和共用的進程外應用程序忽略IIsWebServer級別及更低級別上的配置數據庫設置。但是,如果該項是進程外的隔離應用程序,則使用IIsWebServer級別或更低級別的設置。
AspScriptEngineCacheMax
作用:該屬性指定了ASP頁面將在內存中保持緩存的腳本引擎的最大數目。根據應用程序中的內容的類型調整默認值。(默認值不包括當前正在運行的腳本引擎)如果有成千上萬的不同頁,您會體驗到提高緩存大小的一些好處:大多數頻繁請求的頁都可以輕松地訪問到。腳本引擎緩存的好處意味著您可以無需將模板重新編譯為字節代碼。
AspScriptFileCacheSize
作用:該屬性指定了要緩存的預編譯腳本文件數。如果設置為0,則不緩存任何腳本文件。如果設置為4294967295,則緩存所有腳本文件。該屬性用于調整性能,依賴于可用內存數和腳本文件傳輸量。
注意:配置數據庫將無窮大表示為DWORD值4294967295(0xFFFFFFFF);VBScript則將無窮大表示為十六進制值&HFFFFFFFF。以前的IIS版本將無窮大表示為-1。
AspSessionMax
作用:屬性指定了IIS允許的最大并發會話數。當達到該限制時,如果客戶端試圖與IIS建立新連接,則客戶端將接收到錯誤信息(HTTP500"服務器太忙")。
注意:配置數據庫將無窮大表示為DWORD值4294967295(0xFFFFFFFF);VBScript則將無窮大表示為十六進制值&HFFFFFFFF。以前的IIS版本將無窮大表示為-1。ASP需要超過保留所有會話所需數量一定量的內存。雖然可以使用AspSessionMax來限制該內存超出,但是通常情況下使用AspSessionTimeout屬性來管理IIS中會話對象的生存期會更合適,一旦達到限制將拒絕客戶端瀏覽器。
AspSessionTimeout
作用:屬性指定了完成最后的與Session對象相關的請求后,保留該對象的時間(以分鐘為單位)。可以使用ASP內置Session對象的Timeout屬性來在腳本中覆蓋該屬性。
注意:可以使用AspSessionTimeout來很好的調整ASP應用程序。由于Session對象消耗內存資源,因此使用該屬性來限制單個Session的生存期可以使應用程序具有更好的可縮放性。
AspProcessorThreadMax
作用:該屬性指定IIS可創建的每個處理器的最大工作線程數。(IIS所允許的每個ASP進程的工作線程的最大數量是AspProcessorThreadMax乘以服務器上處理器的數量??梢越档痛酥等缓蟊O視性能。如果性能降低,請恢復AspProcessorThreadMax原來的值。)
注意:該設置通常會明顯地影響Web應用程序的可擴展性和服務器的性能。因為該屬性定義了可同時執行的ASP請求的最大數量,所以除非ASP應用程序擴展調用外部組件,該設置都將保持默認值。在這種情況下,可以增加AspProcessorThreadMax的值。這樣做允許服務器創建更多的線程來處理更多的并發請求。如果更改了此屬性的值,則必須停止然后重新啟動Web服務器實例以使更改生效。該屬性的萬維網發布服務(WWW服務)設置在所有級別上適用于所有的進程內的和共用的進程外應用程序節點。對于進程內的和共用的進程外應用程序,忽略Web服務器或更低級別上的配置數據庫設置。但是,如果該節點是進程外的隔離應用程序,則使用Web服務器級別或更低級別的設置。
AspTrackThreadingModel
作用:該屬性指定了IIS是否檢查應用程序創建的任意組件的線程模塊。
注意:該配置數據庫屬性通常最好保留默認值(false),以便ASP不使用系統資源來跟蹤線程模塊,ASP應用程序提供最好的性能。如果將該屬性設置成false,并且允許所創建的組件訪問應用程序的作用域,則這些組件必須聚合自由線程封送拆收器。如果不聚合自由線程封送拆收器,則當創建組件實例時ASP將生成錯誤。有關該主題的詳細信息,請參閱PlatformSDK中的"建造ASP組件"。將該屬性設為默認值(false)的另一個原因是,任意在ASP應用程序中創建的沒有OnStartPage或OnEndPage方法的對象都比其他的要發布的早并且會降低應用程序的可縮放性能。
CacheISAPI
作用:該屬性指示在第一次使用ISAPI擴展后是否在內存中進行緩存。如果將該屬性的值設置為true,則ISAPI擴展一旦載入將一直駐留在緩存中,直到服務器停止工作。如果將該屬性的值設置為false,則若不再使用ISAPI擴展,就將其從內存中卸載。是否對ISAPI擴展進行緩存,取決于將其載入內存使用時該屬性的值。因此,如果在擴展已載入并進行緩存后更改屬性,則只有在重新啟動Web服務器后,所做更改才會對擴展生效。
注意:將該屬性設置為false可能引起嚴重的性能問題。而且當屬性設置為false時,某些擴展無法正常運行。