And*_*mas 9 session-state inproc appfabric appfabric-cache
我有一个ASP.Net MVC应用程序,它大量使用session来保存状态(包括大数据集合).目前,它托管在一个Web服务器上.会话设置为InProc的默认值.
出现了一个问题,即当许多用户在线时,应用程序会冻结某些用户.我想这是因为InProc会话不能很好地扩展,并且该进程只有很多可用内存.(如果内存需求超过可用内存会发生什么 - 它是否会换出磁盘?)
我有几个解决方案可以帮助实现可伸缩性.(a)Sql server会话状态; (b)配置会话状态以使用AppFabric缓存.第一个选项看起来是一个很好的解决方案,除了它会影响性能并要求存储的项目可序列化.
如何在单个Web服务器也用作缓存主机的环境中配置会话状态以使用AppFabric缓存(也称为Velocity)?在单一服务器环境中,这与InProc有何不同?这会提供比InProc更多的可扩展性和可用内存,还是基本上会达到相同的约束?
您最好为您的方案实现AppFabric Cache.随着系统的增长,您可以使用每个新的Web节点增加缓存服务器的数量 - 这是使用SQL Server无法轻松完成的,无需额外成本.SQL Server许可的成本远高于AppFabric - 它与Windows Server许可捆绑在一起.
SQL Server将提供的唯一好处是可恢复性,但是对于您所需要的,它可能是过度的.
请参阅相关的SO帖子讨论AppFabric Cache与SQL Server的会话.
如果遇到内存限制,可以将AppFabric Cache放在另一台服务器上.你不能用InProc做到这一点.
以下是AppFabric Cache的其他一些其他好处: