设置最大会话超时时间有没有缺点或限制?

5
在asp.net中,默认的会话超时时间为20分钟。假设我将会话超时时间更改为2小时或更长,那么这是否会导致服务器端的性能问题?
我想知道在asp.net中使用最大会话超时时间是否有任何限制或不利影响?
请指导我解决这个问题?
4个回答

8

对于每个用户,会话在服务器上保持。增加会话超时时间将防止服务器释放分配给非活动会话的内存。

我想知道在asp.net中使用最大会话超时时间是否有任何限制或缺点?

HttpSessionState.Timeout属性

Timeout属性不能设置为大于525,600分钟(1年)的值。默认值为20分钟。

缺点:如果您有大量用户,并且增加会话超时时间,则您的非活动会话将保留在Web服务器内存中,这可能导致应用程序池重启,从而导致所有用户的所有会话都丢失,进而影响性能问题。


@JeremyThompson,已添加 :) - Habib
有关“大量用户”的大致数字是多少?例如,为每个用户在会话中存储几个Guid,大约需要多少内存? - niico

1

如果您正在使用IIS6或更高版本,则根据应用程序池设置的不同,可能会影响w3wp进程的回收频率。当应用程序池被回收时,除非您使用外部进程会话状态管理或将SQL作为会话状态主机,否则您的会话将丢失。

如果您将超时时间增加到两个小时,则个别用户不会经常失去其会话,但这会增加所有浏览站点的用户偶尔在进程被回收时注销的几率。


1
增加会话时间意味着一个空闲的网页不太可能超时(例如,如果用户离开打开的网页去吃午饭)。然而,这会占用更多的服务器资源,因为,正如Habib所说,服务器必须在此期间存储用户信息。
这也可能是一种安全风险。如果用户关闭网页而不是注销,它会增加CSRF攻击的窗口。
最好的做法是了解您的用户如何使用网页。如果页面必须长时间保持打开状态,请考虑定期回调或刷新页面。或者,如果网站具有安全敏感性,请考虑在一段时间内自动注销用户以防止不活动。

0
请注意,如果您尝试在共享托管环境中提高超时值,将会失败,因为他们通过在machine.config文件中设置该值来阻止您,这将优先考虑,您需要使用SQL Session来实现,并且您可以自由更改超时时间。

他们还通常定期重新启动AppPool以解除任何可能阻塞其他网站的恶意或不良代码,每次AppPool重新启动时,所有会话都会消失(当然,如果您使用SQL会话,则不会)...

另一方面,如果您自己托管Web应用程序,除了内存大小之外(请记住,我假设您正在使用用户会话,正如名称所示,是每个用户,每个应用程序您将使用应用程序会话)。 如果您考虑此内存增加,那么没有任何东西,甚至性能也不会减少。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接