gpt4 book ai didi

c# - 进程外 SessionState 内存管理

转载 作者:太空狗 更新时间:2023-10-29 23:45:23 28 4
gpt4 key购买 nike

我们正在使用进程外 session 状态服务/ASP.Net session 状态。我们知道这有问题,因为它在过去被滥用,在 session 状态中经常存储太多内容,所以我们正在转向更具可扩展性的系统。

不过,与此同时,我们正在努力了解 session 状态服务如何管理它的内存 以及我们有哪些限制。但是nonethe微软docs似乎进入任何细节。

我特别想知道:

  • proc session 状态服务(与 IIS 一起安装在 Windows 管理控制台中)可以存储多少“标准”有什么限制?(x64)
  • 每个用户是否有限制?

标准服务,我指的是这个:

enter image description here

最佳答案

没有超出托管服务的机器的限制。如果它有 16 GB 的 RAM,假设一些 GB 用于其他进程/操作系统等,那么 session 数据将有大约 13 GB 的内存可用。数据不会持久保存到磁盘,因此数据只存在于 RAM/内存中;这就是为什么当您重新启动服务时所有 session 都消失了。内存是 volatile 的,像 RAM 磁盘一样工作。

如果您达到了托管 session 状态服务的机器的内存限制,您要么为每个用户存储了太多数据,要么有太多用户存储了少量数据。您已经在正确的轨道上,因为下一步是转向分布式 session 状态提供程序以正确扩展。这通常是通过带有 session 状态提供程序的分布式缓存系统来实现的,或者通过针对所述系统编写您自己的提供程序来实现。

每个用户的数据没有限制,但请注意进程外通信总是通过序列化发生。因此,存在一个实际限制,因为无论您如何处理,每个请求对大量用户数据进行序列化/反序列化都会非常缓慢。

关于c# - 进程外 SessionState 内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25551753/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com