在asp.net中,默认会话超时为20分钟。假设我将会话超时时间更改为2小时或更长时间,那么它是否会导致服务器端出现任何性能问题?
我想知道在asp.net中使用最长会话时间有任何限制或缺点吗?
请指导我解决这个问题?
答案 0 :(得分:5)
每个用户在服务器上维护会话。会话超时的增加将阻止服务器释放分配给非活动会话的内存。
我想知道是否有任何限制或缺点 在asp.net中使用最长会话时间?
HttpSessionState.Timeout Property
Timeout属性不能设置为大于525,600的值 分钟(1年)。默认值为20分钟。
<强>缺点:强> 如果您有大量用户并且会话超时增加,您将遇到性能问题,您的非活动会话将保留在Web服务器内存中,这可能导致应用程序池回收,这将导致所有用户丢失所有会话。
答案 1 :(得分:1)
如果您使用的是IIS6或更高版本,则根据您的应用程序池设置,它可能会影响w3wp进程的回收频率。当应用程序池被回收时,除非您使用out-of-process session state management或sql作为会话状态主机,否则会话将丢失。
如果将超时时间增加到两个小时,个别用户不会经常丢失会话,但会增加浏览网站的所有用户在回收流程时偶尔会被注销的几率。
答案 2 :(得分:1)
增加会话时间意味着闲置的网页不太可能超时(例如,如果用户去吃午餐而不打开网页)。但是,这会占用更多的服务器资源,因为正如Habib所说,服务器必须在此期间存储用户信息。
这也可能是一种安全风险。如果用户关闭网页而不是注销,则会增加CSRF攻击的窗口。
最好的办法是了解用户如何使用网页。如果页面必须长时间保持打开状态,请查看页面的定期回调或刷新。或者,如果站点对安全性敏感,请考虑在一段时间不活动后自动将用户注销。
答案 3 :(得分:0)
请注意,如果您尝试在共享托管环境中提高超时值,则会因为在machine.config
文件和帽子中设置该值而阻止您,因此会失败先例,您需要使用 SQL Session ,并且您可以随意更改超时时间。
他们通常也经常重启AppPool以解除阻止可能阻止其他网站的任何恶意代码或恶意代码,每次AppPool重新启动时,这里都会进行所有会话(当然,如果您使用的是SQL会话)。
另一方面,如果您的自己托管网络应用程序,除了内存大小(请记住我假设您正在说用户会话并且作为name表示,每个用户,每个应用程序,您将使用应用程序会话)。如果你认为这种记忆增加,没有什么,甚至表现都不会减少。