IIS 6.0優化與(yǔ)asp.net的web.config配置優化
這一篇給大家分享IIS的一些優化以及asp.net的web.config配置優化。
IIS相關(guān)優化
1.修改IIS最大工作(zuò)進(jìn)程數
a. 請考慮以下(xià)幾點:
1.每一個工作進程都會(huì)消耗係統資源和CPU占用率;太多的(de)工作進程會導致係統資源和CPU利(lì)用率的急劇消耗;
2.每一個工作進程都(dōu)具有自己的狀態數據,如果Web應用程序依賴於工作進程(chéng)保存狀態數據,那麽可能不支持使用多個工作進程。
3. 成(chéng)資源競爭,讓多(duō)個工作進程運行同(tóng)一個應用程序會造成資源競(jìng)爭
b. 修改ISS最大工作進程數提高該應用程序池處理請求的性能
1.在IIS 6.0的Web園(Web Garden)中,指定用於某個應用程序池的工作進(jìn)程的數量就可以提高該應用程序池(chí)處理請求的性能。當服務(wù)器的負載較小,不需要額外的工作進(jìn)程時,IIS 6.0在一定的時間(jiān)後(默認20分鍾(zhōng),可配置)自動縮減實(shí)際的工作進程(chéng)數量(liàng);如果負載變大,需要額外的工作進程,IIS 6.0再次增加工作(zuò)進(jìn)程數(shù)量(liàng)。這一(yī)切操作都自動進行,不需要管理員幹預。
2.修(xiū)改方法如下:
修改服務器.net framework的machine.config的配置(zhì)
目錄:C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.config
將其中的“processModel”節點的“allowDefinition”值設置為“Everywhere”
修改服務(wù)器中的iis最大工作進程數:
方法(fǎ):右擊iis應用程序池 --> 屬性 -> “性能”選項卡 -> web園 -> 最大工作進程數
注:經測試驗證,服務(wù)器為32(16*2)核32G內存時,設置為5性能最優。
(PS: processModel 元素(ASP.NET 設置架構(gòu)) 元素配置用於服務器(包括服務器上的所有 ASP.NET 應用程序)的處理模型。因此,processModel 設置隻能放在 Machine.config 文件(jiàn)中,而且(qiě)不能被任何 Web.config 文件中的設置重寫。 )
2.取(qǔ)消(xiāo)IIS的web訪問記錄(lù)
a. 關閉IIS訪問記錄可以提升web性能
1.IIS6.0默認開啟對於web的IIS訪問記錄。當開啟記錄功能後,IIS會事無巨細(xì)地忠實記錄所有的IIS訪問記錄。這些記錄文件(jiàn)的內容是非常(cháng)龐雜的(de),比如訪問時間、客戶端IP、從哪(nǎ)個鏈接(jiē)訪問、 Cookies等,另外還包括 Method(方法), UserAgent(用戶代理)等。
這些記錄不但占用大量的磁(cí)盤空間還大大地影響(xiǎng)了web服務器的性(xìng)能。有人做過評測(cè),停(tíng)止IIS訪問記(jì)錄可以提升5%到8%的web性能。
2.方法:打開IIS管理(lǐ)器,定位到具體的web站點,右鍵點擊選擇“屬(shǔ)性”,在(zài)“主(zhǔ)目錄”選項卡下取消對“記錄訪問”的勾選即可(kě)
Web.config配置優化(生產環境)
1.去除無用HttpModules
d. 並不是(shì)所有的Modules都是必需的,去除不用的HttpModules可以提高請求速度
1.asp.net默認的HttpModules管理請求的管線控製每一個請求。
例如:SessionStateModule攔截(jié)每(měi)一個請求,分析session cookie 來加載HttpContext中的(de)合(hé)適(shì)的session.但是(shì)並不(bú)是所有的Modules都是必需的(de),比如:如果你不用membership的話,就不用配置FormsAuthentication模塊;如果你(nǐ)不用windows身份驗(yàn)證就不用配置WindowsAuthentication,這些模塊隻是包含在管線裏(lǐ)麵(miàn),為每一個請求執行一些並不是必須的代碼。
2.默認的模塊定義在machine.config中(在網(wǎng)站的web.config中設置表(biǎo)示當前網站有效)($WINDOWS$\Microsoft.NET\Framework\$VERSION$\CONFIG)。如果不需(xū)要這些管線的話,配置如(rú)下:
<httpModules> <!--去除不必要的節點,提高請求速度--> <remove name="OutputCache" /> <remove name="Session" /> <remove name="WindowsAuthentication" /> <remove name="FormsAuthentication" /> <remove name="PassportAuthentication" /> <remove name="RoleManager" /> <remove name="UrlAuthorization" /> <remove name="FileAuthorization" /> <remove name="AnonymousIdentification" /> <remove name="Profile" /> </httpModules>
2. 關閉頁麵級無用機製
Web.config中的(de)<pages>節點配置全(quán)局定義頁特定設置(zhì),如(rú)配置文件範圍內的頁和控件的 ASP.NET 指令。默認enableViewState屬性為“true”,即開啟視圖,如果不使用這個機製就可以(yǐ)設置為(wéi)“false”。
默認autoEventWireup屬性為“true”,即開啟頁事件,如果不(bú)使用這個(gè)機製就可以設置(zhì)為“false”。
默認buffer屬性為(wéi)“true”,即開啟 HTTP 響應緩衝。
默認enableViewStateMac屬性為“false”,開啟(qǐ)對頁的視圖狀態運行(háng)計算機身份驗證檢查 (MAC),以放置用戶篡改,如果設置為true,將會引起性能的降低。
默認validateRequest默認為true,開啟驗(yàn)證用戶輸入中有(yǒu)跨站(zhàn)點腳本攻擊和SQL注入式(shì)漏洞攻擊(jī),,如果出現匹配情(qíng)況就(jiù)會發 HttpRequestValidationException 異常。
3. 將CustomError設置為非Off狀態
Web.config中的<customErrors>節點用於定義一些自定義錯(cuò)誤信息的信息(xī)。此節點有Mode和defaultRedirect兩個屬性,其中defaultRedirect屬性是一個可選屬性,表示應用程序發生(shēng)錯誤時重定(dìng)向到的默認URL,如果沒有指定該屬性則顯示一般性錯誤。Mode屬性是(shì)一個必選(xuǎn)屬性,它有三個可能值,它們所代表的意義(yì)分別如下(xià):
Mode 說明
On 表示在本地和遠程用戶都會看到自定義錯誤信息(xī)。
Off 禁(jìn)用自定義錯誤信息,本地和遠程用戶都會看到詳細(xì)的錯誤信息。
RemoteOnly 表示本地用戶將看到詳細錯誤信息,而遠程用戶(hù)將會看(kàn)到自(zì)定義錯誤信息。
這裏有必要說明一下本(běn)地(dì)用戶和遠程用(yòng)戶的概念。當我們訪問(wèn)asp.net應用程時所使用的機器和發布asp.net應用(yòng)程序所使用的機器為(wéi)同一台機器時成為本地用戶,反(fǎn)之則稱(chēng)之(zhī)為遠程用戶。在開發調試階段為了便於查(chá)找錯誤Mode屬性建議設(shè)置為Off,而在(zài)部署階段應將Mode屬性(xìng)設置為(wéi)On或者RemoteOnly,以(yǐ)避免這些詳細的錯誤信息暴露了程序代碼細節從而引來黑客的入侵。
配置如下:
<customErrors mode=" On " defaultRedirect="Error.html"/>
4. 禁用調試
Web.config中的<compilation>節點配置 ASP.NET 使(shǐ)用(yòng)的所有編譯設置。默認的(de)debug屬性為“true”,即允許調試,在開發階段這樣配置沒有(yǒu)問題。但正式部署上線後,這樣會(huì)影響支撐接口的性能,所以在程序編(biān)譯(yì)完成上線之後應將(jiāng)其設為“false”。
配(pèi)置如下:
<compilation debug="false" />
5. 連接並發配置
連(lián)接並發數限製是指對於同一個ip對同一個domain發起的最(zuì)大連接數。其(qí)實在(zài)大多數微軟(ruǎn)的產品或組件中都存在這個限製,一般這個數值是2/4個,也就是說在默認情況下,對於同(tóng)一個ip訪問(wèn)同一個domain同(tóng)時最多有2個(gè)連接處於建立狀態。默認是2,這個值(zhí)太低了。這意味著每一(yī)個IP最多隻能有兩個(gè)請求到你(nǐ)的網站(zhàn),這樣會造成請求擁堵。asp.net中connectionManagement節點可以設置單個ip對同某個domain發起的最大連接數。
配置如下:
<system.net> <connectionManagement> <add address="*" maxconnection="100" /> </connectionManagement> </system.net>
address代表針(zhēn)對哪個domain,maxconnection代表最大(dà)連接數。
6. 去掉http頭信息中(zhōng)的ASP.NET 版本標頭
enableVersonHeader:指定 ASP.NET 是(shì)否應輸出版本標頭(tóu)。使用該屬性來確定當前使用的 ASP.NET 版本。對於生產環境,該屬性不是必需的,可以禁(jìn)用。
配置示例:
<httpRuntime enableVersionHeader="false" />
關鍵詞:IIS,asp.net
閱讀本文後您有什麽感想? 已有 人給出評價!
- 0
- 0
- 0
- 0
- 0
- 0