【问题标题】:SQL Server Session State, web farm, and counting the sessionsSQL Server 会话状态、Web 场和会话计数
【发布时间】:2012-04-08 07:23:17
【问题描述】:

我有 2 个负载平衡的 Web 服务器。我的应用程序正在使用 SQL Server 2008 上的 SQL Server 会话状态数据库。

这两个 Web 服务器在 IIS 配置方面是相同的,如果我理解正确的话,两个服务器上的两个 Web 应用程序将映射到 ASPStateTempApplications 表中的相同应用程序 ID,因为它们具有相同的 IIS 配置。因此,计算与此应用 ID 关联的会话数(来自 ASPStateTempSessions 表)将得出两个 Web 服务器上的会话总数。

我的问题是: 有没有办法单独知道每台服务器上有多少会话处于活动状态?

我有一个问题,当我从负载平衡中取出一台服务器时,我想在回收之前知道服务器上是否还有任何活动会话。

另一种情况,如果我必须在其中一个服务器上回收 IIS,因为同一服务器上的另一个 Web 应用程序崩溃了,我想知道这样做会影响多少会话。

谢谢。

【问题讨论】:

  • 使用 SQL 会话状态的全部意义在于回收(或重新启动)应用服务器对客户端的影响为零。唯一会抵消这种好处的是,如果您的负载均衡器设置为使用粘性会话,即使这样,如果一台服务器出现故障,它应该故障转移到另一台服务器,并且该状态仍然可以在数据库中访问。跨度>
  • 同意,与其努力确定每台 iis 服务器上的会话数,不如努力做到这一点,这样您就不必在意了。我认为你应该在那里,但如果不是,那就去那里。我对您的问题的回答是“让这个问题变得无关紧要”。

标签: asp.net sql-server iis-7 session-state


【解决方案1】:

基本上,它们都可能并且实际上应该在两者上都处于活动状态)因为在这种模式下,会话根本不绑定到网络服务器。

您可以使用网关上的负载平衡技术将每个用户固定在单个服务器上,如果是这样 - 最好使用 InProc 模式及其所有优点)

【讨论】:

    【解决方案2】:

    由于会话数据存储在 SQL Server 中,您不必担心有多少会话处于活动状态。一旦服务器关闭(或 IIS 被回收,取决于配置),负载平衡器将自动向活动 IIS 服务器发送任何新请求。通过将会话数据存储在 SQL 中,活动服务器可以检索会话数据,而用户将不会意识到发生了任何服务器切换。

    理想情况下,您应该定期测试此过程以确保一切配置正确。此外,在将补丁安装到服务器时,您应该遵循此过程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-28
      • 2018-12-01
      • 2023-03-10
      • 1970-01-01
      • 2012-12-11
      • 1970-01-01
      • 2014-09-17
      • 2011-07-21
      相关资源
      最近更新 更多