我的一个应用程序使用 sql 会话状态,超时当前设置为 20 分钟。我的问题是,由于它存储在数据库中而不是服务器内存中,我应该能够增加超时而不会出现任何重大的性能问题,对吗?
我不太了解超时对于数据库会话状态场景的重要性,因为数据库应该能够轻松处理大量会话。
我的一个应用程序使用 sql 会话状态,超时当前设置为 20 分钟。我的问题是,由于它存储在数据库中而不是服务器内存中,我应该能够增加超时而不会出现任何重大的性能问题,对吗?
我不太了解超时对于数据库会话状态场景的重要性,因为数据库应该能够轻松处理大量会话。
我认为超时的相关性更适用于面向公众的网站,您可能会获得大量点击并很快填满您的数据库。话虽这么说,无限也不是你想要的......
我也在寻找您的意见的确认——如果硬盘空间便宜,我应该能够在 SqlSessionState 中进行 8 小时的会话而不会出现明显的性能问题(超出 20 分钟的 sql server 会话原因),给定一个中等规模的办公室级内网应用。
请记住,关于会话的建议涉及您一次可以处理多少用户,用户开始某些工作、长时间中断以及需要继续的可能性有多大。
最后,如果您在会话中存储身份验证令牌或角色,那么您可能希望更频繁地使它们过期以检查用户仍然是用户并且仍然具有这些角色。
会话的长度应由功能确定(例如,在线银行往往会缩短超时时间,而类似的站点SO
则允许更长的时间输入条目),而不是由实现机制确定。
使用进程外模式允许在 IIS 重新循环的情况下保留会话上下文,并且需要较少的直接(由 IIS 本身使用)内存资源。但这与会话应该持续 8 小时还是 5 分钟无关。