2013-01-02 19 views
4

在asp.net中,默認會話超時時間爲20分鐘。假設如果我將會話超時期限改爲2小時或更長,那麼它會在服務器端導致任何性能問題?是否存在設置最大會話時間的缺點或限制?

我想知道在asp.net中使用最大會話時間是否有任何限制或缺點?

請指引我走出這個問題的?

回答

5

對於每個用戶,會話都是在服務器上維護的。會話超時的增加將阻止服務器釋放分配給非活動會話的內存。

我想知道是否有在asp.net使用的最大會話超時時間的 任何限制或缺點?

HttpSessionState.Timeout Property

超時屬性不能被設置爲一個值大於525600 分鐘(1年)。默認值是20分鐘。

缺點: 您將有性能問題,如果你有大量的用戶,並在會話超時增加,你的不活動會話將保留在Web服務器的內存可能會導致應用程序池回收,這將導致爲所有用戶丟失所有會話。

+0

@JeremyThompson,現在加入:) – Habib

+1

+1這現在更有幫助。 –

+0

「大量用戶」是否有任何球場數據?對於每個用戶用戶來說,在會話中存儲幾個Guid會有多少內存? – niico

1

如果您使用的是IIS6或更高版本,則取決於您的應用程序池設置,它可能會影響w3wp進程回收的頻率。當應用程序池回收時,除非使用out-of-process session state management或sql作爲會話狀態主機,否則會話將會丟失。

如果您將超時時間增加到兩個小時,單個用戶不會經常失去其會話,但會增加瀏覽該站點的所有用戶在回收流程時偶爾會被註銷的機率。

0

採取在考慮,如果你想提高超時值在共享宿主環境因爲他們阻止你從這個通過設置在machine.config文件值和帽子取先例你會失敗,你將需要使用SQL Session就是這樣,你可以根據自己的需要隨意更改超時時間。

他們通常還會每隔一段時間重新啓動AppPool以取消阻止任何可能阻止其他網站的惡意或錯誤代碼,並且每次AppPool重新啓動時,這裏都會進行所有會話(當然,如果您使用SQL Sessions,則不會)。 ..

在另一方面,如果你的託管自己的Web應用程序,除了在內存中的大小(請記住,林假設你是說用戶會話和名字說,是每個用戶,每個應用程序你會使用應用程序會話)。如果你認爲這種記憶力增加了,什麼也不會減少,甚至性能也不會減弱。

1

增加會話時間意味着網頁空閒不太可能會超時(例如,如果用戶午餐離開網頁打開)。但是,這會佔用更多的服務器資源,因爲正如Habib所說,服務器必須在此期間存儲用戶信息。

它也可能是一個安全風險。如果用戶關閉網頁而不是註銷,則會增加用於CSRF攻擊的窗口。

要做的最好的事情就是了解用戶如何使用網頁。如果頁面必須長時間保持打開狀態,請查看頁面的定期回調或刷新。或者,如果網站對安全敏感,請考慮在一段時間不活動後自動登錄用戶。