【问题标题】:is there any disadvantage or limitations of setting maximum session out time?设置最大会话超时时间有什么缺点或限制吗?
【发布时间】:2012-12-16 12:44:58
【问题描述】:

在 asp.net 中,默认会话超时为 20 分钟。假设如果我将会话超时时间更改为 2 小时或更长,那么它会导致服务器端出现任何性能问题吗?

我想知道在 asp.net 中使用最大会话超时时间有什么限制或缺点吗?

请指导我摆脱这个问题?

【问题讨论】:

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


    【解决方案1】:

    会话在服务器上为每个用户维护。会话超时的增加将阻止服务器释放分配给非活动会话的内存。

    我想知道是否有任何限制或缺点 在 asp.net 中使用最大会话超时时间?

    HttpSessionState.Timeout Property

    Timeout 属性不能设置为大于 525,600 的值 分钟(1 年)。默认值为 20 分钟。

    缺点: 如果您有大量用户并且会话超时增加,您将遇到性能问题,您的非活动会话将保留在 Web 服务器内存中,这可能会导致应用程序池回收,从而导致所有用户的所有会话丢失。

    【讨论】:

    • @JeremyThompson,现在添加 :)
    • 关于“大量用户”的任何大致数据?大概有多少内存 - 比如说 - 在会话中为每个用户存储几个 Guid?
    【解决方案2】:

    如果您使用的是 IIS6 或更高版本,则取决于您的应用程序池设置,它可能会影响 w3wp 进程的回收频率。当应用程序池被回收时,您的会话将丢失,除非您使用 out-of-process session state management 或 sql 作为会话状态主机。

    如果您将超时时间增加到两小时,单个用户不会经常丢失会话,但会增加浏览该站点的所有用户在进程被回收时偶尔会被注销的可能性。

    【讨论】:

      【解决方案3】:

      请注意,如果您尝试在 共享托管环境 中提高超时值,您将失败,因为他们会通过在 machine.config 文件中设置该值来阻止您这样做,并且帽子是先例,您需要为此使用 SQL Session ,您可以随意更改超时时间。

      他们通常还会经常重新启动 AppPool 以解除阻止任何可能阻止其他网站的恶意或不良代码,并且每次 AppPool 重新启动时,您的所有会话都会出现(当然,如果您使用 SQL 会话而不是).. .

      另一方面,如果您自己托管 Web 应用程序,除了内存大小(请记住,我假设您说的是 用户会话,并且作为名称表示,是每个用户,每个应用程序,您将使用应用程序会话)。如果您考虑这种内存增加,则不会降低任何内容,甚至不会降低性能。

      【讨论】:

        【解决方案4】:

        增加会话时间意味着处于空闲状态的网页不太可能超时(例如,如果用户去吃午饭而网页处于打开状态)。但是,这会占用更多的服务器资源,因为正如 Habib 所说,服务器必须在此期间存储用户信息。

        这也可能是一种安全风险。如果用户关闭网页而不是注销,则会增加CSRF 攻击的窗口。

        最好的办法是了解您的用户如何使用网页。如果页面必须长时间保持打开状态,请查看页面的定期回调或刷新。或者,如果网站对安全敏感,请考虑在一段时间不活动后自动将用户注销。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-02-22
          • 1970-01-01
          • 2011-04-30
          • 2021-09-30
          • 2012-10-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多