SQL Server 2005可伸缩性和性能的计划(3)

80酷酷网    80kuku.com

  

  ASP.NET 应用程序性能统计类

  绝大多数关于ASP.NET应用程序性能统计类的信息,最近整理到了一个综合性的文档中叫做“改进.NET应用程序性能和扩展性”。以下的表格描述了一些监控和优化ASP.NET应用程序性能的重要的统计类,包括报表服务。

  

  性能对象

  统计类

  实例

  描述

  处理器

  % 处理器时间

  __Total

  % 处理器时间监控了Web服务器计算机的CPU利用情况。低CPU利用或者无法增加CPU利用,不考虑客户负荷,意味着在你的Web应用程序上有资源和锁之间的竞争。

  进程

  % 处理器时间

  aspnet_wp 或者 w3wp,依赖于IIS的版本

  ASP.NET处理所消耗的处理器时间百分比。当你将在标准负荷下的性能和以前捕获的基线进行比较,在统计类中减少了说明更低的处理器需求和改进了扩展性。

  进程

  工作规定

  aspnet_wp 或者 w3wp,依赖于IIS的版本

  ASP.NET激活时使用的内存数量。虽然应用程序开发人员能最好地控制应用所需的内存数量,但是管理人员通过调整会话超时周期可以明显地影响内存占用数量。

  进程

  私有字节

  aspnet_wp 或者 w3wp,依赖于IIS的版本

  私有字节是目前内存的字节大小,由本处理占用的,不可以和其他处理进行共享。一些瓶颈会导致工作处理占用比期待更多的内存。突然出现了统计类跌到0说明ASP.NET应用程序开始重启,由于无法预料的问题。为了校验,监控ASP.NET应用程序重启。

  ASP.NET 应用程序

  请求/秒

  __Total

  允许你核实请求是按最快的速度进行处理的。如果每秒请求的数量少于每秒请求产生的数量,队列就产生了。说明已经超出了最大的请求数。

  ASP.NET 应用程序

  错误统计

  __Total

  在执行HTTP请求期间发生的总的错误数。包括所有的转化,编译,和运行时错误。统计类是这些错误的汇总。一个良好功能的Web 服务器不应该产生许多错误。如果在ASP.NET Web应用程序上发生了错误,他们的出现可能使实际结果出现偏差。

  ASP.NET

  请求执行时间

  以毫秒来显示时间,是产生上一个请求页面到传输到用户的时间。这个统计类的时间将会大一点,是一个从开始到结束请求时间更综合的测量。如果统计类显示比基线更低的平均值,那么扩展性和应用程序的性能都提高了。

  ASP.NET

  应用程序重启

  Web服务器在生命周期内重启的次数。每个应用程序OnEnd事件和应用程序重启同时增加。

  应用程序重启一般发生在改变Web.config文件,改变了应用程序的in目录,或者在Web Forms pages有太多的更改。在统计类中有无法预料的增加,说明一些预想不到的问题导致Web应用程序关闭

  在这种情况下你应该调查事故原因。

  ASP.NET

  请求排队

  在队列中等待服务的请求数量。

  当队列中有请求时,说明请求数量超出了能处理的请求最大值。默认情况下该统计类的值是5,000。你可以在机器的config文件中改变该值。

  ASP.NET

  工作进程重启

  在服务器上,工作进程重启的次数。如果工作进程出现意外的失败或者故意循环,可以重启工作进程。当统计类出现了不可意料的增加,你应该调查原因。

  除上一个表格中的核心控制外,以下的表格的性能统计类提供了增加值,当你试图诊断特定的ASP.NET应用程序性能问题。

  性能对象

  统计类

  实例

  描述

  ASP.NET应用程序

  Pipeline Instance Count

  __Total

  特定ASP.NET应用程序的请求管道数量。由于仅仅有一个执行线程可以在管道内运行,该数据给出了并发请求最大的数量。在绝大多数情况下,当低于负荷时该数据最好低一点,说明处理器利用良好。

  .NET CLR Exceptions

  # of Exceps Thrown

  显示在应用程序中的抛错数。无法意料的增加可能出现了性能问题。仅仅存在错误不是有必要关心的原因,因为一些代码路径依赖于正常运行的抛错,如HttpResponse。重定位方式通过抛出无法捕获的错误,ThreadAbortException。这对跟踪ASP.NET应用程序更有效。通过错误总的统计类来决定应用程序是否产生了无法预期的错误。

  系统

  Context Switches/ sec

  衡量线程上下文在Web服务计算机上通过所有处理器转换的比率。如果统计类值过高,说明通过线程,在用户和核心模式之间有锁或者转换竞争。通过简单的工具来进行深入调查,应该被授权。

  报表服务性能统计类

  报表服务包括它自己的性能统计类和资源消耗。在Windows性能监控工具上出现了两个对象,使你能监控实例和部件活动的状态:MSRS 2005 Web服务和MSRS 2005 Windows 服务对象。MSRS 2005 Web服务性能对象包括一个统计类集,用来跟踪报表服务处理。

  当ASP.NET停止Web服务时,这些统计类都需要重新设置。下面这个表提供了统计类清单,这些统计类可用来监控报表服务器性能,同时也对目标做了描述。

  性能对象: RS Web 服务

  统计类

  描述

  活动的会话

  活动的会话数。这个统计类提供了所有没有超期的浏览会话数。这不是同时进行请求的数目,该数据存储在ReportServerTempDB数据库中。

  缓存命中数/秒

  重新从目录中检索到的每秒报表请求数。当该值增加了,而内存缓存的命中率却没有增加,意味着报表数据没有经过再处理,但是页面进行了重新显示。在联合内存缓存Hits/Sec时,利用这个统计类决定用于缓存、磁盘或者内存的资源是否充足。

  缓存命中失败数/秒

  从目录中返回报表失败的请求数。联合内存缓存Misses/Sec时,利用这个统计类决定用于缓存、磁盘或者内存的资源是否充足。

  第一个会话请求/秒

  每秒从报表服务器缓存开始的新用户会话数。

  内存缓存命中数/秒

  每秒从内存缓存中重新检索报表的次数。内存缓存是报表服务缓存的一部分,它存储了在内存或者临时文件中的显示报表。这将为请求提供最好的性能,因为没有处理的必要。当内存缓存被用时,报表服务器不能为了缓存内容而查询SQL Server。

  内存缓存未命中数/秒

  报表不能从内存缓存中重新检索的每秒次数。

  下一个会话请求/秒

  每秒能进行的下一个会话请求数

  报表请求

  被报表服务器激活和被处理的报表数

  报表执行/秒

  每秒执行的报表数。这个统计类提供了报表量的统计。

  利用这个值可以和从缓存中执行报表请求的时间进行对比。

  请求/秒

  每秒向报表服务器发出的请求数。这个统计类跟踪了由报表服务器处理的所有类型的请求。

  总的缓存命中数

  从服务启动之后报表请求总的缓存命中数。当停止Web服务时,该统计类将重新设置。

  总的缓存未命中数

  从服务启动之后报表请求总的缓存未命中数。当停止Web服务时,该统计类将重新设置。可以据此判断磁盘空间和内存是否充足。

  总的内存缓存命中数

  从服务启动之后报表请求总的内存缓存命中数。当停止Web服务时,该统计类将重新设置。内存缓存是缓存的一部分,在CPU内存中存储报表。当内存缓存被用时,报表服务器不能为了缓存内容而查询SQL Server。

  总的内存缓存未命中数

  从服务启动之后报表请求总的内存缓存未命中数。当停止Web服务时,该统计类将重新设置。

  总的处理失败数

  从服务启动之后报表请求总的处理失败数。当停止Web服务时,该统计类将重新设置。处理失败可能源自报表处理器或者任何的扩展。

  总的请求执行数

  从服务启动之后成功执行报表的数目。

  总的请求数

  从服务启动之后总的请求数。

  RS Windows服务性能对象包括一个统计类集,用来跟踪报表处理,这些处理是通过预定的操作来初始化的。预定的操作包括订阅和交付,报表执行快照和报表历史。当微软工作量不包含任何预定的或者交付的操作时,这些性能统计类列在这里,仅供方便使用。性能对象被用来监控报表服务器Windows服务。如果你在一个向外扩展的配置上远行报表服务器,该计算将应用到已选的服务器,而不是整个向外扩展的配置。

  当应用程序域循环时,这些统计类要重新设置。以下的表格提供了一系列统计类,这些统计类用来监控预定和交付,还有描述。

  统计类

  描述

  清空缓存数/秒

  每秒钟清空缓存的数量

  缓存命中数/秒

  缓存报表每秒的请求数

  缓存未命中数/秒

  未能从缓存中读取报表的每秒请求数

  交付数/秒

  从任何交付范围,每秒交付的报表数

  事件数/秒

  每秒处理的事件数。监控的事件包括SnapshotUpdated 和 TimedSubscription。

  内存缓存命中数/秒

  每秒从内存缓存中重新检索报表的次数

  内存缓存未命中数/秒

  每秒未能从内存缓存中重新检索报表的次数

  报表请求数

  由报表服务器处理和激活的报表数。利用这个统计类评估缓存策略。请求明显多于报表执行。

  报表执行数/秒

  每秒钟成功执行的报表数

  快照更新数/秒

  每秒钟预定更新的快照数

  总的App域循环数

  从服务开启后,总的App域循环数

  总的缓存清空数

  从服务开启后,总的报表服务器缓存更新数

  总的缓存命中数

  从服务开启后,总的从缓存中得到报表的请求数

  总的缓存未命中数

  从服务开启后,总的不能从缓存中得到报表的次数。利用这个统计类可以决定是否需要更多的磁盘空间或者内存。

  总的交付数

  包括所有的交付数。

  总的事件数

  从服务开启后,总的事件数。

  总的内存缓存命中数

  从服务开启后,总的从内存缓存中得到的报表数。

  总的内存缓存未命中数

  从服务开启后,总的从内存缓存中未能得到的报表数。

  总的处理失败数

  从服务开启后,总的报表处理失败数。处理失败的原因可能是报表处理器或者任何扩展。

  总的被拒绝的线程数

  总的被拒绝的线程数,由于异步处理和随后的处理在相同的线程里。

  总的报表执行数

  总的报表执行数。

  总的请求数

  从服务开启后,成功执行报表的数。

  总的快照更新数

  从服务开启后,总的快照更新数。

  如果你对报表服务还有性能争议问题,记下以下性能统计类非常有帮助:

  ASP.NET, ASP.NET 应用程序, 进程, 系统,内存, 物理磁盘, .NET 异常, .NET 内存, .NET 装载, .NET CLR Locks 和 Threads, 和.NET CLR 数据。

  可选的报表服务性能统计类

  以下是一个性能统计类集,应用于RS Web服务上,但不是默认安装。当执行性能优化时,这些可以给你提供参考。为了实现这些,在命令框执行以下的语句:

  Installutil.exe /u ReportingServicesLibrary.dll,随后是:Installutil.exe ReportingServicesLibrary.dll

  成功执行这个语句后,你首先需要修改你的路径,包含微软.NET框架安装时的目录位置。然后执行从目录中执行前面的语句,目录包含了ReportingServicesLibrary.dll文件。默认情况下,这是安装在C:Program FilesMicrosoft SQL ServerMSSQLMSSQL.instanceReporting ServicesReportServerin里面。这些统计类没有全部列出。

  活动数据库连接数

  在某一时间内的活动数据库连接数。仅仅指连接到报表服务目录的数目。

  活动数据源连接数

  在某一时间内的活动数据库连接数。正在运行的报表连接到源数据的连接数。

  活动线程数

  当前活动的线程数。在Web服务中,它包含了和服务请求相关的线程。在交付服务中,它包含了工作线程、维持和检测线程。

  字节数

  为了上一次请求,当显示当前报表时向客户返回的字节数。类似于相应的执行日志入口。

  行数

  为了上一次请求,由目前报表返回的行数。类似于相应的执行日志入口。

  压缩时间

  为了上一次请求,花费在压缩快照和PDF上的毫秒数。

  数据源访问时间

  为了上一次请求,花费在访问报表数据源信息上的毫秒数。包括执行查询和获取结果。类似于相应的执行日志入口。

  数据库时间

  为了上一次请求,花费在访问报表服务器目录信息上的毫秒数。

  处理时间

  为了上一次请求,花费在报表处理上的毫秒数。这类似于相应的执行日志入口。

  显示时间

  为了上一次请求,花费在报表显示上的毫秒数。这类似于相应的执行日志入口。

  报表服务执行日志

  报表服务执行日志是一个额外的为了监控报表服务性能的信息源。日志包括报表信息,报表是由服务器执行的或者通过向外扩展的多个服务器执行的。你可以使用报表执行日志找到多长时间有一次报表请求,什么格式最常用,花费在每个处理阶段上的处理时间百分比。不同于性能监控对象,它不需要当应用程序域循环或者ASP.NET停止Web服务时进行重新设置,执行日志的结果保持完好,除非你重新设置它们。

  另外一个使用执行日志的好处是,它可以更好地知道报表花费了多少检索时间,多少处理时间,形成请求格式的显示时间。这些细节信息对识别和调试性能瓶颈有着不可估量的价值。

  报表执行日志捕获了一下信息:

  ◆处理请求的报表服务器实例的名字。

  ◆报表标识。

  ◆用户标识。

  ◆用户或者系统的请求类型。

  ◆显示格式。

  ◆执行报表的参数值。

  ◆开始和停止的次数表示了报表进程的持续时间。

  ◆知道报表花费在检索,处理,形成请求格式的时间百分比。

  ◆报表执行源 (1=实况, 2=缓存, 3=快照, 4=历史数据)。

  ◆状态,成功或出错的代码,如果多个错误并发,仅能记录第一个错误。

  ◆显示报表的字节大小。

  ◆查询返回的数据行数。

  关于报表执行的报表服务日志数据以表格的形式存在目录中。这个表不能提供自己完整的信息,也不能给出用户能明白的格式数据。为了查看报表执行数据,你首先应该运行集成服务包,它来自报表服务样例。然后,从执行日志抽取数据并放到一个表结构中,这样就容易被查询。

  这是首先的、值得推荐的方式,因为在目录内部的表结构可能会随着产品的版本而改变。

  如果需要更多的关于如何安装,配置,从报表服务器执行日志访问数据等信息,请查询在线的“Querying and Reporting on Report Execution Log Data”一文。



分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: