2012-03-23 46 views
1

我有2個負載平衡的Web服務器。我的應用程序使用SQL Server 2008上的SQL Server會話狀態數據庫。SQL Server會話狀態,Web場和計數會話

2個Web服務器在IIS配置方面相同,如果我理解正確,兩個服務器上的兩個Web應用程序將映射到ASPStateTempApplications表中的相同應用程序ID,因爲它們具有相同的IIS配置。因此,統計與此應用Id相關聯的會話數量(來自ASPStateTempSessions表格)將導致兩個Web服務器上的會話總數一起計算。

我的問題是: 有沒有辦法知道每個服務器上有多少會話是單獨活動的?

我有問題,當我從負載平衡中取出一臺服務器時,我想知道在回收它之前是否還有服務器上有活動會話。

另一種情況,如果我要回收IIS的服務器之一,因爲在同一臺服務器上的另一個Web應用程序崩潰,我想知道有多少會話時,我這樣做會受到影響。

謝謝。

+0

使用SQL會話狀態的全部意義在於使回收(或重新啓動)的應用程序服務器在客戶端上的影響爲零。如果你的負載平衡器被設置爲使用粘性會話,那麼唯一會抵消這種好處的是,即便如此,如果一臺服務器出現故障,它應該故障轉移到另一臺服務器,並且狀態應該仍然可以在數據庫中訪問。 – Chris 2012-03-23 18:09:34

+0

同意,而不是付出努力確定每個iis服務器上有多少會話,請付出努力使其成爲您永不在乎的東西。我認爲你應該在那裏,但如果沒有,到那裏。我對你的問題的回答是'使這個問題無關緊要'。 – jerry 2012-03-23 18:40:16

回答

3

基本上,因爲在此模式下的會話不會在所有綁定到網絡的服務器它們都可以,實際上應該是在兩個有效)。

你可以爲每個用戶堅持到一臺服務器上的網關負載均衡技術,如果有的話 - 最好使用是InProc模式,它的所有好處)

0

由於會話數據存儲在SQL Server中,不必擔心有多少會話處於活動狀態。一旦服務器關閉(或IIS被回收,取決於配置),負載平衡器將自動發送任何新的請求到活動的IIS服務器。通過SQL中存儲的會話數據,活動服務器可以檢索會話數據,並且用戶將不知道發生了任何服務器切換。

理想情況下,你應該定期測試此過程,以確保一切正確配置。另外,在向服務器安裝補丁程序時,應遵循此過程。