[置頂] IIS應用程式集區多背景工作處理序設定及Session共用

來源:互聯網
上載者:User

 在調優iis的時候,朋友分享給我一個特別棒的設定方法步驟,感謝好朋友的分享。

 

IIS應用程式集區多背景工作處理序設定及Session共用

1 概述

微軟的IIS作為Windows平台下Asp.Net網站發布的預設WEB伺服器,在效能上提供了比較大的彈性和延展性,通過應用程式集區背景工作處理序數的設定,可以支援從幾十到上萬並發數量的訪問。本文檔對相應設定過程進行操作指引,並對設定過程中的注意事項進行重點描述。

2 應用程式集區多背景工作處理序設定

根據以往的經驗值,在主流的PC-SERVER主機(Xeon E5645 @ 2.4GHz,6核心12線程,32G記憶體)上,每個應用程式集區的單一背景工作處理序,能夠大約承受30-50個左右的並發,如果超出此並發數量,可能會出現IIS無法響應、或回應時間明顯變長的問題。通過合理設定應用程式集區的最大背景工作處理序數,可顯著提高IIS應對高並發的能力,減少網站回應時間。

2.1 設定步驟

1、 找到待設定網站對應的應用程式集區, 1所示:

 

圖 1 找到應用程式集區

2、 在所選應用程式集區上點擊右鍵,選擇【進階設定】, 2所示:

 

圖 2 進階設定

3、 在彈出的【進階設定】視窗中找到【最大背景工作處理序數】,並設定為合理值, 3所示:

 

圖 3 設定最大背景工作處理序數

4、 點擊【確定】按紐儲存設定。

2.2 注意事項

1、 最大背景工作處理序數值的設定依據

在確定每個應用程式集區的最大背景工作處理序數時,最主要參考的資料包括網站的最大並發使用者數以及WEB伺服器的可用記憶體數。最大並發使用者數需要通過一段時間的觀察,記錄下在系統忙時的最大並發使用者數,按照每背景工作處理序能承載30個並發的原則來確定應用程式集區的最大背景工作處理序數。同時要注意,每個背景工作處理序大約會佔用200M左右的系統記憶體,在設定最大背景工作處理序數的時候,要主要最大背景工作處理序數與200M的乘積不要超過系統最大可用記憶體數。一般情況下,建議按照每次增加5個背景工作處理序數的方式對最大背景工作處理序數進行調整,調整完後對網站觀察一段時間,如依然無法滿足要求,再繼續增加5個背景工作處理序數。

2、 session共用問題

如果網站沒有用到session機制,則不會引發此問題。如果用到了session機制進行傳值和儲存資料,則需要考慮在應用程式集區多個背景工作處理序間進行session共用,防止出現session丟失的問題。此問題的解決措施見session共用設定。

3、 合理的資源回收機制

大多數應用系統都存在工作時間使用量高、非工作時間使用量低的情況,針對這種現象,在系統非忙時應合理的釋放作業系統資源,因此,應合理設定應用程式集區的【限制逾時】和【回收時間間隔】屬性。

3 Asp.Net的Session共用設定

Asp.Net提供了以下幾種Session儲存機制,如表 1所示:

表 1 Session儲存方式

方式名稱

儲存方式

效能

Off

設定為不使用Session功能

InProc

設定為將Session儲存在進程內,就是ASP中的儲存方式,這是預設值

最高

StateServer

設定為將Session儲存在獨立的狀態服務中。通常是aspnet_state.exe進程

效能損失10-15%

SQLServer

設定將Session儲存在SQL Server中。

效能損失10-20%

Custom

自定製的儲存方案

由實現方式確定

在Asp.Net程式的web.config設定檔中對Session的儲存方式進行設定。如果不顯示指定Session的儲存方式,預設使用InProc的方式儲存,即Session由提供服務的背景工作處理序儲存。

為了提高IIS對高並發的支援,可以增加應用程式集區的背景工作處理序數,IIS會根據內建的調度演算法,將使用者的請求在多個背景工作處理序間動態分配,如果搭建了伺服器叢集和負載平衡,則使用者請求會在多台機器的多個背景工作處理序間進行動態分配。在上述情況下,如果Session的儲存方式依然為InProc,則使用者請求在多個背景工作處理序間切換時可能出現Session丟失的情況,導致請求失敗或出錯。

為解決上述為,需要將Session的儲存方式設定為共用,即表 1中的“StateServer”、“SQLServer”或“Custom”方式。這幾種方法中,“SQLServer”方式需要安裝獨立的SQLServer資料庫,“Custom”方式需要自行實現相應的Session儲存與檢索過程,部署起來相對複雜,相對上述兩種方式,“StateServer”方式在功能性和可實施性上最好,因此下文重點介紹此種Session共用機制。

3.1 設定步驟

1、 確定StateServer伺服器。如果只有一台WEB伺服器,可指定當前伺服器為StateServer伺服器。如果存在多台伺服器叢集,可指定叢集中的一台符合較輕的伺服器作為StateServer伺服器。

2、 修改註冊表,允許遠端存取StateServer服務。可直接匯入如下指令碼。

 

連接埠預設為42424,可根據需要進行修改,下文均以42424為例。

3、 開啟【管理工具】-【服務】,找到“Asp.Net State Service”,點擊右鍵,選擇【屬性】, 4所示:

 

圖 4 Asp.Net State Service

在彈出的【屬性】視窗中,將【啟動方式】改為“自動”,然後點擊【啟動】按紐啟動服務, 5所示:

 

圖 5 啟動服務

4、 開啟待修改網站主目錄下的web.config設定檔,搜尋找到“<sessionstate>”配置節點,如果不存在配置節點,則在“<system.web>”節點下建立“<sessionstate>”配置節點,並將節點屬性修改為:
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" />
其中“tcpip=*”後的主機IP地址和連接埠可根據實際情況修改。修改完後儲存設定檔即可。

3.2 注意事項

1、 Session中儲存的自訂對象必須顯示標記為可序列化“[serializable]”。如果未顯示標記為可序列化,則在訪問頁面時會報錯。

2、 StateServer伺服器必須為Windows Server作業系統,如Windows Server 2003或Windows Server 2008。

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.