asp.net - 存储 ASP.NET session 变量的最佳解决方案是什么? StateServer 还是 SQLServer?

标签 asp.net session load-balancing

StateServer 还是 SQLServer?

  • 存储 ASP.NET session 变量的最佳解决方案是什么?
  • 各自的优缺点是什么?
  • 在任何特定情况下,一个比另一个更好吗?
  • 最佳答案

    这里有一些关于赞成/反对的想法。
    我还添加了 Microsoft Velocity 分布式缓存解决方案。
    InProc 的优点

  • 可用的最快可选(全部在内存/ram 中)
  • 易于设置(.config 文件中不需要任何新内容。我认为这是默认行为)。
  • 我相信大多数人都使用这个。

  • InProc 的缺点
  • 如果网站(应用程序池)死掉,那么所有的 session 信息都会丢失。
  • 在 WebFarm 方案中不起作用 -> session 信息仅针对每个应用程序池。
  • 不能包含非 session 信息。

  • StateServer 的专业版
  • 在内存/内存中,所以它很快(但有一些净延迟......阅读下面),所以它可能不如 Inproc 快。
  • Web 场方案的默认配置。多个 iis 站点使用状态服务器来控制状态 session 信息。

  • 状态服务器的骗局
  • 需要将 ASP.NET StateServer 服务设置为运行。
  • StateServer 需要一些配置调整来接受“远程 iis 机器”请求。
  • 如果 iis 请求需要在另一台联网机器上获取/设置 session 信息,则存在一些微小的网络延迟。
  • 不能包含非 session 信息。

  • SqlServer 的 Pro(作为状态服务器)
  • 状态始终保留,即使在 iis 站点重新启动后也是如此。

  • Con's for SqlServer(作为状态服务器)
  • 最慢的解决方案 -> 净延迟和硬盘延迟(因为 sql server 将状态存储在硬盘上/从硬盘读取)。
  • 最难设置/配置。
  • 不能包含非 session 信息

  • Pro's for Velocity(或其他分布式缓存系统)
  • 可以处理的不仅仅是 session 信息 -> 对象、应用程序设置、缓存等(IMO 这是一件非常好的事情!!)
  • 可以是仅内存或持久化到数据库。
  • 如果一个“节点”出现故障,系统仍然可以工作。 (假设有 2 个以上的缓存节点)

  • Con's for Velocity(或其他分布式缓存系统)
  • 一般费用$$$
  • 最难设置(必须安装东西,调整配置,添加额外的特殊代码)。
  • 有网络延迟(通常没有),但如果服务将数据持久化(例如到 Sql Server),则可能有硬盘延迟。
  • 关于asp.net - 存储 ASP.NET session 变量的最佳解决方案是什么? StateServer 还是 SQLServer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/224039/

    相关文章:

    javascript - 我如何通过使用javascript单击asp文本字段来检查单选按钮

    javascript - 通过 Eval 将多个参数传递给 Javascript 函数

    session - 如何在 Apache Tomcat 服务器和 Glassfish 服务器中列出所有具有事件 session 的事件用户名

    kubernetes - 如何在 Kubernetes 负载均衡器中响应 503 错误代码

    MongoDB 复制集和 ELB

    c# - 如何在 asp.net 中隐藏 Gridview 行值

    c# - 在 Azure 中使用事件日志(在事件查看器中写入)

    php - $_SESSION 仅在页面重新加载后读取

    c# - 在回发时将 ListBox 选择保持在 session 中

    amazon-web-services - 如何将自动伸缩组的节点自动添加到nginx或HAProxy?