修改IIS最大工作進程數
a 請考慮以下幾點
每一個工作進程都會消耗系統資源和CPU占用率太多的工作進程會導致系統資源和CPU利用率的急劇消耗
每一個工作進程都具有自己的狀態數據如果Web應用程序依賴於工作進程保存狀態數據那麼可能不支持使用多個工作進程
成資源競爭讓多個工作進程運行同一個應用程序會造成資源競爭
b 修改ISS最大工作進程數提高該應用程序池處理請求的性能
在IIS 的Web園(Web Garden)中指定用於某個應用程序池的工作進程的數量就可以提高該應用程序池處理請求的性能當服務器的負載較小不需要額外的工作進程時IIS 在一定的時間後(默認分鐘可配置)自動縮減實際的工作進程數量如果負載變大需要額外的工作進程IIS 再次增加工作進程數量這一切操作都自動進行不需要管理員干預
修改方法如下
修改服務器net framework的machineconfig的配置
目錄C:WINDOWSMicrosoftNETFrameworkvCONFIGmachineconfig
將其中的“processModel”節點的“allowDefinition”值設置為“Everywhere”
修改服務器中的iis最大工作進程數:
方法右擊iis應用程序池 > 屬性 > “性能”選項卡 > web園 > 最大工作進程數
注經測試驗證服務器為(*)核G內存時設置為性能最優
(PS: processModel 元素(ASPNET 設置架構) 元素配置用於服務器(包括服務器上的所有 ASPNET 應用程序)的處理模型因此processModel 設置只能放在 Machineconfig 文件中而且不能被任何 Webconfig 文件中的設置重寫 )
取消IIS的web訪問記錄
a 關閉IIS訪問記錄可以提升web性能
IIS默認開啟對於web的IIS訪問記錄當開啟記錄功能後IIS會事無巨細地忠實記錄所有的IIS訪問記錄這些記錄文件的內容是非常龐雜的比如訪問時間客戶端IP從哪個鏈接訪問 Cookies等另外還包括 Method(方法) UserAgent(用戶代理)等
這些記錄不但占用大量的磁盤空間還大大地影響了web服務器的性能有人做過評測停止IIS訪問記錄可以提升%到%的web性能
方法打開IIS管理器定位到具體的web站點右鍵點擊選擇“屬性”在“主目錄”選項卡下取消對“記錄訪問”的勾選即可
Webconfig配置優化(生產環境)
去除無用HttpModules
d 並不是所有的Modules都是必需的去除不用的HttpModules可以提高請求速度
aspnet默認的HttpModules管理請求的管線控制每一個請求
例如SessionStateModule攔截每一個請求分析session cookie 來加載HttpContext中的合適的session但是並不是所有的Modules都是必需的比如如果你不用membership的話就不用配置FormsAuthentication模塊如果你不用windows身份驗證就不用配置WindowsAuthentication這些模塊只是包含在管線裡面為每一個請求執行一些並不是必須的代碼
默認的模塊定義在machineconfig中(在網站的webconfig中設置表示當前網站有效)($WINDOWS$MicrosoftNETFramework$VERSION$CONFIG)如果不需要這些管線的話配置如下
代碼如下:
<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>
關閉頁面級無用機制
Webconfig中的<pages>節點配置全局定義頁特定設置如配置文件范圍內的頁和控件的 ASPNET 指令默認enableViewState屬性為“true”即開啟視圖如果不使用這個機制就可以設置為“false”
默認autoEventWireup屬性為“true”即開啟頁事件如果不使用這個機制就可以設置為“false”
默認buffer屬性為“true”即開啟 HTTP 響應緩沖
默認enableViewStateMac屬性為“false”開啟對頁的視圖狀態運行計算機身份驗證檢查 (MAC)以放置用戶篡改如果設置為true將會引起性能的降低
默認validateRequest默認為true開啟驗證用戶輸入中有跨站點腳本攻擊和SQL注入式漏洞攻擊如果出現匹配情況就會發 HttpRequestValidationException 異常
將CustomError設置為非Off狀態
Webconfig中的<customErrors>節點用於定義一些自定義錯誤信息的信息此節點有Mode和defaultRedirect兩個屬性其中defaultRedirect屬性是一個可選屬性表示應用程序發生錯誤時重定向到的默認URL如果沒有指定該屬性則顯示一般性錯誤Mode屬性是一個必選屬性它有三個可能值它們所代表的意義分別如下
Mode 說明
On 表示在本地和遠程用戶都會看到自定義錯誤信息
Off 禁用自定義錯誤信息本地和遠程用戶都會看到詳細的錯誤信息
RemoteOnly 表示本地用戶將看到詳細錯誤信息而遠程用戶將會看到自定義錯誤信息
這裡有必要說明一下本地用戶和遠程用戶的概念當我們訪問aspnet應用程時所使用的機器和發布aspnet應用程序所使用的機器為同一台機器時成為本地用戶反之則稱之為遠程用戶在開發調試階段為了便於查找錯誤Mode屬性建議設置為Off而在部署階段應將Mode屬性設置為On或者RemoteOnly以避免這些詳細的錯誤信息暴露了程序代碼細節從而引來黑客的入侵
配置如下
代碼如下:
<customErrors mode=" On " defaultRedirect="Errorhtml"/>
禁用調試
Webconfig中的<compilation>節點配置 ASPNET 使用的所有編譯設置默認的debug屬性為“true”即允許調試在開發階段這樣配置沒有問題但正式部署上線後這樣會影響支撐接口的性能所以在程序編譯完成上線之後應將其設為“false”
配置如下
代碼如下:
<compilation debug="false" />
連接並發配置
連接並發數限制是指對於同一個ip對同一個domain發起的最大連接數其實在大多數微軟的產品或組件中都存在這個限制一般這個數值是/個也就是說在默認情況下對於同一個ip訪問同一個domain同時最多有個連接處於建立狀態默認是這個值太低了這意味著每一個IP最多只能有兩個請求到你的網站這樣會造成請求擁堵aspnet中connectionManagement節點可以設置單個ip對同某個domain發起的最大連接數
配置如下
代碼如下:
<systemnet>
<connectionManagement>
<add address="*" maxconnection="" />
</connectionManagement>
</systemnet>
address代表針對哪個domainmaxconnection代表最大連接數
去掉http頭信息中的ASPNET 版本標頭
enableVersonHeader指定 ASPNET 是否應輸出版本標頭使用該屬性來確定當前使用的 ASPNET 版本對於生產環境該屬性不是必需的可以禁用
配置示例
代碼如下:
<httpRuntime enableVersionHeader="false" />
From:http://tw.wingwit.com/Article/program/net/201311/14321.html