我有一个 ASP.Net MVC 应用程序,它大量使用会话来保存状态(包括大型数据集合)。目前,它托管在单个 Web 服务器上。会话设置为默认的 InProc。
出现一个问题,即当许多用户在线时,某些用户的应用程序冻结。我猜这是因为 InProc 会话不能很好地扩展,并且进程可用的内存只有这么多。(如果内存需求超过可用内存会发生什么——它会换出到磁盘吗?)
我想到了几个有助于可扩展性的解决方案。(a) Sql server 会话状态;(b) 配置会话状态以使用 AppFabric 缓存。第一个选项看起来是一个不错的解决方案,只是它会影响性能并要求存储的项目是可序列化的。
在单个 Web 服务器也用作缓存主机的环境中配置会话状态以使用 AppFabric 缓存(又名 Velocity)怎么样?这与单服务器环境中的 InProc 有何不同?这会比 InProc 提供更多的可扩展性和可用内存,还是本质上会受到相同的限制?