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

下载本文档

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

文档简介

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

2、而言之,我们可以将其看作是一种分布式处理方式。从微软的产品角度来 看,可以说 Remoting 就是 DCOM 的一种升级,它改善了很多功能,并极好的融合到 .Net平台下。 Microsoft? .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交 互的框架。这也正是我们使用 Remoting 的原因。为什么呢?在 Windows 操作系统中,是 将应用 程序分离为单独的进程。这个进程形成了应用程序代码和数据周围的一道边界。如 果不采用进程间通信(RPC机制,则在一个进程中执行的代码就不能访问另一进程。这是一种操作系统对应用程序的保护机制。然而在某些情况下,我们需要跨

3、过应用程序域, 与另外的应用程序域进行通信,即穿越边界。其主机与客户端的主 要任务如下: ipafJJ , 主机任务 =设计服务,选择应用程序域、激活模式、通道、端口和发布实现Remoti ng主机应用程序域(例如IIS/系统服务)。-配置主机激活、通道和协议设置。建议使用配置文件,可以通过调用Remoti ngCon figurati on.Con figure 力口载。发布接口,供客户端使用(有关详细信息,请参阅下文中的接口发布选择”)。-客户端任务 5AL/Xix,设计客户端,选择应用程序域和激活模式。考虑是否需要注册通道和端口。获取远程类型元数据。实现客户端应用程序域。配置客户端激活模

4、式和其他类型的信息,如应用程序名称、通道和对象URI等。建议使用配置文件,可以通过调用Remot in gCo nfiguratio n.Co nfigure加载。2 Remoting 解决方案的过程中可能会遇到的错误情况 W&)gi在 任何情况下,都应该记住要使用标准的设备使用和监视方法。事件记录仍是非常有价值 的信息资源,就象网络监视器工具一样,网络监视器可以专门用于详细查看客户端/服务器的Remoti ng会话。中间层的 Remoti ng服务器仍可以使用 Visual Studio .NET提供的标准 调试工具进行调试,例如,对于由IIS集成的Remoting服务器,可以通过向 ASP

5、.NETt助进程附加调试会话( Visual Studio .Net | Debug 调试 | Processes 进程 | Attach 附加) 来 设置断点(如果资源可用)。但 Remoting 的错误很独特,下面列出了一些。请注意,所 有错误都已使用.NET Framework SDK提供的Basic Remot ing Hello Sample的各版本进行了复 现,服务器和客户端也已在单机上运行。故障现象与在网络链接上的相同,只是由于HTTP/TCP的超时设置不同,需要相当长的时间才能出现错误。2.1 丢失 MarshalByRefu对于服务器激活, Remoting 服务器将其侦听处

6、声明为端点。该端点一般包括一个对象 URI (远程对象的众所周知名称),一个协议和一个端口号。当然,所有这些都可能配置错2.3错误的URI由服务提供的 Basic Remoting Hello Sample的 URI 是 HelloService.soap,如相关的 web.config文件中所指定: q MF;/z U;T/,P9G w?gHSuU?c &JzwFVYT5, ys0m fU5e/ Z$ sn ?此服务是IIS集成的。IIS集成要求URI带有后缀.rem或.soap,我们在服务器上使 用.rope。在此实例中,我们将再次收到RemotingException,这次显示的文本是

7、对象v/Hello.soap 在服务器上已断开或不存在 ”。 k- A!*|.请确保各个URI相互匹配!当IIS集成Remoting服务器时,还要确保 URI以.rem或.soap 结尾。-Hd2.4 不匹配的协议 /端口vcon figurati on %vsystem.r un time.remoti ng F HHjA1K/w m u|M55iUjw h%!_j kbwNG pP v/con figurati on 假设我们要在服务器端将协议更改为我们将再次收到 Remoti ngExceptio n,这次的文本是 底层连接已关闭:接收时出现意外错 误”。H g端口设置错误也会导致上述异

8、常,唯一的不同是这种情况下,要用较长的时间才会出现错 误。服务器和客户端之间的端口和协议必须匹配。 r2.5 丢失 URI另 一种可能性是远程服务器没有运行,例如,服务器由IIS 集成,而虚拟应用程序或相关的程序集丢失。再次使用 Basic Hello Remoting 服务器,我们需要虚拟应用程序 RemotingHello 能够运行。如果不能运行,我们将收到未处理的异常(取决于调用代码), 但这次的异常将是: “无法加载类型 clr:Hello.HelloService, Hello 。 W$ )Z; ”bin在这些情况下,请确保虚拟应用程序在运行,而且所需的程序集正确地放置在相关的 子文

9、件夹中。总而言之,客户端必须正确地引用服务器定义的端点以便激活服务器,这意味着,端口、协议和URI的定义必须相互匹配。这太容易出错了。因此,如果服务器的位置定义为:zzuA#Z6e- Lb V 7 2| gSqvclient url= http:/localhost/RemotingHello vwellk now n type=Hello.HelloService, Hellourl= http:/localhost/RemotingHello/HelloService.soap / !4;9G2K Q其中,URL表示集成Remoting服务的IIS虚拟应用程序,类型表示类和程序集名称。-3

10、 Remoting 的特点 aK$P#3.1 优点 9他的优点是用户既可以使用 TCP信道方式进行二进制流方式通信,也可以使用HTTP信道进行SOAP格式的性通信2效率相对 WebService要高不少;但是它的缺点也很明显,.net remoting只能应用于MS的.net framework 之下。从性能上来讲Remoting的效率和传统的DCOM、COM+的性能很相近。3.2 缺点 $s&*A这种三层设计的缺点与使用 XML Web service 的三层设计的缺点相同。所有业务规则均包含在前端代码中。因而,如果需要更改业务规则,则必须更新全部客户 端。除非能够进行自动更新,否则这种维护

11、工作将十分繁琐。当然,如果使用SQLServer,则可以将某些业务规则放到存储过程中,从而减少维护的时间和成本。所有字段名称均在源代码或控件属性中硬编码。如果更改字段名称,则必须查找和替换应用程序中所有该字段的名称。如果使用了数据绑定,还必须检查所有窗体并更改属性。-通过网络从一个组件向另一个组件传输数据比直接连接数据库要慢。在In tra net方案中,.NET Remot ing的性能比XML Web service要好。而在In ternet方案中,一般不使 用 .NET Remoting。h$I#j建立这种应用程序比建立两层应用程序或使用XML Web service的应用程序要复杂一

12、些。+必须使用比TCP速度慢的HTTF。另外,IIS可能循环执行ASP.NETi助进程,这将破坏所 有 Singleton 的状态。对您来说,这可能是问题也可能不是问题,要取决于您的设计需要, 因为客户端的下一个调用将重新启动Singleton。您可以将IIS配置为不循环执行辅助进程,但这种能力很有限,特别是在 IIS 5 中,而且可能造成更进一步的影响。这里最根本的 意思是,如果要求远程服务器的安全性,那么无疑要使用IIS集成。.&.4 调试小技巧 9dZhH0 A3!编 写 Remoting 程序,通常分为三部分:远程对象、服务端程序、客户端程序。如果不考 虑元数据的安全性,我们会把远程对

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

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

15、Service那么我首先定义一个枚举,分别标明是属于本地调用还是远程调用:-public enum InvokeMode ?+对于客户端程序,如果主类为DataBaseOperate,那么就需要增加一个构造函数和远程对象字段: irQUqpublic DataBaseOperate(InvokeMode invokeMode) 1/ r.4X|switch (invokeMode) pgB9&kvYcase InvokeMode.Local:5x!RwQ,serviceObj = new DBAccessService()%;break; %-| ? F|6.1工具简介-在本测试中,我们使用了

16、 MI 公司的 loadrunner 。它可以对 Web 服务器进行强度测试,分 析Web应用程序(包括 ASPX页及其使用的组件)的性能和可伸缩性问题。有关如何创建 和运行测试的详细信息,请参阅 loadrunner 使用手册。通过打开到服务器的多个连接并迅 速发送HTTP青求,loadrunner可以模拟一大组用户。它还允许我们建立实际的测试方 案,我们可以在方案中使用一组随机参数值调用同一个方法。此功能很重要,因为用户不可能会使用相同的参数值反复调用同一个方法。另一个有用的功能是,loadrunner 可以记录测试结果,然后进行分析,从而提供有关 Web 应用程序性能的最重要的信息。8

17、eP |因为在C/S的ERP系统中,LR并没有remoting相关协议可以选择,直接导致了LR无法录制操作步骤,取得脚本程序。解决这种状况有一种方法,即:去MERCURY官方站点去下载一个基于.NET Remoting的add-in的补丁包,把此包集成于.NET C鼾发环境中,这时, 开发环境上方工具条会出现一个 Vuser的新控件(见下图)。我们调入被测源程序,然后 在其中创建一个 Loadrunner 的新项 目,然后根据被测对象,在开发环境中写出测试代 码。最后利用 Vuser项创建LR的场景,它会自动调用 LR去做,设置完毕运行即可。当完 成场景运行之后,利用LR的Analysis工具

18、进行分析即可。-7 LR 计数器简介Memory: QEK AK5. 越低越好。大数值表示磁盘读而不是缓存读。KvjG+由于过多的页交换要使用大量的硬盘空间,因此有可能将导致将页交换内存不足与导致页 交换的磁盘瓶径混淆。因此,在研究内存不足不太明显的页交换的原因时,必须跟踪如下 的磁盘使用情况计数器和内存计数器: IAp7,5yPhysical Disk % Disk Time Physical Disk Avg.Disk Queue Length例如,包括 Page Reads/sec 和% Disk Time及Avg.Disk Queue Length。如果页面读取操作速率很低,同时% D

19、isk Time和Avg.Disk Queue Len gth的值很高,则可能有磁盘瓶径。但是,如果队列长度增加的同时页 面读取速率并未降低,则内存不足。 nphAnVOb要确定过多的页交换对磁盘活动的影响,请将Physical Disk Avg.Disk sec/Tra nsfe和Memory Pages/sec 计数器的值增大数倍。如果这些计数器的计数结果超过了0.1,那么页交换将花费百分之十以上的磁盘访问时间。如果长时间发生这种情况,那么您可能需要更 多的内存。 6By?Page Faults/sec:My每秒软性页面失效的数目(包括有些可以直接在内存中满足而有些需要从硬盘读取)较pag

20、e/sec 只表明数据不能在内存的指定工作集中立即使用。 1R87Cache Bytes: 99W7IIS5.0运行内文件系统缓存(File System Cache,默认情况下为50%的可用物理内存。 存不够时,它会自动整理缓存。Wlo%Ql Zn需要关注该计数器的趋势变化如 果您怀疑有内存泄露,请监视 Memory Available Bytes 和 Memory Committed Bytes ,以 观察内存行为,并监视您认为可能在泄露内存的进程的ProcessPrivate Bytes、ProcessWorking Set和ProcessHandle Count。如果您怀疑是内核模式进

21、程导致了泄露,则还 应该监视 MemoryPool Nonpaged Bytes、Memory Pool Nonpaged Allocs 和 Process(process_name) Pool Nonpaged Bytes。 Xr)fbL1Pages per second z:TI68r每秒钟检索的页数。该数字应少于每秒一页。 )1Process: &ufc3$Ur%Processor Time:%aI_80-被处理器消耗的处理器时间数量。如果服务器专用于sql server,可接受的最大上限是85%a-Page Faults/sec将进程产生的页故障与系统产生的相比较,以判断这个进程对系统

22、页故障 产生的影响。 )7EZk=|!Work set:处理线程最近使用的内存页,反映了每一个进程使用的内存页的数量。如果服务器有足够 的空闲内存,页就会被留在工作集中,当自由内存少于一个特定的阈值时,页就会被清除 出工作集。Inetinfo:Private Bytes: 9U 3If此进程所分配的无法与其它进程共享的当前字节数量。如果系统性能随着时间而降低,则 此计数器可以是内存泄漏的最佳指示器。Processor:监视 处理器”和 系统”对象计数器可以提供关于处理器使用的有价值的信息, 帮助您决定是否存在瓶颈。 1/W;H N2l%Processor Time:OD5n X如果该值持续超过

23、95%,表明瓶颈是CPU可以考虑增加一个处理器或换一个更快的处理 器。 ?nim!%WjQw%User Time:u/&?s5l表示耗费CPU的数据库操作,如排序,执行aggregate functions等。如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。?5GT*R%Privileged Time: YXOg: Y(CPU内核时间)是在特权模式下处理线程执行代码所花时间的百分比。如果该参数值和 Physical Disk参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。另外设置 Tempdb in RAM,减低max async IO,max

24、lazy writer IO等措施都会降低该值。此外,跟踪计算机的服务器工作队列当前长度的Server Work Queues Queue Length 计数器会显示出处理器瓶颈。队列长度持续大于 4 则表示可能出现处理器拥塞。此计数器是特定 时间的值,而不是一段时间的平均值。 1U4b7% DPC Time-g4un:ab h越低越好。在多处理器系统中,如果这个值大于50%并且Processor:% Processor Time非常高,加入一个网卡可能会提高性能,提供的网络已经不饱和。% Processor Time指这个线程使用处理器执行指令的所用时间的百分比。类似于 Processor

25、的% Processor Time;gLse-% Privileged Time 指这台处理器的线程用于执行在特权模式中的代码所经过时间的百分比。类似于 Processor 的% Privileged Time% User Time 指这台处理的线程用于执行使用用户模式的代码的时间的百分比。类似于 Processor 的 % User TimePrivate Bytes 指这个处理不能与其它处理共享的、已分配的当前字节数。如果此数值随时 间不断增大,有可能是内存泄漏。=bL :xT7Virtual Bytes 指处理使用的虚拟地址空间的以字节数显示的当前大小。使用虚拟地址空间 不一定是指对磁盘

26、或主内存页的相应的使用。虚拟空间是有限,如果使用过多,可能会限 制处理加载数据库的能力。 N*|H5W=VIO Data Bytes/sec 处理从 I/O 操作读取 /写入字节的速度。这个计数器为所有由本处理产生 的包括文件、网络和设备 I/O 的活动计数。 +AtBzG-Processor % Processor Time指处理器执行非闲置线程时间的百分比。这个计数器设计成用来作为处 理器活动的主要指示器。它通过在每个范例间隔中衡量处理器用于执行闲置处理线程的时 间, 并且用 100%减去该值得出。 (每台处理器有一个闲置线程,该线程在没有其它线程可 以运行时消耗周期 )。可将其视为范例间

27、隔用于做有用工作的百分比。这个计数器显示在范例间隔时所看到的忙时平均值。这个值是用100%减去该服务不活动的时间计算出来的。 Vd|e0 GA正常值 90,此值过大表示处理器的性能已经不能应付程序的要求,要换更快的处理器。% Privileged Time 指非闲置处理器时间用于特权模式的百分比。(特权模式是为操作系统组件和操纵硬件驱动程序而设计的一种处理模式。它允许直接访问硬件和所有内存。另一种 模 式为用户模式,它是一种为应用程序、环境分系统和整数分系统设计的一种有限处理模 式。操作系统将应用程序线程转换成特权模式以访问操作系统服务)。特权时 间的 %包括为间断和DPC提供服务的时间。特权时间比率高可能是由于失败设备产生的大数量的间隔而引起的。这个计数器将平均忙时作为样本时间的一部分显示。此值过大表示硬件处理消耗的时间太多,应着重从硬件操作(例如文件访问、打印等)的多少,以及硬件驱动程序来考虑优化性能。f% User Time指用于用户模式的非闲置处理器时间的百分比(用户模式是为应用程序、环境分系统和整数分系统设计的有限处理模式。另一个模式为特权模式,它是为操作系统组件设计的并且允许直接访问硬件和所有内存。操作系统将应用程序线程转换成特权模式以访 问操作系统服务 )。这个计数值将平均忙时作为实例时间的一部分

温馨提示

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

评论

0/150

提交评论