【问题标题】:Storing Session State in an ASP.Net Web Farm (Memcachedb or...?)在 ASP.Net Web Farm 中存储会话状态(Memcachedb 或...?)
【发布时间】:2011-04-06 12:31:33
【问题描述】:

我们有一个 ASP.Net [MVC] 网络场(运行 IIS 的 Windows Server 2008 R2)。我们希望在每个盒子之间共享会话状态。

我知道我们可以使用 SQL Server 做到这一点,但要理解这样做会产生开销(有人提到性能下降 25%)。

Memcachedb 不断被提及,但我似乎无法找到将其挂接到 ASP.Net 以用于会话状态的方法。

有人用 .Net 成功实现了 Memcachedb 吗?或者对于在所有盒子中存储会话状态的最佳方法是否有其他建议?

非常感谢

【问题讨论】:

  • 我没有看到你说的这 25% 的性能下降......你能告诉我们你在哪里看到的吗?在我的 sql server 中,会话状态非常快,我什至不在乎。
  • 我找不到明确表示 25% 的来源,但是这篇文章引用了“10%-25%”。在某些情况下我们使用复杂类型,我认为我们的命中率可能更高:idunno.org/articles/277.aspx - FTA:“使用 SQL 比使用 InProc 会话状态慢。当存储基本数据类型(字符串、整数等)时, ASP.Net 存储它们的值可能需要 10%-25% 的时间。复杂类型需要更长的时间。当然,因为您连接到单独的服务器,它确实会使用网络上的带宽。”
  • 10%-25% 听起来太大了(但是...),我的网站需要 70 毫秒到 200 毫秒才能开始显示页面,并且我使用 sql 会话状态。现在 100 毫秒上的 10%,只是额外的 10 毫秒,太小而不能算作延迟。而且我的延迟不是来自会话状态。现在,如果您的一台服务器在欧洲而另一台服务器在美国,则使用 SQL 连接到另一台服务器是一个问题,您可能有 100 毫秒以上的延迟。但如果它们在同一建筑物上,则延迟为 0。

标签: asp.net session-state memcachedb


【解决方案1】:

在 codeplex site 上有一个用于 ASP.NET 的 Memcached 会话提供程序。

AppFabric 拥有 ASP.NET 会话 state provider

这个SO question 可能会有所帮助。

【讨论】:

    【解决方案2】:

    这是 github 上的另一个 Memcached 会话提供程序 - https://github.com/rohita/MemcachedSessionProvider

    【讨论】:

      猜你喜欢
      • 2012-02-12
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      • 1970-01-01
      • 2011-09-16
      • 2011-06-07
      相关资源
      最近更新 更多