`
isiqi
  • 浏览: 16068564 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

ASP.NET中状态对象使用性能优化

阅读更多

以前的ASP允许开发人员访问会话状态信息,并且允许他们将有关用户的信息存储在这个会话对象的内部。这些信息可以从站点的任何一个其它的页面上进行访问。但是,ASP会将这些信息保存在Web服务器的内存之中。因此,如果使用多台Web服务器,用户的请求可能就会被发送到一个与发起会话的服务器不同的其它服务器上,有关会话的信息将无法获得。如果某个Web服务器重新进行了启动,它保存的所有会话信息都将丢失,这对站点的正常运转会造成不可估量的影响。

而目前的ASP.NET初了提供传统的单服务器会话信息,还为会话信息的集中提供了两个方法,这使得用户可以从很多不同服务器上获得这些会话数据。具体使用两种方法中的哪一种完全由系统管理员来决定 —— 它并没有以代码形式固定在程序之中。所以,对于那些不是针对Web商务模型进行设计的ASP .NET Web程序或Web服务,系统管理员可以对其进行衡量和分等。

ASP.NET可以使用三种方法存储会话状态信息:存储在进程中;存储在一台中央状态服务器上;或者存储在SQL Server数据库中。将会话信息保存在进程中这种方法与传统的ASP会话类似,因为会话状态信息也保存在Web服务器的内存之中,不和其它系统进行共享。这种配置方法具有最佳的执行性能,因为ASP.NET不需要同网络中的其它系统通信以取得会话信息。但是,这种做法限制了系统的伸缩性 —— 会话不能跨越多台服务器,而且如果用户从一台Web服务器移动到了另一台服务器上,他们的会话信息将被丢失。

状态服务器是运行一种特殊服务的中央服务器,该服务内置在.NET Framework之中。状态服务器存储状态信息供Web应用程序中的多台服务器使用。用户可以从一台Web服务器移动到另一台,而不会丢失状态信息。状态服务器引入了一些额外的工作负载,因为在每次用户请求一个页面的时候,会话信息必须能够通过从Web服务器发送到状态服务器的网络请求被检索和被更新。虽然需要花费一些额外工作来处理用户请求,但是系统的伸缩性和可靠性却因此得到了极大的提高,因为Web应用程序可以伸缩到多个多台服务器上。

存储会话状态信息的第三种方法是使用一个SQL Server数据库。这种方法具有与使用中央状态服务器相同的好处 —— 会话可以跨越多台Web服务器进行跟踪。但是,同使用中央状态服务器相比,使用SQL Server服务器跟踪会话产生的工作负载更大。SQL Server服务器能够配置成群集的形式,从而提供最大限度的冗余。此外,SQL Server可以伸缩到配备4颗处理器的高端硬件上,从而实现更多会话的并发存储。

要对状态对象的使用进行优化,就必须首先了解“超时”,“超时”设置定义了会话状态在用户进行上一次请求后能够存留的时间。默认情况下,该时间被设置为20分钟。所以,如果用户等上20分钟后再向服务器发送一个请求,服务器将创建一个新的会话。该设置不会影响系统,特别是在使用存储在进程中的会话的时候。超时时间定义的越长,在用户不主动访问您的站点期间会话中所存储信息的存活时间也就越长。但是,会话状态在进程中进行维护会占用Web服务器的内存。

如果你的站点用户较少,但是他们的停留时间比较长,或者他们每天都定期多次访问你的站点,那么你可以定义一个较长时间的超时设置。如果你的站点有成千上万的用户,而且这些用户一般仅仅浏览一两个页面就离开,那么你可以设置一个较短时间的超时设置。然后,请仔细监视Web服务器的运行情况,以确定对会话状态的维护是否会对系统性能造成不良影响。

为了调整超时设置,请监视“ASP.NET应用程序”对象中的“活动会话”计数器。该计数器指出了当前活动会话的数目,一般来说,该数目会随着超时时间的增加而增多。Web服务器所能够处理的最大会话数量随存储在会话中的信息应用程序数量不同而发生变化。但是,保有过多的并发会话将消耗大量的服务器内存。因此,你还应该监视服务器的内存使用情况。如果在提高了会话的超时时间设置之后,内存的分页操作也随之增加了,那么你应该减少会话的超时时间,或者在服务器上增加更多的内存。

分享到:
评论

相关推荐

    微软ASP.NET入门教程

    性能优化提示 测量性能 ASP 到 ASP.NET 的移植 移植概述 语法和语义 语言兼容性 COM 互操作性 事务 示例应用程序 个性化入口 电子商务店面 类浏览器应用程序 IBuySpy.com 比特整理( www.bitceo.com )

    ASP.Net性能优化.ppt

    ASP.Net性能优化 1.会话状态的恰当选择 2.Viewstate优化 3.Cache优化 4.控件优化与选择 5.返回多个记录集 6.数据分页优化 7.Ado.Net对象选择 8.数据前绑定 9.存储过程优化,C# Coding优化

    asp.net知识库

    在ASP.NET中使用WINDOWS验证方式连接SQL SERVER数据库 改进ADO.Net数据库访问方式 ASP.NET 2.0 绑定高级技巧 简单实用的DataSet更新数据库的类+总结 [ADO.NET]由数据库触发器引发的问题 为ASP.NET封装的SQL数据库...

    ASP.net入门教程

    所有 ASP.NET 代码都经过了编译,可提供强类型、性能优化和早期绑定以及其他优点。代码一经编译,公共语言运行库会进一步将 ASP.NET 编译为本机代码,从而提供增强的性能。 ASP.NET 包括一个编译器,该编译器将包括...

    asp.net4 in C#2010

    该书提供了详尽的ASP.NET的覆盖面,引导你从你的第一个步骤,一直到最先进的技术,如查询从一个网页数据库和优化您的网站以获得最佳性能。在这些网页,你会发现“最佳做法”和密钥数据库和XML的原则,全面的讨论让你...

    ASP.NET Night Words

    第21章 asp.net网站的性能优化 407 21.1 程序编码优化 407 21.1.1 集合操作 407 21.1.2 字符串连接优化 410 21.1.3 类型转换优化 413 21.1.4 使用server.transfer()方法 414 21.1.5 避免不必要的服务器往返 ...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    9.1 使用ASP.NET 2.0中的主题 253 9.1.1 给单个ASP.NET页面应用主题 253 9.1.2 把主题应用于整个应用程序 255 9.1.3 删除服务器控件中的主题 255 9.1.4 删除Web页面上的主题特性 256 9.1.5 StyleSheetTheme属性...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    6.1 ASP.NET状态管理 6.2 视图状态 6.2.1 视图状态示例 6.2.2 在视图状态中保存对象 6.2.3 视图状态评估 6.2.4 有选择地禁用视图状态 6.2.5 视图状态安全 6.3 在页面间传送信息 6.3.1 查询字符串 ...

    庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术

    6.9 页面状态性能优化策略 238 6.9.1 存储位置优化——把视图状态信息保存在服务端而非客户端 238 6.9.2 体积优化——压缩视图状态数据 240 6.9.3 分块存储视图状态数据 243 6.10 视图状态和控件状态的总结 243 ...

    ASP.NET2.0高级编程(第4版)1/6

    本书全面介绍了ASP.NET各种编程技能和2.0版中的巨大变化,并详细阐述了2.0版中的每个新特性。书中提供了大量的实例,可帮助读者快速掌握如何在.NET平台下开发功能强大的ASP.NET应用程序。本书适合有一些基础的ASP...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    再比如ASP.Net内置的AJAX解决方案UpdatePanel只在部分要求不高的内网项目中才被使用,因此我们在讲解UpdatePanel的使用和原理之外,把更多的时间放在讲解企业中用的最多的JQuery AJAX解决方案上。 6、B/S系统项目(7...

    asp.net面试题

    八、ASP.NET有多种维护状态的技术,以下哪种是保存在客户端的?( ) A.VIEWSTATEB.SESSIONC.APPLICATIOND.数据CACHE 九、Cookies的默认生命周期有多长? ( ) A.20分钟B.30分钟C. 一天D.随浏览器的关闭而失效 十...

    庖丁解牛纵向切入ASP.NET 3.5控件和组件开发技术.pdf

    6.9 页面状态性能优化策略238 6.9.1 存储位置优化——把视图状态信息保存在服务端而非客户端238 6.9.2 体积优化——压缩视图状态数据240 6.9.3 分块存储视图状态数据243 6.10 视图状态和控件状态的总结243 6.11...

    ASP.NET 2.0 跟我一起学Visual.Studio2005 2/9

    本讲将针对ASP.NET状态管理作一个全面的阐述,听完本讲可让您对ASP.NET状态管理有一个完整的认识。 跟我一起学Visual Studio 2005(8):ASP.NET配置管理 (Level 200) 课程简介:本讲将阐述ASP.NET的配置管理,包括...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part1

    6.9 页面状态性能优化策略 238 6.9.1 存储位置优化——把视图状态信息保存在服务端而非客户端 238 6.9.2 体积优化——压缩视图状态数据 240 6.9.3 分块存储视图状态数据 243 6.10 视图状态和控件状态的总结 243 ...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part2

    6.9 页面状态性能优化策略 238 6.9.1 存储位置优化——把视图状态信息保存在服务端而非客户端 238 6.9.2 体积优化——压缩视图状态数据 240 6.9.3 分块存储视图状态数据 243 6.10 视图状态和控件状态的总结 243 ...

    ASP.NET 2.0 跟我一起学Visual.Studio2005 1/9

    本讲将针对ASP.NET状态管理作一个全面的阐述,听完本讲可让您对ASP.NET状态管理有一个完整的认识。 跟我一起学Visual Studio 2005(8):ASP.NET配置管理 (Level 200) 课程简介:本讲将阐述ASP.NET的配置管理,包括...

    亮剑.NET深入体验与实战精要2

    15.3 ASP.NET开发性能优化 540 15.3.1 如没必要,尽量使用静态HTML页面 540 15.3.2 避免不必要的回送操作 541 15.3.3 尽量在客户端进行用户输入验证 541 15.3.4 关闭不必要的Session状态 542 15.3.5 优先使用HTML...

Global site tag (gtag.js) - Google Analytics