【问题标题】:Can Memory Pressure lead to Session Data Eviction in ASP.NET?内存压力会导致 ASP.NET 中的会话数据驱逐吗?
【发布时间】:2009-10-01 21:41:09
【问题描述】:

内存压力曾经会导致会话信息在 ASP.NET 中被驱逐吗?

如果是这样,这是否只会在所有缓存都被驱逐后才会发生(即使使用 CachePriority.Highest),或者发生这种情况的阈值是多少?

【问题讨论】:

    标签: c# asp.net session-state memory-pressure


    【解决方案1】:

    它不会像缓存一样被自动清除以节省内存。但是,如果工作进程内存不足,它将自动重新启动。如果您使用 InProc 会话存储,这意味着所有会话都将丢失。

    【讨论】:

    • 与我对马特的评论相同 - 我正在使用进程外 ASP.NET 会话状态服务器。但是,我想知道我是否会遇到这样的情况:会话的特定字段已被逐出,而其他字段仍然存在。
    • @Alex - 不,ASP.Net 会话状态服务器永远不会丢失会话中的任意值(由于内存不足或其他原因)。
    【解决方案2】:

    Session 对象是一个单一的单元。如果会话因内存资源不足而中断,则会删除整个对象,而不是单个属性。

    如果您遇到 Session 对象中的单个值消失,最可能的原因是您在某处有一些代码将其删除。

    【讨论】:

      【解决方案3】:

      Session 和 Cache 绝对是易失的存储介质。我不确定是否存在相互影响的优先级,但您需要考虑的因素不仅仅是内存压力。例如,只需修改 web.config(回收应用程序池)即可擦除 Session。这当然是假设您使用的是默认会话存储提供程序——您可以更改为进程外或 SQL 会话存储(如果这可能有助于您的特定场景)。

      【讨论】:

      • 我正在使用进程外的 ASP.NET 会话状态服务器。但是,我想知道我是否会遇到这样的情况:会话的特定字段已被逐出,而其他字段仍然存在。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      • 2014-05-11
      • 1970-01-01
      • 2021-03-23
      • 2021-09-25
      • 2014-12-08
      • 1970-01-01
      相关资源
      最近更新 更多