【问题标题】:Out of proc SessionState memory managementOut of proc SessionState 内存管理
【发布时间】:2014-08-28 14:47:18
【问题描述】:

我们正在使用 out-of-proc 会话状态服务/ASP.Net 会话状态。我们知道这方面存在问题,因为它在过去被滥用,太多存储在会话状态中,因此正在转向更具可扩展性的系统。

不过,与此同时,我们正试图弄清楚会话状态服务如何管理它的内存以及我们有什么限制。但是nonethe 微软docs 似乎进入了任何细节。

具体我想知道:

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

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

【问题讨论】:

  • 我已经看到了,但这个问题不是很具体,不清楚他是在谈论 outpfproc 的 inproc 还是 x32/x64。 TBH 我不明白这个问题是如何获得 5 票赞成的。其次,这个答案(根本)没有回答问题。
  • 当我读到它时,Out of Process state management using the session state server (mode="StateServer") is limited to the amount of memory available to the state service. 这样会回答您的第一个问题,并隐含地为使用limited to the amount of memory available to the state service. 的用户回答第二个问题。因此,这只是对 32 位机器 (2gb) 或安装为 64 位的内存的限制,大约为 128gb 到 16tb,具体取决于操作系统。
  • @Liam 您的第一个问题的答案是否取决于 StateServer 有多少内存可用?我认为这更常被称为 StateServer 而不是进程外或“状态服务”

标签: c# asp.net .net session asp.net-session


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2010-09-07
    • 2019-06-23
    相关资源
    最近更新 更多