2016-04-20 42 views
1

下不穩定在this question有與規定的幾個upvotes評論:是InProc會話狀態負載

InProc會話狀態被稱爲是負載下非常不穩定。如果它被濫用(總是發生),那麼Session [「foo」] = null將比Session.Remove [「foo」]執行得更好。垃圾收集器應該清理過多的會話變量的混亂

這令我所有我的web應用程序的大量使用會話狀態(帳戶信息,籃,付款細節,用戶偏好等)。

我似乎無法找到任何證據來備份這一說法,有人可以揭穿這一點或解釋爲什麼這是正確的。在會話中存儲這些信息我錯了嗎?我不在尋找InProc vs SQL的優點和缺點,我意識到這些差異。

我所有的應用程序都運行在單個或專用的網絡服務器上,所以我從來沒有看到任何好處或轉移到SQL的會話狀態。

回答

2

InProc會話狀態很穩定,您不必擔心。我不知道他爲什麼稱它不穩定,但我猜他可能在評論時想到以下原因之一:

  • 如果您的應用程序獲得太多的負載;當您縮放它時,必須使用粘性會話(用於InProc SessionState)將請求重定向到客戶端所在的同一服務器,否則會話對象將不會保留。
  • 如果應用程序存在內存泄漏或不一致情況,重負載很可能會觸發應用程序重置,這將導致所有會話數據丟失,因此當前用戶的活動頁面可能會因爲會話數據丟失而出錯。
  • 對於整個請求(僅限該用戶),會話對象被鎖定以防止多個頁面寫入會話,以便例如如果發出併發請求,則它們必須等待對方將數據寫入Session。但是它發生在SQL和InProc SessionState中。

我看到銀行應用程序與InProc SessionState一起工作,並沒有什麼不穩定的。

+0

如果銀行業務足夠好,那麼我相信我的LOB應用程序很好。謝謝,我認爲這將是這種情況,但很高興有保證。 – GJKH