NETRemotingServer性能分析及利用Loadrunner进行性能测试的方案_第1页
NETRemotingServer性能分析及利用Loadrunner进行性能测试的方案_第2页
NETRemotingServer性能分析及利用Loadrunner进行性能测试的方案_第3页
NETRemotingServer性能分析及利用Loadrunner进行性能测试的方案_第4页
NETRemotingServer性能分析及利用Loadrunner进行性能测试的方案_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.NET Remoting Server 性能分析及利用Loadrunner进行性能测试的方案1概述 |>,jOnGf  .NET Remoting 被誉为管理应用程序域之间的 RPC 的首选技术。应用程序域是公共语言运行库的隔离单元,它们是在进程内创建并运行的。这与 CLR 和非 CLR 托管的进程之间的进程间通信(互操作)不同。后一种类型的 RPC 通信(特别是 Web 上的)一般被认为是 Web 服务领域的问题。遗憾的是,这种看似清楚的区分,却由于可以在 IIS 下集成 .Net Remoting 服务器而变得模糊,“通过在 IIS 中集成 .NET Remoting 对

2、象,可以将其作为一种 Web 服务提供” e=;X!oe  b !=F.|Q  9kL" 9Q  Remoting, 简而言之,我们可以将其看作是一种分布式处理方式。从微软的产品角度来看,可以说Remoting就是DCOM的一种升级,它改善了很多功能,并极好的融 合到.Net平台下。Microsoft® .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架。这也正是我们使用Remoting的原因。为什么呢?在Windows操作系统中,是将应用 程序分离为单独的进程。这个进程形成了应用程序代码和数据周围的一道边界。

3、如果不采用进程间通信(RPC)机制,则在一个进程中执行的代码就不能访问另一 进程。这是一种操作系统对应用程序的保护机制。然而在某些情况下,我们需要跨过应用程序域,与另外的应用程序域进行通信,即穿越边界。其主机与客户端的主 要任务如下: ip'afJJ ,  Mi,dyZ5  主机任务 H =Km)  "9$5|  · 设计服务,选择应用程序域、激活模式、通道、端口和发布。 6#&N&k  C>%dNTEwd  · 实现 Remoting 主机应用程序域(例如 IIS/系统服务

4、)。 y&+4FC9U-d  TY+BUHD  · 配置主机激活、通道和协议设置。建议使用配置文件,可以通过调用 RemotingConfiguration.Configure 加载。 0Sgn   Vza  · 发布接口,供客户端使用(有关详细信息,请参阅下文中的“接口发布选择”)。 QX>qkN"  y= /5rXK  客户端任务 5AL/Xix,  | h/-;D>Cd  · 设计客户端,选择应用程序域和激活模式。 hhV!3*  qE%l

5、i6  · 考虑是否需要注册通道和端口。 r*0/6/3  ot YhK?+  · 获取远程类型元数据。 g7Z  OGM NqM?m  · 实现客户端应用程序域。 9 *v!1  rdi-|>6U  · 配置客户端激活模式和其他类型的信息,如应用程序名称、通道和对象 URI 等。建议使用配置文件,可以通过调用 RemotingConfiguration.Configure 加载。 yb*!?dA  Hbt-m  2 Remoting 解决方案的过程中可能会遇

6、到的错误情况 W&)gi'I  在 任何情况下,都应该记住要使用标准的设备使用和监视方法。事件记录仍是非常有价值的信息资源,就象网络监视器工具一样,网络监视器可以专门用于详细查看客 户端/服务器的 Remoting 会话。中间层的 Remoting 服务器仍可以使用 Visual Studio .NET 提供的标准调试工具进行调试,例如,对于由 IIS 集成的 Remoting 服务器,可以通过向 ASP.NET 辅助进程附加调试会话(Visual Studio .Net | Debug 调试 | Processes 进程 | Attach 附加) 来设置断点(如果资

7、源可用)。但 Remoting 的错误很独特,下面列出了一些。请注意,所有错误都已使用 .NET Framework SDK 提供的 Basic Remoting Hello Sample 的各版本进行了复现,服务器和客户端也已在单机上运行。故障现象与在网络链接上的相同,只是由于 HTTP/TCP 的超时设置不同,需要相当长的时间才能出现错误。 TgRNW  cl>bPrDkx  2.1丢失 MarshalByRef <!RS,L  由 于 Remoting 要通过引用以用于给定的类,该类必须只做一件事,就是继承 MarshalByRefObject。

8、假设开发人员忘记做这项工作,我们将得到一个 System.Runtime.Remoting.RemotingException 类型的异常,说明我们有一个“丢失的 MarshalByReference”. J.I*:nj':  LCu ,  是否能正确捕获和处理这个 RemotingException 将取决于程序员。(想想这个开发人员忘记了他应记住的唯一一件事。) $l:t3-GeW  )Ng&,W$_  解决方法是:记住继承 MarshalByRefObject! DwQ3D  caIOTvVs  2.2众所周知的

9、服务器激活的错误服务器端点 :3#a; >u  对于服务器激活,Remoting 服务器将其侦听处声明为端点。该端点一般包括一个对象 URI(远程对象的众所周知名称),一个协议和一个端口号。当然,所有这些都可能配置错误。 AWllny  b+GMp  2.3错误的 URI ',kwU5  由服务提供的 Basic Remoting Hello Sample 的 URI 是 HelloService.soap,如相关的 web.config 文件中所指定: "qMF;/z  m2I>  <config

10、uration> U;<T/,P9G  4fAUn8  <system.runtime.remoting> wgHSuU?c  HY-0<YUQ  <application> &JzwU)  n7YC  <service> FVYT5,i  too  <wellknown mode="SingleCall" type="Hello.HelloService, Hello" nmLObv427  jh

11、H'O0z  objectUri="HelloService.soap" /> =UZzX+5!  <G$isM =+  </service> ys0m/V8  F'f UDm  </application> fU5e/Z$  -/1R.Q  </system.runtime.remoting> sn<p+aQ%P  XQhDWq z|  </configuration> E9c,?  -q,G

12、OJ  此 服务是 IIS 集成的。IIS 集成要求 URI 带有后缀 .rem 或 .soap,我们在服务器上使用 .rope。在此实例中,我们将再次收到 RemotingException,这次显示的文本是“对象 </Hello.soap> 在服务器上已断开或不存在”。 k"A!*|.  .f n)(  请确保各个 URI 相互匹配!当 IIS 集成 Remoting 服务器时,还要确保 URI 以 .rem 或 .soap 结尾。 kaH <hd  q!bz<Vkk  2.4不匹配的协议/端口 5x.u1

13、J>%  为了进行此项测试,我们切换到控制台集成的服务器,以下是该服务器的配置文件: afk=Zg  h#EuXo  <configuration> %"8gf7  uAZCgF'  <system.runtime.remoting> 8.>8: $  OfPvo  <application name="RemotingHello"> FH"HjA1K  7yINrdpRd  <service> /

14、wm   7w<q 2_  <wellknown mode="SingleCall" type="Hello.HelloService, Hello" T2kq;EdgO  .LSaT'S  objectUri="HelloService.soap" /> u(WKf  <8SM?sPQ  </service> - ZM  >b;LAafqI  <channels> |M55iUjwg 

15、0;+,56zt  <channel ref="http" port="8000" /> *?'aL_a3r  |,yILE.  </channels> h%!_jt1  OdsNB_dk  </application> kbwNG pP<w  HSRJCw"j|  </system.runtime.remoting> ck;ri  g5) r8  </configuration>

16、S?43/T%  8GU9/9V  假设我们要在服务器端将协议更改为 TCP,而使客户端保留 HTTP。 > 0"$%W  =O;&28  我们将再次收到 RemotingException,这次的文本是“底层连接已关闭:接收时出现意外错误”。 HNJg  C"&-%#:  端口设置错误也会导致上述异常,唯一的不同是这种情况下,要用较长的时间才会出现错误。服务器和客户端之间的端口和协议必须匹配。 r /d$  wLwIk_q  2.5丢失 URI I")5AK*

17、 另 一种可能性是远程服务器没有运行,例如,服务器由 IIS 集成,而虚拟应用程序或相关的程序集丢失。再次使用 Basic Hello Remoting 服务器,我们需要虚拟应用程序 RemotingHello 能够运行。如果不能运行,我们将收到未处理的异常(取决于调用代码),但这次的异常将是:“无法加载类型 clr:Hello.HelloService, Hello”。 W$)<Z;"  "kDB JP  在这些情况下,请确保虚拟应用程序在运行,而且所需的程序集正确地放置在相关的 bin 子文件夹中。 *)Ae  sB bLt

18、q  总而言之,客户端必须正确地引用服务器定义的端点以便激活服务器,这意味着,端口、协议和 URI 的定义必须相互匹配。这太容易出错了。因此,如果服务器的位置定义为: saLqSLw  DO!  <service> zzuA#Z6e  0#>lLuj  <wellknown mode="SingleCall" type="Hello.HelloService, Hello" V"C:  w4 g  objectUri="HelloServic

19、e.soap" /> ><LbV  qqpW &  </service> 7 2|"gSq  2ssYy!#s  那么,客户的设置必须为: sI?5ysgJ  nAd(?c  <client url="http:/localhost/RemotingHello"> c77!(  ?!tVotJ  <wellknown type="Hello.HelloService, Hello" Q2+ nU+ &

20、#160;Mn;3!z&  url="http:/localhost/RemotingHello/HelloService.soap" /> 78RC  _b;< 5"'  </client> !4;9G2KQ  Ps0uGTjT  其中,URL 表示集成 Remoting 服务的 IIS 虚拟应用程序,类型表示类和程序集名称。 5.IdfiY  nALTvtZs  3 Remoting 的特点 aK$'P#  3.1 优点 9 -o -

21、bL  他的优点是用户既可以使用TCP信道方式进行二进制流方式通信,也可以使用HTTP信道进行SOAP格式的性通信 2LmJ_o  zo_BY,  效率相对WebService要高不少;但是它的缺点也很明显,.net remoting只能应用于MS 的.net framework之下。 73;xC+x  zin$KEQ4  从性能上来讲Remoting的效率和传统的DCOM、COM+的性能很相近。 fW:3ud  U_224rz0  3.2 缺点 $s&'*>A  这种三层设计的缺点与使用 X

22、ML Web service 的三层设计的缺点相同。 G&zoQ9  6-4a4,  所有业务规则均包含在前端代码中。因而,如果需要更改业务规则,则必须更新全部客户端。除非能够进行自动更新,否则这种维护工作将十分繁琐。当然,如果使用 SQL Server,则可以将某些业务规则放到存储过程中,从而减少维护的时间和成本。 Zl?/n2|?  CKyf$ZJ  所有字段名称均在源代码或控件属性中硬编码。如果更改字段名称,则必须查找和替换应用程序中所有该字段的名称。如果使用了数据绑定,还必须检查所有窗体并更改属性。 0kHjin  aZKv;/

23、  通过网络从一个组件向另一个组件传输数据比直接连接数据库要慢。在 Intranet 方案中,.NET Remoting 的性能比 XML Web service 要好。而在 Internet 方案中,一般不使用 .NET Remoting。 Ch$I#j'  B;oJV)-m  建立这种应用程序比建立两层应用程序或使用 XML Web service 的应用程序要复杂一些。 +IRPXH_  4uoWH!zQ+T  必 须使用比 TCP 速度慢的 HTTP。另外,IIS 可能循环执行 ASP.NET 辅助进程,这将破坏所有 Singl

24、eton 的状态。对您来说,这可能是问题也可能不是问题,要取决于您的设计需要,因为客户端的下一个调用将重新启动 Singleton。您可以将 IIS 配置为不循环执行辅助进程,但这种能力很有限,特别是在 IIS 5 中,而且可能造成更进一步的影响。这里最根本的意思是,如果要求远程服务器的安全性,那么无疑要使用 IIS 集成。 A&y-c  1b <9-v  4 调试小技巧 9dZhH0A3!  编 写Remoting程序,通常分为三部分:远程对象、服务端程序、客户端程序。如果不考虑元数据的安全性,我们会把远程对象的dll生成相同的两份,分别 放到服务

25、端和客户端。Remoting在客户端的调用是很简单的,但调试起来就没有那么容易。因为客户端和服务器端分别属于不同的应用程序域,无法设置断 点进行单步调试。如果了解NUnit,大家会知道NUnit也是不支持分布式应用程序的调试的,至少是支持得不够好。 %,Q">w-Xx  > X'Xv  所 以,在实际做项目的过程中,我更倾向于先调用本地的对象,等调试成功后,再打开Remoting服务,调用远程对象,验证是否正确。举例来说,我要提供访 问数据库的远程对象。我会先让该对象在本地运行,并调用其方法。如果一切正常,说明数据库的配置和连接均是正确的。然后

26、再将该调用替换为远程对象。如果程 序出错,则可以肯定是Remoting提供的服务出错了,或者是远程对象未按照Remoting的规定,没有派生MarshalByRefObject, 或者未提供序列化特性。 $KKV"AfEM  ?Q4<WT  最初使用了最愚蠢的办法,就是写两行调用,一个调用本地对象,一个调用远程对象。然后根据实际的情况,酌情考虑注释某一行代码。如此这般用了一段时间,终于觉得麻烦,迫使改变方法了。其实很简单,就是为客户端程序的主类中,多写一个构造函数而已,呵呵:) 5zrXxAo|  Hy$:t8usu  例如,远程对象是一

27、个访问数据库的Remoting服务,派生MarshalByRefObject的主类名为DBAccessService。那么我首先定义一个枚举,分别标明是属于本地调用还是远程调用: 7sGS.%z  iXr3  public enum InvokeMode c?+T  Dl LwP  Local=0,Remoting >(|&w$o  Bn<CXS  对于客户端程序,如果主类为DataBaseOperate,那么就需要增加一个构造函数和远程对象字段: virQUqF  5tBY+l 9  publ

28、ic DataBaseOperate(InvokeMode invokeMode) >1/ r.4X'|   3f,OvP,  switch (invokeMode) pgB9&kvY   DF- Et  case InvokeMode.Local: 5x!RwQ,l  serviceObj = new DBAccessService(); %xpm  break; %-|YF|<  case InvokeMode.Remoting: ufNhp  serviceObj = (DBAcc

29、essService)Activator.GetObject(typeof(DBAccessService),"tcp:/localhost:8080/DBAccessService"); %H*ANEu,!#  break; V 5xUG6   Eetymx   ggn$ljFW  private DBAccessService serviceObj = null; jJ(J)%  n'i m0<  如此这般,在客户端调用对象时,就可根据设置构造函数中的参数枚举值,灵活地改变客户端调用对象的方式。

30、:wR?T!4  ($:-.gQs2  其实这种办法也可以用简单工厂模式来完成。不过这个简单工厂生产的产品和通常意义的工厂模式有点不一样哦,因为他们的产品其实是完全相同的。不同的仅仅是创建对象的方式而已。 V?0DDZZH  M&.og0  public class SimpleFactory ixG_4"x   ;p e/X  public static DBAccessService CreateInstance(InvokeMode invokeMode) l$1|ql?=   switch (inv

31、okeMode) QB/OC b&   *8*L4v_d  case InvokeMode.Local: *+:AH  return new DBAccessService(); dZo _*  break; r*+:  case InvokeMode.Remoting: 0/',dZT)W  return (DBAccessService)Activator.GetObject(typeof(DBAccessService),"tcp:/localhost:8080/DBAccessService"

32、;); kiZ"#Xt  break; Qy_e|U  QT0y   (e&D/|7R   W9b_4r   dY.-ia  Zns  然后再调用工厂的静态方法,来获得该对象即可。 7:"4 ;  W_xT<ki  两种方法都是一种思想:就是根据需要,选择不同的创建方式(其实前一种方法也可以看作是简单工厂模式的一种变种)。如果只有一个要创建的对象,选前者更为方便;如果需要创建多个对象,用工厂方法提供多个静态方法,应该要灵活一些。 $x(zgKQR  /"

33、;9FxMNR  通过上述方法,不仅便于调试,也便于以后代码的修改。如果取消使用Remoting,只需改变参数枚举值即可,其他代码通通不用改变。这个技巧也算是设计模式的一种最简单应用吧。 v/|WtW  FWMOhvF-<x  5 测试方案 XAujKXQ  分布式应用程序中进程间通信的性能取决于以下因素: 9Br( X  |a-9/_K  用于跨远程边界的应用程序间传输信息的通道(包括 TCP 和 HTTP)占用的系统开销量。TCP 套接字比 HTTP 更为有效。 |uaQ?  <f0p2CkH  R

34、emoting 分别使用 BinaryFormatter 和 SOAPFormatter 将对象序列化为二进制格式和 SOAP 格式。由于这些格式化程序使用反射,因而对于引用对象很快,但对于必须经过装箱或取消装箱来通过反射 API 传递的值类型则较慢。此外,SOAPFormatter 还需要额外的系统开销以生成编码的 SOAP 消息。 %yR6# gC  .Cn#QB*  我们使用测试基于访问客户和订单数据的普通业务方案。为使测试尽可能符合实际,数据库中包含 100,000 多行客户帐户。数据位于 Orcale 数据库中。 ? QeZ_-6  <.nYZvM

35、  性能比较中使用了以下方法: *,qz I|  MziWZFf  FrmInputSalesOrder方法产生PKID 并触发btnConfirmOrder_Click事件。 ,S?1|7onW  g5vuI  FrmQueryCustomer方法接受 CustomerId 和参数以指定想要读取的客户行数目,并读取 CustomerId 大于传递给 Web 服务方法的 CustomerId 的前 n 行。 =n$CR PQ  >D=.8q hC  测试过程中,我们逐页提取不同类型客户行集合,然后查询商品,填写完销售订

36、单后,提交保存。在这个过程中,用LR模拟100虚拟用户同时进行操作,检测系统响应时间及其他性能参数。 snMRZ$h1*  8>MCy  6 测试工具和策略 TZ" >'  6.1 工具简介 J!s=d k  在 本测试中,我们使用了 MI 公司的loadrunner。它可以对 Web 服务器进行强度测试,分析 Web 应用程序(包括 ASPX 页及其使用的组件)的性能和可伸缩性问题。有关如何创建和运行测试的详细信息,请参阅loadrunner使用手册。通过打开到服务器的多个连接并迅速发 送 HTTP 请求,loadrunn

37、er可以模拟一大组用户。它还允许我们建立实际的测试方案,我们可以在方案中使用一组随机参数值调用同一个方法。此功能很重要,因 为用户不可能会使用相同的参数值反复调用同一个方法。另一个有用的功能是,loadrunner可以记录测试结果,然后进行分析,从而提供有关 Web 应用程序性能的最重要的信息。 8 ePt |   #kUm$L  6.2解决Loadrunner中没有相关Remoting协议的问题 )3+OV"H  因 为在C/S 的 ERP系统中,LR并没有remoting相关协议可以选择,直接导致了LR无法录制操作步骤,取得脚本程序。解决这种状况有一

38、种方法,即:去 MERCURY官方站点去下载一个基于.NET Remoting的add-in的补丁包,把此包集成于.NET C#开发环境中,这时,开发环境上方工具条会出现一个Vuser的新控件(见下图)。我们调入被测源程序,然后在其中创建一个Loadrunner的新项 目,然后根据被测对象,在开发环境中写出测试代码。最后利用Vuser项创建LR的场景,它会自动调用LR去做,设置完毕运行即可。当完成场景运行之后, 利用LR的Analysis工具进行分析即可。 FG;Zi3y  r0;c  38tFilA  7 LR计数器简介 8w8p|  Memory:

39、QEK AK<c  L2m bGy  内 存使用情况可能是系统性能中最重要的因素。如果系统“页交换”频繁,说明内存不足。“页交换”是使用称为“页面”的单位,将固定大小的代码和数据块从 RAM 移动到磁盘的过程,其目的是为了释放内存空间。尽管某些页交换使 Windows 2000 能够使用比实际更多的内存,也是可以接受的,但频繁的页交换将降低系统性能。减少页交换将显著提高系统响应速度。要监视内存不足的状况,请从以下的对象计 数器开始: dixnn0z  &SY d  Available Mbytes: ELgHH7qs  TKBC0

40、6,  可用物理内存数. 如果Available Mbytes的值很小(4 MB 或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。 kv6YOt:  vDn0RN%w  page/sec: :3QU  c* sv-  表 明由于硬件页面错误而从磁盘取出的页面数,或由于页面错误而写入磁盘以释放工作集空间的页面数。一般如果pages/sec持续高于几百,那么您应该进一 步研究页交换活动。有可能需要增加内存,以减少换页的需求(你可以把这个数字乘以4k就得到由此引起的硬盘数据流量)。Pages/sec 的值很大不一定表明内存有问题,而可

41、能是运行使用内存映射文件的程序所致。 k;W(y  <Sr;_ uqJ  page read/sec: ?OmSLzUg  K#z(y  页的硬故障,page/sec的子集,为了解析对内存的引用,必须读取页文件的次数。阈值为>5. 越低越好。大数值表示磁盘读而不是缓存读。 KvjG+_2U  (T1WKe'Y  由于过多的页交换要使用大量的硬盘空间,因此有可能将导致将页交换内存不足与导致页交换的磁盘瓶径混淆。因此,在研究内存不足不太明显的页交换的原因时,必须跟踪如下的磁盘使用情况计数器和内存计数器: IAp7,5y

42、  RPQEjk+  Physical Disk % Disk Time 、Physical Disk Avg.Disk Queue Length 例如,包括 Page Reads/sec 和 % Disk Time 及 Avg.Disk Queue Length。如果页面读取操作速率很低,同时 % Disk Time 和 Avg.Disk Queue Length的值很高,则可能有磁盘瓶径。但是,如果队列长度增加的同时页面读取速率并未降低,则内存不足。 nphAnVOb  yurTY  要 确定过多的页交换对磁盘活动的影响,请将 Physical Di

43、sk Avg.Disk sec/Transfer 和 Memory Pages/sec 计数器的值增大数倍。如果这些计数器的计数结果超过了 0.1,那么页交换将花费百分之十以上的磁盘访问时间。如果长时间发生这种情况,那么您可能需要更多的内存。 6By?'T  Qxo:t0d  Page Faults/sec: MyPfL'   ohcV  每秒软性页面失效的数目(包括有些可以直接在内存中满足而有些需要从硬盘读取)较page/sec只表明数据不能在内存的指定工作集中立即使用。 1R87  osv=44"_  C

44、ache Bytes: 99W7=8i  Sf/7.H  文件系统缓存(File System Cache),默认情况下为50%的可用物理内存。如IIS5.0 运行内存不够时,它会自动整理缓存。 Wlo%QlZn  6TNwN<  需要关注该计数器的趋势变化 4R-L  :faf/UEfQ  如 果您怀疑有内存泄露,请监视 Memory Available Bytes 和 Memory Committed Bytes,以观察内存行为,并监视您认为可能在泄露内存的进程的 ProcessPrivate Bytes、ProcessWo

45、rking Set 和ProcessHandle Count。如果您怀疑是内核模式进程导致了泄露,则还应该监视 MemoryPool Nonpaged Bytes、Memory Pool Nonpaged Allocs 和 Process(process_name) Pool Nonpaged Bytes。 Xr)fbL1  )hg_*0U  Pages per second : zTI68r  pDG0_  每秒钟检索的页数。该数字应少于每秒一页。 )1c%S  N1dcLQ1/Oz  Process: &ufc3$Ur(

46、 x ;EoMqQ  %Processor Time: %aI_N  x Uv%l  被处理器消耗的处理器时间数量。如果服务器专用于sql server,可接受的最大上限是80-85% 3+A6iAK-  zif00=%  Page Faults/sec:将进程产生的页故障与系统产生的相比较,以判断这个进程对系统页故障产生的影响。 )7EZk=|!  'GSNv_Zk  Work set: a1X  a9F-<PM  处理线程最近使用的内存页,反映了每一个进程使用的内存页的数量。如

47、果服务器有足够的空闲内存,页就会被留在工作集中,当自由内存少于一个特定的阈值时,页就会被清除出工作集。 c%vn  T:bs<2  Inetinfo:Private Bytes: #9U3If  5"2;n+  此进程所分配的无法与其它进程共享的当前字节数量。如果系统性能随着时间而降低,则此计数器可以是内存泄漏的最佳指示器。 d.u>B  CibAtff  Processor:监视“处理器”和“系统”对象计数器可以提供关于处理器使用的有价值的信息,帮助您决定是否存在瓶颈。 1/W;H N2l  2;:*

48、 2'9_E  %Processor Time: OD5nEfX  cU&:Ma*hn  如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。 ?nim!%WjQw  xN9!)SNx  %User Time: u/&Es5l  j FY%Ew  表示耗费CPU的数据库操作,如排序,执行aggregate functions等。如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。 >?5G'T*R  'y

49、AXn*Jp/  %Privileged Time: YXOg:FY  UWZ +7d2  (CPU 内核时间)是在特权模式下处理线程执行代码所花时间的百分比。如果该参数值和"Physical Disk"参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。另外设置Tempdb in RAM,减低"max async IO","max lazy writer IO"等措施都会降低该值。 U?UG_oU  XEK8  此外,跟踪计算机的服务器工作队列当前长度的 Server Wor

50、k Queues Queue Length 计数器会显示出处理器瓶颈。队列长度持续大于 4 则表示可能出现处理器拥塞。此计数器是特定时间的值,而不是一段时间的平均值。 1U4b'7  G*rtY  % DPC Time: g4unab h  DIMZ>hH/  越低越好。在多处理器系统中,如果这个值大于50%并且Processor:% Processor Time非常高,加入一个网卡可能会提高性能,提供的网络已经不饱和。 GWMs%hwY  -''2%  Process z)F=I8  WtH)

51、LlW  % Processor Time 指这个线程使用处理器执行指令的所用时间的百分比。类似于Processor的% Processor Time ;gLse->  Pa"Wj  % Privileged Time 指这台处理器的线程用于执行在特权模式中的代码所经过时间的百分比。类似于Processor的% Privileged Time jD4Wy4!  n lk*  % User Time 指这台处理的线程用于执行使用用户模式的代码的时间的百分比。类似于Processor的% User Time wRg94  

52、C9 09R=%  Private Bytes 指这个处理不能与其它处理共享的、已分配的当前字节数。如果此数值随时间不断增大,有可能是内存泄漏。 =bL :xT7""  b$w-*t  Virtual Bytes 指处理使用的虚拟地址空间的以字节数显示的当前大小。使用虚拟地址空间不一定是指对磁盘或主内存页的相应的使用。虚拟空间是有限,如果使用过多,可能会限制处理加载数据库的能力。 N*|H5W"=V   IO Data Bytes/sec 处理从I/O操作读取/写入字节的速度。这个计数器为所有由本处理产生的包括文件

53、、网络和设备I/O的活动计数。 +AtBzG-  UQq8o6 v  Processor 3fYD  6f'i,RI=  % Processor Time 指处理器执行非闲置线程时间的百分比。这个计数器设计成用来作为处理器活动的主要指示器。它通过在每个范例间隔中衡量处理器用于执行闲置处理线程的时间, 并且用100%减去该值得出。(每台处理器有一个闲置线程,该线程在没有其它线程可以运行时消耗周期)。可将其视为范例间隔用于做有用工作的百分比。这个 计数器显示在范例间隔时所看到的忙时平均值。这个值是用100%减去该服务不活动的时间计算出来的。 Vd|e

54、0 GA  vF'ApX$  正常值<90,此值过大表示处理器的性能已经不能应付程序的要求,要换更快的处理器。 E u7t,  bx V5R-n  % Privileged Time 指非闲置处理器时间用于特权模式的百分比。(特权模式是为操作系统组件和操纵硬件驱动程序而设计的一种处理模式。它允许直接访问硬件和所有内存。另一种模 式为用户模式,它是一种为应用程序、环境分系统和整数分系统设计的一种有限处理模式。操作系统将应用程序线程转换成特权模式以访问操作系统服务)。特权时 间的%包括为间断和DPC提供服务的时间。特权时间比率高可能是由于失败设备产生的大数量的间隔而引起的。这个计数器将平均忙时作为样本时间的一部分显 示。 vk713$  N

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论