【问题标题】:Load balancing with IIS and ASP .Net使用 IIS 和 ASP .Net 进行负载平衡
【发布时间】:2011-01-12 01:07:27
【问题描述】:

您好,

当您编写 ASP .Net 网站时,我必须考虑哪些应用程序将在具有 IIS 负载平衡器的环境中运行?

所有用户会话都由他们自己运行,会话之间没有共享数据。与 MSSQL 的单一连接。供下载的图像和文件将托管在一台服务器上。

Windows Server 2008、C# 和 .Net 4.0。

【问题讨论】:

    标签: asp.net iis load-balancing


    【解决方案1】:

    最明显的项目是会话状态。如果您进行负载平衡,来自同一用户的多个请求可能会在服务器之间移动。 ASP.NET(进程内)的默认会话提供程序不支持这一点(用户每次移动时都会获得一个新会话)。最简单的解决方案是移动到 ASP.NET 状态服务器或 SQL Server 会话。

    仅供参考:这两种解决方案都要求您放入 Session 的所有内容都是 [Serializable]。 in-proc 提供程序没有此要求,因此您可能会在更改提供程序时看到一些运行时错误并且需要修改您的代码。

    【讨论】:

    • 请注意,您的负载均衡器可能有一个名为“粘性会话”或关联性的选项,可以将用户发送到随机分配的同一台服务器。这会在一定程度上损害您的负载平衡,但确实可以让您继续使用进程内会话状态。
    • 依赖粘性的问题在于它通常是一个“尽力而为”的功能(在某些情况下,用户仍然可以在服务器之间移动)和调试案例“我只是无缘无故退出" 可能非常棘手。
    • 您还可以使用 Windows Server AppFabric 缓存来存储会话状态。看到这个link
    【解决方案2】:

    您需要将会话状态移动到会话状态服务中。避免将对象保留在会话中...如果您必须将对象保留在会话中,请确保使用 Serializable 属性标记它(这是通过序列化存储的方式)。

    一般来说,避免使用会话。请记住,ASP.Net 会话!= FormAuthentication。根据应用程序的性质,您的数据库很可能早在 Web 服务器之前就成为瓶颈。

    【讨论】:

      猜你喜欢
      • 2014-04-18
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      • 2013-04-09
      • 1970-01-01
      • 2011-01-01
      相关资源
      最近更新 更多