一、LR 监控windows

 一般在客户端通过LoadRunner对服务器进行压力测试,都需要实时监控服务器端的系统资源,本篇主要简单介绍一下如何设置在 LoadRunner的Controller中配置监控Windows Resources,其实也可以直接在远程连接服务器端在上面开启任务管理器或者在控制面板中找到性能计数器来监控也可以,但是为了在LR进行施压过程中 更便捷,我们还是要学会这个基本的配置。关于此处的配置,需要针对不同的服务器操作系统进行不同的设置,但基本思路相同。本篇以Windows系统为例, 具体配置如下:

1、通过客户端与服务器进行网络测试,保证通信畅通

2、开启服务器端Windows中的如下两个服务,如下图:

windows怎么监控dll注入 lr监控windows_服务器

3、需要对服务器的系统本地策略进行更改,这个很重要,也是决定客户端能不能访问服务器端的关键步骤,具体需要进入控制面板下的管理工具中,找到本地安全策略,如下:

windows怎么监控dll注入 lr监控windows_服务器_02

注意:这里一定要改成经典模式,默认为仅来宾模式。

4、在客户端进行测试,在“运行”栏中输入服务器的ip地址,后面跟上C$,表示服务器C盘下的系统资源目录, 如:“\\192.168.96.135\C$”,看看是否可以访问服务器C盘目录,通常情况下可能需要输入用户名和密码,填充服务器端的账户和密码就 ok,如下所示:

windows怎么监控dll注入 lr监控windows_windows怎么监控dll注入_03

注:如果显示可以访问该页面表示,可以正常访问服务器端的系统资源,也就可以监控。

5、切换到LoadRunner的Controller中在Windows Resources下配置监控目标,具体如下:

windows怎么监控dll注入 lr监控windows_服务器_04

通过上图发现,这种配置方式跟系统的性能计数器配置基本类似。

6、看看配置完成后的实时监控记录,如下图所示:

windows怎么监控dll注入 lr监控windows_Time_05

以上是在压力测试过程中,所实时监控的目标服务器的系统资源。

LR是一个功能比较全面的性能测试工具,所以很多细节的功能可能不好设置,但是作用却很大。下次有机会将总结LoadRunner如何监控Linux系统资源。

loadrunner 11 添加监控windows 服务器系统资源

在windows7 loadrunner11 的Scenario中输入要监控windows的ip地址出现
Monitor name :Windows Resources. Cannot connect to machine 192.168.*.*.
Reason: 拒绝访问。
Hints:
Check that your login user name appears as administrator on this machine.
Check that you have entered the correct machine name.
Check that the machine exists and that it is online (use the ping utility for this operation).
Delete the machine and add it again (entry point: CFactory::Initialize).        [MsgId: MMSG-47299]
的错误

 

   (1)保证装有loadrunner的测试机和被监控的目标机之间能够ping通,在同一个网段内,保证两台机器用administrator登陆。

   (2)查看目标机的连个服务是不是存在:Remote Registry和Remote Procedure Call(RPC),如果存在将其启动,进行第(3)步骤;如果不存在,转到步骤(7)

   (3)查看目标机C$是否共享:右击我的电脑,选择‘管理’->‘共享文件夹’->‘共享’,点击‘共享’,在这里面要有C$这个共享文件夹,(要是没有自己手动加:在cmd命令行中执行:net share c$=c:)

    (4)在测试机的‘运行’中输入: \\目标机IP\c$ ,点击确定后,要输入目标机的用户名和密码,能够查看到目标机的c盘,表示连接成功;

       也可以采用另外一种方法,在cmd命令行中输入:net use \\目标机IP\c$ "目标机密码"  /user:"目标机用户名"

   (5)进入目标机的“本地策略”,选择并点击“安全选项”,把“策略”中的“访问网路:本地账户的共享和安全模式”修改成“经典-本地用户自己的身份验证”。

   (6)到这里就可以用loadrunner监控windows目标机了。

   (7)添加“Remote Registry”服务

          A: 首先看下C:/windows/system32里有没有regsvc.dll这个文件,若没有可以从有的机器上拷贝过来          

         B:  然后从存在这个服务的机器上导出一个注册表文件,导出  

               HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/RemoteRegistry 这个文件,进行保存,命名为RemoteRegistry.reg  ,将其拷贝到目标机上。

          C:在目标机上导入文件RemoteRegistry.reg 到注册表,重启机器

          D:若打开Remote Registry Service服务出现1083错误时:错误1083:配置成在该可执行程序中运行的这个服务不能执行该服务。

   解决方案进入注册表,找到 HKEY_LOCAL_MACHINE/SOFTWARE/Micosoft/Windows NT/SvcHost,在右侧的键值LocalService中添加服务名RemoteRegistry;在键值netsvcs中也添加服务名RemoteRegistry                 

      重启机器,启动服务成功。widows7 的loadrunner11就可以完全远程监控目标机了。

 

二、LR windows指标分析

对操作系统主要关注CPU、内存、硬盘、吞吐量(through put)。

吞吐量是对于网络情况的,有时候存在吞吐量过大,服务器本身硬件资源也满足,但是带宽不足。

 

 

监测对象

? System(系统)

l   %Total Processor Time

系统中所有处理器都处于繁忙状态的时间百分比,对于多处理器系统来说,该值可以反映所有处理器的平均繁忙状态,该值为100%,如果有一半的处理器为繁忙状态,该值为50%服务器。器消耗的处理器时间数量.如果服务器专用于sql server 可接受的最大上限是80% -85 %.也就是常见的CPU 使用率.

l   File Data Operations/sec

计算机对文件系统进行读取和写入操作的频率,但是不包括文件控制操作

l   Process Queue Length

线程在等待分配CPU资源所排队列的长度,此长度不包括正在占有CPU资源的线程。如果该队列的长度大于处理器个数+1,就表示处理器有可能处于阻塞状态(参考值:<=处理器个数+1)

?  Processor(处理器)

l  %Processor Time

CPU利用率,该计数器最为常用,可以查看处理器是否处于饱和状态,如果该值持续超过 95%,就表示当前系统的瓶颈为CPU,可以考虑增加一个处理器或更换一个性能更好的处理器。(参考值:<80%)

l  %Priviliaged Time

CPU在特权模式下处理线程所花的时间百分比。一般的系统服务,进城管理,内存管理等一些由操作系统自行启动的进程属于这类

l  %User Time

与%Privileged Time计数器正好相反,指的是在用户状态模式下(即非特权模式)的操作所花的时间百分比。如果该值较大,可以考虑是否通过算法优化等方法降低这个值。如果该服务器是数据库服务器,导致此值较大的原因很可能是数据库的排序或是函数操作消耗了过多的CPU时间,此时可以考虑对数据库系统进行优化。表示耗费CPU的数据库操作,如排序,执行aggregate functions等。如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。

l  %DPC Time

处理器在网络处理上消耗的时间,该值越低越好。越低越好。在多处理器系统中,如果这个值大于50%并且Processor:% Processor Time非常高,加入一个网卡可能会提高性能,提供的网络已经不饱和。

?  Memory(内存)

l  Page Faults/sec

当处理器在内存中读取某一页出现错误时,就会产生缺页中断,也就是 page Fault。如果这个页位于内存的其他位置,这种错误称为软错误,用Transition Fault/sec 来衡量;如果这个页位于硬盘上,必须从硬盘重新读取,这个错误成为硬错误。硬错误会使系统的运行效率很快将下来。Page Faults/sec这个计数器就表示每秒钟处理的错误页数,包括硬错误和软错误。

l  Page Input/sec

表示为了解决硬错误而写入硬盘的页数(参考值:>=Page Reads/sec)

l  Page Reads/sec

表示为了解决硬错误而从硬盘上读取的页数。

l  Page/sec

表示为了解决硬错误而从硬盘上读取或写入硬盘的页数(参考值:00~20)

l  Pages per second:

每秒钟检索的页数。该数字应少于每秒一页Working set:理线程最近使用的内存页,反映了每一个进程使用的内存页的数量。如果服务器有足够的空闲内存,页就会被留在工作集中,当自由内存少于一个特定的阈值时,页就会被清除出工作集。

l  Available Mbytes

剩余的可用物理内存,单位是兆字节(参考值:>=10%)用物理内存数. 如果Available Mbytes的值很小(4 MB 或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。

l  Cathe Bytes

文件系统的缓存(默认为50%的可用物理内存)

?  Process(进程)

l  private Bytes

进程无法与其他进程共享的字节数量。该计数器的值较大时,有可能是内存泄露的信号

l  Work set

最近处理线程使用的内存页

?  PhysicalDisk(磁盘)

l  %Disk Time

表示磁盘驱动器为读取或写入请求提供服务所用的时间百分比,如果只有%Disk Time比较大,硬盘有可能是瓶颈。指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。如果三个计数器都比较大,那么硬盘不是瓶颈。如果只有%Disk Time比较大,另外两个都比较适中,硬盘可能会是瓶颈。在记录该计数器之前,请在Windows 2000 的命令行窗口中运行diskperf -yD。若数值持续超过80%,则可能是内存泄漏。应当总小于90%

l  Average Disk Queue Length

表示磁盘读取和写入请求提供服务所用的时间百分比,可以通过增加磁盘构造磁盘阵列来提高性能(<=磁盘数的2倍)读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。该值应不超过磁盘数的1.5~2 倍。要提高性能,可增加磁盘。注意:一个Raid Disk实际有多个磁盘。不应当超过物理磁盘数量的2倍,正常值<0.5

l  Average Disk Read Queue Length

表示磁盘读取请求的平均数

l  Average Disk write Queue Length

表示磁盘写入请求的平均数

l  Average Disk sec/Read

磁盘中读取数据的平均时间,单位是秒

l  Average Disk sec/Transer

磁盘中写入数据的平均时间,单位是秒,一般来说,定义该值小于15ms最为优异,介于15-30ms之间为良好,30-60ms之间为可以接受,超过60ms则需要考虑更换硬盘或硬盘的RAID方式了 

l  %Disk reads/sec(physicaldisk_total):

每秒读硬盘字节数. 该指标应总小于磁盘I/O子系统的容量

l  %Disk write/sec(physicaldisk_total):

每秒写硬盘字节数. 该指标应当总小于硬盘I/O子系统的容量

l  Disk Bytes/sec 

指在进行写入或读取操作时从磁盘上传送或传出的字节速率。
此值取决于硬盘的速度

l  Disk Transfers/sec 

指在此盘上读取/写入操作速率。
正常值<(Disk Bytes/sec)/3,此值过大表示系统要求的IO速度已接近硬盘的最大速度,要更换更快的硬盘 D

?  Network Interface(网络)

l  Byte Total/sec

表示网络中接受和发送字节的速度,可以用该计数器来判断网络是否存在瓶颈(参考值:该计数器和网络带宽相除,<50%)

判断瓶颈

?  判断应用程序的问题

  如果系统由于应用程序代码效率低下或者系统结构设计有缺陷而导致大量的上下文切换(context switches/sec显示的上下文切换次数太高)那么就会占用大量的系统资源,如果系统的吞吐量降低并且CPU的使用率很高,并且此现象发生时切换水平在15000以上,那么意味着上下文切换次数过高.
Loadrunner 分析windows资源 - jahnkey - jahnkey的博客
 

  从图的整体看.context switches/sec变化不大,throughout曲线的斜率较高,并且此时的contextswitches/sec已经超过了15000.程序还是需要进一步优化.

?  判断CPU瓶颈

如果processor queue length显示的队列长度保持不变(>=2)个并且处理器的利用率%Processortime超过90%,那么很可能存在处理器瓶颈.如果发现processor queue length显示的队列长度超过2,而处理器的利用率却一直很低,或许更应该去解决处理器阻塞问题,这里处理器一般不是瓶颈.
Loadrunner 分析windows资源 - jahnkey - jahnkey的博客
 

%processor time平均值大于95,processor queue length大于2.可以确定CPU瓶颈.此时的CPU已经不能满足程序需要.急需扩展.

CPU资源成为系统性能的瓶颈的征兆:

很慢的响应时间(slow response time)

CPU空闲时间为零(zero percent idle CPU)

过高的用户占用CPU时间(%User Time)

过高的系统占用CPU时间(%Priviliaged Time:长期大于90%或者95%)

长时间的有很长的运行进程队列(Process Queue Lengt:大于处理器个数+1)

 

?  判断内存泄露问题

  内存问题主要检查应用程序是否存在内存泄漏,如果发生了内存泄漏,process\private bytes计数器和process\working set 计数器的值往往会升高,同时avaiable bytes的值会降低.内存泄漏应该通过一个长时间的,用来研究分析所有内存都耗尽时,应用程序反应情况的测试来检验.
Loadrunner 分析windows资源 - jahnkey - jahnkey的博客
 

图中可以看到该程序并不存在内存泄露的问题.内存泄露问题经常出现在服务长时间运转的时候,由于部分程序对内存没有释放,而将内存慢慢耗尽.也是提醒大家对系统稳定性测试的关注.

 Windows资源监控中,如果Process\Private Bytes计数器和Process\Working Set计数器的值在长时间内持续升高,同时Memory\Available bytes计数器的值持续降低,则很可能存在内存泄漏。

 

?  判断内存不足

 如果队列长度(Avg.Disk Queue Length)增加的同时页面读取速率(Page Reads/sec)并未降低,则内存不足。

如果Available Mbytes(剩余物理内存数)的值很小(4 MB 或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。

?  硬件问题

请观察 Processor\ Interrupts/sec 计数器的值,该计数器测量来自输入/输出 (I/O) 设备的服务请求的速度。如果此计数器的值明显增加,而系统活动没有相应增加,则表明存在硬件问题。

 

?  I/O资源成为系统性能的瓶颈的征兆

IO Data Bytes/sec(处理从I/O操作读取/写入字节的速度。这个计数器为所有由本处理产生的包括文件、网络和设备I/O的活动计数。)

IO Data Operations/sec

IO Other Bytes/sec

IO Other Operations/sec

IO Read Bytes/sec(每秒IO读取字节数)

IO Read Operations/sec

IO Write Bytes/sec(每秒IO写出字节数)

IO Write Operations/sec

 

过高的磁盘利用率(high disk utilization) 

太长的磁盘等待队列(Physical Disk\ Current Disk Queue Length,正在等待磁盘访问的系统请求数量) 

等待磁盘I/O的时间所占的百分率太高(Average Disk Queue Length) 

太高的物理I/O速率:large physical I/O rate(not sufficient in itself) 

过低的缓存命中率(low buffer cache hit ratio(not sufficient in itself)) 

太长的运行进程队列,但CPU却空闲(Process Queue Length)

 

在方案运行中,如果出现了大于3个用户的业务操作失败,或出现了服务器shutdown的情况,则说明在当前环境下,系统承受不了当前并发用户的负载压力,那么最大并发用户数就是前一个没有出现这种现象的并发用户数

?  监视磁盘的使用情况

监视磁盘活动涉及两个主要方面:

监视磁盘 I/O 及检测过度换页 

隔离 SQL Server 产生的磁盘活动 

  监视磁盘 I/O 及检测过度换页

可以对下面两个计数器进行监视以确定磁盘活动:

PhysicalDisk: % Disk Time  

PhysicalDisk: Avg. Disk Queue Length  

在系统监视器中,PhysicalDisk: % Disk Time 计数器监视磁盘忙于读/写活动所用时间的百分比。如果 PhysicalDisk: % Disk Time 计数器的值较高(大于 90%),请检查PhysicalDisk: Current Disk Queue Length 计数器了解等待进行磁盘访问的系统请求数量。等待 I/O 请求的数量应该保持在不超过组成物理磁盘的轴数的 1.5 到 2 倍。大多数磁盘只有一个轴,但独立磁盘冗余阵列 (RAID) 设备通常有多个轴。硬件 RAID 设备在系统监视器中显示为一个物理磁盘。通过软件创建的多个 RAID 设备在系统监视器中显示为多个实例。

可以使用 Current Disk Queue Length 和 % Disk Time 计数器的值检测磁盘子系统中的瓶颈。如果 Current Disk Queue Length 和 % Disk Time 计数器的值一直很高,则考虑下列事项:

使用速度更快的磁盘驱动器。 

将某些文件移至其他磁盘或服务器。 

如果正在使用一个 RAID 阵列,则在该阵列中添加磁盘。 

如果使用 RAID 设备,% Disk Time 计数器会指示大于 100% 的值。如果出现这种情况,则使用 PhysicalDisk: Avg.Disk Queue Length 计数器来确定等待进行磁盘访问的平均系统请求数量。

I/O 依赖的应用程序或系统可能会使磁盘持续处于活动状态。

监视 Memory: Page Faults/sec 计数器可以确保磁盘活动不是由分页导致的。在 Windows 中,换页的原因包括:

配置进程占用了过多内存。 

文件系统活动。 

如果在同一硬盘上有多个逻辑分区,请使用 Logical Disk 计数器而非 Physical Disk 计数器。查看逻辑磁盘计数器有助于确定哪些文件被频繁访问。当发现磁盘有大量读/写活动时,请查看读写专用计数器以确定导致每个逻辑卷负荷增加的磁盘活动类型,例如,Logical Disk: Disk Write Bytes/sec。

?  判断磁盘瓶颈

Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec页面读取操作速率很低,则可能存在磁盘瓶径。

  Physical Disk\ Disk Reads/sec and Disk Writes/sec

  Physical Disk\ Current Disk Queue Length

  Physical Disk\ % Disk Time

  LogicalDisk\ % Free Space

  测试磁盘性能时,将性能数据记录到另一个磁盘或计算机,以便这些数据不会干扰您正在测试的磁盘。

  可能需要观察的附加计数器包括 Physical Disk\ Avg.Disk sec/Transfer 、Avg.DiskBytes/Transfer,和Disk Bytes/sec。

  Avg.Disk sec/Transfer 计数器反映磁盘完成请求所用的时间。较高的值表明磁盘控制器由于失败而不断重试该磁盘。这些故障会增加平均磁盘传送时间。对于大多数磁盘,较高的磁盘平均传送时间是大于 0.3 秒。

  也可以查看 Avg.Disk Bytes/Transfer 的值。值大于 20 KB 表示该磁盘驱动器通常运行良好;如果应用程序正在访问磁盘,则会产生较低的值。例如,随机访问磁盘的应用程序会增加平均 Disk sec/Transfer 时间,因为随机传送需要增加搜索时间。

  Disk Bytes/sec 提供磁盘系统的吞吐率。

  决定工作负载的平衡要平衡网络服务器上的负载,需要了解服务器磁盘驱动器的繁忙程度。使用 Physical Disk\ %Disk Time 计数器,该计数器显示驱动器活动时间的百分比。如果 % Disk Time 较高(超过90%),请检查 Physical Disk\ Current Disk Queue Length 计数器以查看正在等待磁盘访问的系统请求数量。等待 I/O 请求的数量应当保持在不大于组成物理磁盘的主轴数的 1.5 到2倍。

  尽管廉价磁盘冗余阵列 (RAID) 设备通常有多个主轴,大多数磁盘有一个主轴。硬件 RAID设备在“系统监视器”中显示为一个物理磁盘;通过软件创建的 RAID 设备显示为多个驱动器(实例)。可以监视每个物理驱动器(而不是 RAID)的 Physical Disk 计数器,也可以使用 _Total 实例来监视所有计算机驱动器的数据。

使用 Current Disk Queue Length 和 % Disk Time 计数器来检测磁盘子系统的瓶颈。如果Current Disk Queue Length 和 % Disk Time 的值始终较高,可以考虑升级磁盘驱动器或将某些文件移动到其他磁盘或服务器。

如何调优

?  CPU问题

a)        考虑使用更高级的CPU代替目前的CPU

b)       对于多个CPU,考虑CPU之间的负载分配

c)       考虑在其他体系上设计系统,例如增加前置机、设置并行服务器等

?  内存和高速缓存

a)      内存的优化包括操作系统、数据库、应用程序的内存优化

b)     过多的分页与交换可能降低系统的性能

c)     内存分配也是影响系统性能的主要原因

d)     保证保留列表具有较大的邻接内存块

e)      调整数据块缓存区大小(用数据块的个数表示)是一个重要内容

f)      将最频繁使用的数据保存在存储区中

? 磁盘(I/O)资源问题

a)      磁盘读写进度对数据库系统是至关重要的,数据库对象在物理设备上的合理分布能改善性能

b)     磁盘镜像会减慢磁盘写的速度

c)     通过把日志和数据库对象分布在独立的设备上,可以提高系统的性能

d)     把不同的数据库放在不同的硬盘上,可以提高读写速度。建议把数据库、回滚段、日志放在不同的设备上

e)      把表放在一块硬盘上,把非簇的索引放在另一块硬盘上,保证物理读写更快。

? 调整配置参数

a)      包括操作系统和数据库的参数配置

b)     并行操作资源限制的参数(并发用户的数目、会话数)

c)     影响资源开销的参数

d)     与I/O有关的参数

? 优化应用系统网络设置

a)        可以通过数组接口来减少网络呼叫。不是一次提取一行,而是在单个往来往返中提取10行,这样效率较高

b)       调整会话数据单元的缓冲区大小

c)       共享服务进程比专用服务进程提供更好的性能