2014-08-28 41 views
5

我們正在使用一個out of proc會話狀態服務/ ASP.Net會話狀態。我們知道,由於它在過去被濫用,過多地存儲在會話狀態中,所以正在轉向更具可擴展性的系統,因此存在問題。Out of proc SessionState內存管理

在此期間,雖然,我們正在試圖繞過一個會話狀態服務如何管理它的內存我們必須做什麼限制我們頭上。但nonethe微軟docs似乎進入任何細節。

具體來說,我想知道:

  • 哪些限制多少「標準」出PROC會話狀態服務(在Windows管理控制檯與IIS一起安裝)可存儲? (x64)
  • 是否有每用戶限制?

通過標準服務,我的意思是這一個:

enter image description here

+1

可能重複的[ASP.NET會話大小限制](http://stackoverflow.com/a/6719133/209259) – 2014-08-28 16:22:26

+0

我已經看到,但這個問題不是很具體,目前還不清楚他是否談論outpfproc或x32/x64的inproc。 TBH我不明白這個問題是如何得到5個upvotes的。其次,答案並不回答這個問題(完全)。 – Liam 2014-08-29 08:36:28

+4

當我讀到它時,使用會話狀態服務器(mode =「StateServer」)的進程外狀態管理僅限於狀態服務可用的內存量。「這樣可以回答你的第一個問題,並隱含地回答第二個用於「限制爲可用於狀態服務的內存量」的用戶。所以這只是對32位機器(2GB)或內存的限制,因爲根據操作系統的不同,64位的內存大約爲128GB至16GB。 – 2014-08-29 13:18:55

回答

1

有超出託管服務的機器沒有限制。如果它有16個RAM的內存,假設一些演出被用於其他進程/操作系統/等等,那麼會話數據的內存就有13GB。數據不會保存到磁盤,因此數據只存在於RAM /內存中;這就是爲什麼當你重新啓動服務時,所有會話都消失了。內存是易失性的,像RAM磁盤一樣工作。

如果您達到承載會話狀態服務的計算機的內存限制,則要麼爲每個用戶存儲太多數據,要麼有太多用戶存儲少量數據。隨着下一步轉向分佈式會話狀態提供程序以正確縮放,您已經走上了正軌。這通常是通過隨會話狀態提供者提供的分佈式緩存系統,或者通過編寫你自己的提供者來實現的。

數據不存在每個用戶的限制,但請注意,進程外通信總是通過序列化發生。因此,無論您如何接近它,每個請求的序列化/反序列化用戶數據會非常緩慢,這是有實際限制的。