【问题标题】:Is InProc Session State unstable under loadInProc 会话状态在负载下是否不稳定
【发布时间】:2016-08-12 21:38:28
【问题描述】:

this question 中,有一条评论表示赞成:

已知 InProc 会话状态在负载下非常不稳定。如果它被滥用(一直发生),那么 Session["foo"] = null 将比 Session.Remove["foo"] 执行得更好。垃圾收集器应该清理过多会话变量的混乱

这让我很担心,因为我的所有网络应用都大量使用了会话状态(帐户信息、购物篮、付款详情、用户偏好等)。

我似乎找不到任何证据来支持这种说法,有人可以揭穿它或解释为什么这是正确的。在会话中存储此类信息我错了吗?我不是在寻找 InProc 与 SQL 的优缺点,我知道它们之间的差异。

我的所有应用程序都在单个或专用的网络服务器上运行,因此我从未见过将会话状态转移到 SQL 的任何好处或意义。

【问题讨论】:

    标签: asp.net session iis session-state


    【解决方案1】:

    InProc 会话状态是稳定的,您不必担心。我不知道他为什么称它不稳定,但我猜他在评论时可能想到了以下原因之一:

    • 如果您的应用程序负载过大;当您扩展它时,您必须使用粘性会话(对于 InProc SessionState)将请求重定向到客户端的同一服务器,否则会话对象将不会持续存在。
    • 如果应用程序存在内存泄漏或不一致,负载过重很可能会触发应用程序重置,这将导致所有会话数据丢失,因此当前用户的活动页面可能会因为会话数据丢失而出错。
    • Session 对象在整个请求(仅限该用户)中被锁定,以防止多个页面写入会话,因此,例如,如果发出并发请求,它们必须相互等待才能将数据写入 Session。但它同时发生在 SQL 和 InProc SessionState 中。

    我看到了使用 InProc SessionState 的银行应用程序,并且没有任何不稳定的地方。

    【讨论】:

    • 如果它对银行业务来说足够好,那么我相信它对我的 LOB 应用程序来说也很好。谢谢,我以为会是这样,但很高兴有保证。
    猜你喜欢
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    • 2011-02-12
    • 2017-04-27
    • 1970-01-01
    相关资源
    最近更新 更多