【问题标题】:Session sharing across multiple client server requests and among multiple servers跨多个客户端服务器请求和多个服务器之间的会话共享
【发布时间】:2012-07-25 11:53:09
【问题描述】:

我的问题是关于 ASP.net 会话管理。在当前的 Web 应用程序中,我们有“粘性会话”(用户总是被重定向到它开始与之交谈的服务器)。以下是我的问题陈述。

来自我们的一位客户的大量请求访问了我们的服务器。不知何故,请求是从 1 个或最多 2 个 IP 发送的。我们有 5 台服务器正在运行来满足这些请求。现在这里的问题是 1-2 台服务器可能会受到大量命中,而其他服务器可能处于空闲状态,因为粘性会话不允许 serverB 处理最初由 serverA

我们需要的恰恰相反。任何服务器都应该能够处理传入的请求以保持持续的对话。

我已经用非常简单的语言表达了我的问题。任何指针将不胜感激。

【问题讨论】:

  • 您是否尝试将会话存储在数据库中? support.microsoft.com/kb/317604
  • 感谢您的链接。我会通过它。
  • 它会自己在服务器之间负载平衡吗?我的意思是这个功能是内置在 asp.net 会话管理中的吗?
  • 对于 sql server 模式:要为 Web 场配置 SQLServer 模式,在每个 Web 服务器的配置文件中,将 sessionState 元素的 sqlConnectionString 属性设置为指向同一个 SQL Server 数据库。 IIS 元数据库中 ASP.NET 应用程序的路径在所有共享 SQL Server 数据库中的会话状态的 Web 服务器上必须相同。 msdn.microsoft.com/en-us/library/ms178586.aspx
  • 考虑到我是 Web 开发的新手,您的回答将使我免于在初始阶段可能遇到的一些问题。非常感谢。

标签: asp.net session-state session-management


【解决方案1】:

为什么不只存储会话状态on a SQL server

【讨论】:

  • 负载平衡是如何完成的。我必须编程还是 asp.net 会为我做?
  • 您可以使用普通的负载均衡器,但只需禁用粘性会话。这允许您的服务器负载均匀分布,并且特别适合您的情况。由于您要根据请求从/向 SQL 服务器反序列化和序列化会话状态,因此涉及一些开销,因此您必须确定这是否会成为您设计中难以忍受的瓶颈。
  • 来自 msdn 要在 Web 场中使用 StateServer 模式,您必须在 Web 配置的 machineKey 元素中为属于 Web 场的所有应用程序指定相同的加密密钥。
  • 谢谢托雷斯。我想我越来越接近您的答案和链接的解决方案。这对我很有帮助。
猜你喜欢
  • 2015-04-13
  • 2016-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多