Lia*_*iam 5 .net c# asp.net session asp.net-session
我们正在使用一个进程外的会话状态服务/ ASP.Net会话状态.我们知道这有问题,因为它在过去被滥用,过多地存储在会话状态中,因此正在进入一个更具伸缩性的系统.
与此同时,我们试图了解会话状态服务如何管理它的内存以及我们有什么限制.但是,没有任何的对微软文档似乎进入任何细节.
具体来说,我想知道:
通过标准服务,我的意思是这个:

除了托管服务的计算机之外,没有任何限制。如果它有 16 GB 的 RAM,假设有几 GB 用于其他进程/操作系统/等,那么将有大约 13 GB 的内存可用于会话数据。数据不会持久保存到磁盘,因此数据仅存在于 RAM/内存中;这就是为什么当您重新启动服务时所有会话都消失了。内存是易失性的,其工作方式类似于 RAM 磁盘。
如果您达到了托管会话状态服务的计算机的内存限制,那么您要么为每个用户存储了太多数据,要么有太多用户存储了少量数据。您已经走在正确的轨道上,因为下一步是转向分布式会话状态提供程序以正确扩展。这通常是通过带有会话状态提供程序的分布式缓存系统来实现的,或者通过针对所述系统编写您自己的提供程序来实现。
每个用户的数据没有限制,但请注意,进程外通信始终通过序列化进行。因此,存在实际限制,因为无论您如何处理,每个请求序列化/反序列化大量用户数据都会非常慢。