在所有常见配置错误中,有一种情况是:当网站开始扩展到多台Web服务器时把会话状态放到SQL Server数据库中。 错误背景 为了照顾那些不理解会话状态是什么的朋友,我们退后一步讲起,以便他们也可以理解。会话状态允许Web开发人员在Web服务器上把值存储到变量中,但是要保存在共享的位置,这样不管终端用户连接的是哪一台Web服务器,这些保存的值都能访问到,Web服务器群彼此之间都会认可这些会话信息。对于B2C网上购物网站,或者其它带有登录提示的网站,或者被配置为发送用户连接到下一个可用Web服务器的负载均衡网站,这一点都非常重要。
问题出在哪里? 现在问题变成了,大多数人在需要扩……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号

TechTarget
官方微博

TechTarget中国
在所有常见配置错误中,有一种情况是:当网站开始扩展到多台Web服务器时把会话状态放到SQL Server数据库中。
错误背景
为了照顾那些不理解会话状态是什么的朋友,我们退后一步讲起,以便他们也可以理解。会话状态允许Web开发人员在Web服务器上把值存储到变量中,但是要保存在共享的位置,这样不管终端用户连接的是哪一台Web服务器,这些保存的值都能访问到,Web服务器群彼此之间都会认可这些会话信息。对于B2C网上购物网站,或者其它带有登录提示的网站,或者被配置为发送用户连接到下一个可用Web服务器的负载均衡网站,这一点都非常重要。
问题出在哪里?
现在问题变成了,大多数人在需要扩展会话状态时会选择把会话状态放到SQL Server数据库中,因为这是一种非常简单的存储方式,有很多地方都已经按这种方式做了,更不用说在ASP.NET中有会话状态代码可以很容易地支持它。把会话状态信息放到SQL Server数据库中的出发点是,你不必再对关于把会话状态信息持久化保存到磁盘的问题废话。信息不只是保存一个小时左右,如果数据库中的信息丢了,唯一影响就是在会话变量中的所有值都丢了。
还有别的选择吗?
除了采用SQL Server存储会话状态,我们还有下面几种选择:
- 继续使用进程中处理。
- 使用ASP.NET会话状态服务。
最简单的方法就是在IIS中为会话信息继续使用进程中处理方案。这意味着你将需要在负载均衡中配置关联会话,这样用户时时刻刻都会看到相同的Web服务器。一旦出现Web服务器故障问题,所有那些用户的会话信息都会丢失,他们需要用日志重新恢复网站,或许他们的购物车会清空,不管该网站做什么都会丢失。
ASP.NET会话状态服务是一个Windows服务,提供一种只在内存中保留的会话状态库,这样会话信息永远不会写到磁盘上,它也不必保存在web服务器上。你既可以对指定的计算机这样设置,也可以设置多台计算机把服务手工集群,这样你的会话状态服务就有了HA解决方案。如果你已经有SQL Server集群了,而且如果你没有其它更好的方案可以用,你可以对它应用该集群。只需要配置该集群,使SQL Server运行的节点作为首选节点,使会话状态运行在另一个节点上作为首选节点。这样该服务永远不会运行在同一个节点,除非另一个节点出现故障。会话状态服务不会占用太多CPU资源,而且它需要的存储器数量完全取决于你在web服务器上放入会话变量中信息量的多少。
在这两种情况中,每种解决方案都比把会话状态信息放到SQL Server数据库中要好。这些信息甚至不需要被写到磁盘上。写到会话状态数据库中的信息是blob二进制格式,而不是任何排序相关格式,因此实际上你使用这些信息时也很不方便。
作者
翻译
TechTarget特邀编辑。2003年入软件行业,熟悉软件过程所有环节,对机构信息化的各方面有深入理解和实践经验。现就职于某互联网创业公司,目前关注互联网分布式系统架构和机器学习。喜欢传统文化社科哲学(尤喜《周易》、《老子》),喜健身喜抓举(具备抱人引体向上的能力),喜欢中国象棋(具备盲棋1对2的能力)。
相关推荐
-
Linux支持的引入 推动了SQL Server 2016集成服务的发展
随着SQL Server的不断发展,集成服务也在发生相应的变化。在最新的SSIS更新中,增加Linux支持和SQL Server 2016升级向导。
-
Notre Dame对云端SQL Server性能基准的探索实践
确立SQL Server的性能基准,对于云端迁移来说是至关重要的第一步,一位来自于University of Notre Dame 的DBA表示,他正在试图通过数据库监控软件,找出SQL server的性能基准。
-
横向扩展SQL Server应用程序:提高工作负载的选项
SQL Server管理员面临的最大挑战之一就是扩展数据库以适应更为繁重的数据处理工作负载。然而事情越发复杂的是,虽然Microsoft提供了许多不同的SQL Server可扩展性选项,但它们并不都适合于每种情况。
-
五大技巧构建首个SQL Server容器
容器的世界庞大而复杂,使用者可能会感到困扰,这里我们将列出一些示例,以便引导您顺利完成SQL Server容器的创建和管理。