我们正在使用进程外会话状态服务/ASP.Net 会话状态。我们知道这有问题,因为它在过去被滥用,太多存储在会话状态中,所以正在转向更具可扩展性的系统。
不过,与此同时,我们正试图弄清楚会话状态服务如何管理它的内存以及我们有什么限制。但微软文档似乎都没有涉及任何细节。
具体我想知道:
- proc会话状态服务(与Windows管理控制台中的IIS一起安装)可以存储多少“标准”限制是什么?(x64)
- 每个用户有限制吗?
通过标准服务,我的意思是这个:
没有超出托管服务的机器的限制。如果它有 16 gigs 的 RAM,假设有几个 gigs 用于其他进程/操作系统等,那么会话数据将有 13 GB 的内存可用。数据不会持久化到磁盘,因此数据只存在于 RAM / 内存中;这就是为什么当您重新启动服务时所有会话都消失了。内存是易失性的,像 RAM 盘一样工作。
如果您达到了托管会话状态服务的计算机的内存限制,那么您要么为每个用户存储了太多数据,要么有太多用户存储了少量数据。您已经在正确的轨道上,因为下一步将转向分布式会话状态提供程序以正确扩展。这通常通过带有会话状态提供程序的分布式缓存系统来实现,或者通过针对所述系统编写您自己的提供程序来实现。
每个用户对数据没有限制,但请注意,进程外通信总是通过序列化进行。因此,存在一个实际限制,因为无论您如何处理,每个请求对用户数据进行序列化/反序列化都会非常慢。