代码之家  ›  专栏  ›  技术社区  ›  Mitchel Sellers

允许Web场中的会话?StateServer足够好吗?

  •  22
  • Mitchel Sellers  · 技术社区  · 17 年前

    我们希望能够删除负载平衡器上的“粘性会话”配置,因为由于我们的流量负载,服务器可能而且确实会过载。我们希望采用更平衡的方法,但必须能够使用会话。

    我知道用于会话状态的SqlServer可以工作,但由于我们无法控制的原因,我们无法使用SqlServer存储状态。在研究中,StateServer似乎是我们最好的选择。我们有一个额外的服务器,有大量的内存。该服务器可以是整个Web集群的StateServer。我们只想知道以下事情。

    1.)除了从InProc切换到StateServer可能出现的任何序列化问题外,在上述环境中是否存在丢失会话对象或生成错误的重大已知问题?

    2.)除了单点故障和稍慢的性能之外,使用StateServer还需要注意其他问题。

    3.)是否有任何指标显示三种状态存储之间的性能差异?

    6 回复  |  直到 13 年前
        1
  •  23
  •   AaronS    17 年前

    以下是有关asp.net状态的常见问题解答: http://www.eggheadcafe.com/articles/20021016.asp

    • 在web服务器场中,确保所有web服务器中都有相同的MachineKey。看见 KB 313091
    • KB 312112 详情请参阅。
    • 要在web场中的不同web服务器之间维护会话状态,IIS元数据库中网站的应用程序路径(例如\LM\W3SVC\2)在web场中的所有web服务器中都应相同。看见 KB 325056
        2
  •  3
  •   eglasius    17 年前

    我只在proc中使用了sql和in。但在使用sql server时适用的这三种方法也适用:

    • 避免在会话中存储太多信息,因为这会影响序列化和通过网络传输的数据。
        3
  •  2
  •   saasman    17 年前

    确保服务器etag ID在整个web场中同步,否则客户端浏览器上的缓存将被打乱。

    您是否详细检查了代码,以确保所有内容都可以在进程外和跨LAN高效地序列化?

    您是否解决了系统中的主要性能问题?我这样问是因为数据库是争论的典型来源。

    我离开粘性会话的主要动机是操作灵活性,即关闭有问题的服务器或部署软件升级。因此,在实现了中央会话状态服务之后,请确保从操作的角度充分利用它。

        4
  •  2
  •   SevDer    17 年前

    我认为你可以探索其他产品来达到最好的效果。一个自由的选择是 Velocity 但它仍然没有发布。 另一个全面但经过验证的产品将是(实际上非常昂贵) NCache . 这甚至可以帮助您以更低的成本实现系列化,如果您使用他们的API,效果会更好。

    关于SQL Server,如果有足够的点击率,您的服务器很快就会死掉(我相信您已经有了一些点击率,这让您可以创建Web Farm,或者您只是为了冗余而这样做)

        5
  •  0
  •   laktak    17 年前

    我不负责它的运行,但我记得两年中只有两次服务因为崩溃而不得不重新启动。

        6
  •  0
  •   Amol    13 年前

    • 确保framework DLL的版本相同。

    在我的例子中,System.Web dll版本不同,因为在服务器场的一个服务器上跳过了一些windows更新。

    推荐文章