終極優化(4):使用 IIS 5.0 調整 Web服務器的藝術與科學
進程隔離 iis 4.0 介紹了在進程外執行 web 應用程序的概念。這個功能為 web 服務器 建立了更高的穩定性,但也產生相當大的 性能 成本。在 iis 5.0 中,進程外(out-of-process)應用程序的性能已獲得改善,尤其是對 aps 更明顯。不過,相較于 iis 5.0 進程內(in
進程隔離
iis 4.0 介紹了在進程外執行 web 應用程序的概念。這個功能為 web
服務器建立了更高的穩定性,但也產生相當大的
性能成本。在 iis 5.0 中,進程外(out-of-process)應用程序的性能已獲得改善,尤其是對 aps 更明顯。不過,相較于 iis 5.0 進程內(in-process)的應用程序,還是有些性能降級的現象。除了更高的性能外,在進程外(out-of-process)執行應用程序的概念也有所延伸。您現在可以在一個緩沖池的(pooled)進程外環境中執行 web 應用程序。
在 web 服務進程中執行的應用程序 (inetinfo.exe) 能產生更高的性能,但是因不良應用程序而導致 web 服務無法使用的風險也更高。建議的設置是讓 inetinfo.exe 在自己的進程中執行、讓負擔重要任務的應用程序在自己的進程中執行 (高度保護),并讓剩余的應用程序在一個共享的緩沖池進程 (中度保護) 中執行。若要獲得最佳性能和
可靠性,請以中度保護執行 asp 應用程序,并將所有 com+ 組件設置為鏈接庫應用程序,而非服務器應用程序。
如果決定在單獨的進程中執行您的應用程序,或在單一的進程中執行其它應用程序,則必須從 ][主目錄] 或 [虛擬目錄] 屬性頁上的 [應用程序保護]下拉列表中選取 [高 (隔離的)] 或 [中 (緩沖池的)]。您應先建立一個應用程序目錄并將它指定為「主目錄」或「虛擬目錄」(如果尚未這樣做的話)。所有新應用程序默認會以中度保護執行。
這些注冊表設置及 metabase 內容的相關信息,請參閱〈附錄 1︰性能設置〉。本節中所提功能的相關信息,請參閱 iis 5.0 及 windows 2000 聯機文檔。
調整及疑難排除的建議
如果您判定需要處理特定硬件驅動的性能問題,請考慮使用下列建議。
· 升級到較大的「l2 緩存」。如果判定需要添加或升級處理器,請選擇有大型 (l2) 緩存的處理器。例如 iis 等服務器應用程序可以從大型處理器緩存中獲益,因為它們的指示路徑牽涉到許多不同的組件,而且它們必須存取大量資料。若想提升執行 iis 5.0 的服務器的性能,建議您使用大量處理器緩存(如果是處理器外部的緩存,建議使用 2 mb 或以上,如果在 cpu 芯片上,則請使用可用的最大值)。
· 升級到更快的 cpu。
網絡應用程序特別能從更快的處理器獲益。
· 設置「活動的連接超時時間」。若要盡可能地抵抗網絡等待時間,請設置活動的連接超時時間。如果您執行的是高傳輸量的網站,這將是非常重要的。開啟的連接會使性能降級。connectiontimeout metabase 內容默認會設為 15 分鐘。此內容的相關信息,請參閱〈附錄 1︰性能設置〉。
· 使用「過期標題」。在所有靜態及動態內容上設置「過期」標題,讓這兩種內容可以存放在客戶端的緩存中。如此可加快響應時間、減少服務器上的負載及網絡上的傳輸量。例如,您可以建立一個標題,指定如果用戶已經造訪過您的站點時,不要
下載您公司的標幟 .jpg 檔。若要為靜態內容設置「過期」標題,請使用 [http 標題] 內容頁。若要為動態內容設置「過期」標題,請使用 response.addheader 方法。此方法的相關信息,請參閱 iis 5.0 聯機文檔。
· 確定已啟用「asp buffering」?!竌sp 緩沖處理」默認會在全新安裝 windows 2000 之后啟用。如果是從 windows nt 4.0 及 iis 4.0 升級,您可能需要手動啟用它?!竌sp 緩沖處理」可讓所有來自應用程序的輸出在通過網絡傳給客戶端瀏覽器之前,先收集在緩沖區中。 如此可以降低網絡傳輸量及響應時間。雖然緩沖處理可以降低響應時間,但可能會讓用戶察覺網頁的速度變慢,因為除非網頁已完成執行,否則用戶看不見任何信息。審慎地使用 response.flush 可以改善交互的感覺。response.flush 方法的相關信息,請參閱 iis 5.0 聯機文檔。相關信息,請參閱〈附錄 1︰性能設置〉中的 aspbufferingon metabase 項目。
· 延長連接隊列及使用 http keep-alives。如果您判定您服務器的帶寬不足以滿足需要,并且正計劃增加請求負載,則可以通過執行兩個動作讓網絡帶寬的使用更理想︰延長連接隊列,及確定http keep-alives 已啟用。
每一個 iis 5.0 服務都有一個連接隊列,而且皆設為 15 個項目。如果這個數字在負載量下不符合您的
需求,則通過將 listenbacklog 參數添加到注冊表中,并將此值設置為需要服務器維持的最大連接請求數目,即可增加它。相關信息,請參閱〈附錄 1︰性能設置〉。
http keep-alives 會保持客戶端與服務器之間的連接,即使初始請求已完成也是如此。這個功能可以縮短等待時間、減少 cpu 負荷,及最佳化帶寬。http keep-alives 是默認啟用的。如果它們已停用,但您又想啟用它們,請在 [internet 服務管理員] 中選取一個站點,開啟該站點的 [屬性] 頁,并按一下 [性能] 選項卡后,再選取 [http keep-alives] 復選框。
· 縮小文件大小。您可以通過縮小服務中的文件大小來增進web服務器的性能。圖像文件應以適當的壓縮格式存放。盡可能限制圖像及其它大型文件的數目。通過縮減 htmp 及 asp 程序代碼也可以縮小文件大小。從 asp 頁中刪除不必要的程序代碼區塊,并確定您的 html 文件編寫得很有效率。
· 將記錄文件存放在個別的磁盤上,并刪除不需要的信息。如果您的服務器控制了多個站點,則每一個站點會建有個別的日志文件;這些日志文件在向磁盤寫入時會在您的服務器上造成瓶頸。您應該將日志存放在不同于 web 服務器的磁盤分區或磁盤上。另一個減少磁盤瓶頸的方法是避免記錄不重要的信息。例如,您可以將所有圖像文件放在一個虛擬目錄 (例如 /images) 中,并停用該目錄的日志。若要這樣做,請開啟該目錄的內容頁,清除 [日志查閱次數] 復選框,并按一下 [確定]。您也可以使用腳本文件或 isapi 過濾器來執行這項調整作業。如果您的站點是特別忙碌的大型站點,那么這項作業可以為您省下每天好幾千兆的磁盤空間,以及大量的日志后處理時間。
· 使用 raid 及等量分配。若要增加磁盤存取,請使用 raid 及等量磁盤組。您也許要考慮使用一個有較大 ram 緩存的磁盤驅動器控制器。如果您的站點倚賴頻繁的
數據庫存取,則請將數據庫移到另一臺計算機上。
· 需要時才使用「cpu 限制」。iis 5.0 介紹兩種處理不良應用程序的新功能︰一個是進程記錄,它會記錄網站使用的 cpu 及其它資源;另一個是進程限制,它會限制網站可以使用的資源數量。
進程記錄及進程限制適用于 cgi (common gateway interface) 應用程序及在進程外(out-of-process)執行的應用程序。您無法為進程內(in-process)的應用程序或在新 iis 5.0 進程外緩沖池 (中度保護) 中執行的應用程序啟動記錄。
原文轉自:http://www.kjueaiud.com