LoadRunner监控Unix、Windows方法及常用性能指标

 

一、LoadRunner监控Linux资源.... 3

(一)、准备工作... 3

1、可以通过两种方法验证服务器上是否配置了rstatd守护程序:... 3

(2)使用find命令... 3

2、安装rpc.rstatd服务... 3

3、启动rpc.rstatd服务... 3

4、设置rpc.rstatd服务自动启动... 4

5、几点小技巧: 4

(二) LoadRunner获取Linux性能计数器... 6

1、启动LoadRunner并监控Linux系统资源:... 6

2、常用计数器说明... 7

二、LoadRunner监控Windows资源.... 8

(一)、Windows开启LR监控的配置信息:... 8

步骤1. 8

步骤2. 8

步骤3. 8

步骤4. 8

步骤5. 8

(二)、一些重要的性能计数器... 9

1、性能计数器大类选择... 9

2、性能计数器详细说明... 9

LoadRunner监控操作系统

一、LoadRunner监控Linux资源

(一)、准备工作

首先,监视Linux一定要有rstatd这个守护进程,有的Linux版本里也有可能是rpc.rstatd这里只是名字不同而已,功能是一样的.

1、可以通过两种方法验证服务器上是否配置了rstatd守护程序:

(1)使用rup命令

它用于报告计算机的各种统计信息,其中就包括rstatd的配置信息。使用命令rup 10.130.61.203,此处10.130.61.203是要监视的linux/Unix服务器的Ip,如果该命令返回相关的统计信息。则表示已经配置并且激活了rstatd守护进程;若未返回有意义的统计信息,或者出现一条错误报告,则表示rstatd守护进程尚未被配置或有问题。

(2)使用find命令

#find / -name rpc.rstatd,该命令用于查找系统中是否存在rpc.rstatd文件,如果没有,说明系统没有安装rstatd守护程序。

如果服务器上没有安装rstatd程序(一般来说LINUX都没有安装),需要下载一个包才有这个服务,包名字是rpc.rstatd-4.0.1.tar.gz. 这是一个源码,需要编译,下载并安装rstatd

2、安装rpc.rstatd服务

如系统未安装rpc.rstatd服务,刚需要进行安装,附安装步骤如下:

1、下载并安装rstatd                         ---证券测试室FTP服务器上有(LR目录下)

2、tar -xzvf  rpc.rstatd.tar.gz             ---解压rcp.rstatd

3、chmod 777 rpc.rstatd                            ---改变该文件读写的权限,拥有所有权限。

4、cd  rpc.rstatd                             ---进入到rpc.rstatd目录中

5、./configure                                          ---配置rc.rstatd的安装,我是按照默认方式

6、make                                           ---/编译rc.rstatd

7、make install                                  ---安装

3、启动rpc.rstatd服务

执行:rpc.rstatd命令,启动rpc.rstatd服务。

执行:rpcinfo –p 命令,检查rpc服务的状态。

如回显结果为下文,则说明rpc.rstatd服务启动成功,可以用LR去监视了。

[root@localhost ~]# rpcinfo -p

程序 版本 协议   端口

100000    2   tcp    111  portmapper

100000    2   udp    111  portmapper

100024    1   udp    614  status

100024    1   tcp    617  status

100001    5   udp    945  rstatd

100001    3   udp    945  rstatd

100001    2   udp    945  rstatd

100001    1   udp    945  rstatd

4、设置rpc.rstatd服务自动启动

如果需要将rpc.rstatd服务设置成自动启动(开机启动),则需要修改/etc/xinetd.d/下的三个配置文件rlogin ,rsh, rexec ,使用VI命令打开这三个文件并将其中的disable = yes都改成 disable = no ( disabled 用在默认的 {} 中禁止服务),或是把# default: off都设置成 on 。这个的意思就是在xinetd启动的时候默认都启动上面的三个服务!

(如果执行后出现出现乱码,在vim /etc/sysconfig/i18n下更改LANG=

zh_CN.UTF-8 为LANG="en_US.UTF-8"即可。)

A: service xinetd reload

B: service xinetd rstart

5、几点小技巧:
(1)检查是否启动: rsh server 监听的TCP 514
[root@mg04 root]# netstat -an |grep 514
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN
如果能看到514在监听说明rsh服务器已经启动。

(2)检查是否启动: rstatd
输入命令: rpcinfo -p
如果能看到类似如下信息:
程序 版本 协议 端口
100001 5 udp 937 rstatd
100001 4 udp 937 rstatd
100001 3 udp 937 rstatd
100001 2 udp 937 rstatd
100001 1 udp 937 rstatd
那就说明rstatd服务启动了,(当然这里也可以用ps ax代替)

(3)重起xinetd方法:
在suse linux如下操作:
cd /etc/init.d/
./xinetd restart
看到网上有的地方说使用如下命令:
# service xinetd reload
# /sbin/service xinetd rstart
不知道是在什么系统用的。

(4)安装rsh,和rsh-server两个服务包方法
a. 卸载rsh
# rpm –q rsh----------查看版本号
# rpm -e 版本号---------卸载该版本。
b.安装
# rpm –ivh rsh-0.17-14.i386.rpm rsh-server-0.17-14.i386.rpm

(5)在启动rpc.rstatd时,会报错“Cannot register service: RPC: Unable to receive; errno = Ction refused”
解决方法如下:
# /etc/init.d ./portmap start
# /etc/init.d ./nfs start
然后再次启动rpc.rstatd就好了。

注:

1、Rstatd文件在FTP服务器上有,资源地址:ftp://192.168.51.233/01测试工具/HP Mercury Interctive/LoadRunner/资源监控配置及所用的包/linux监控包/

2、rstatd Rstat协议允许网络上的用户获得同一网络上各机器的性能参数。

 

(二) LoadRunner获取Linux性能计数器

1、启动LoadRunner并监控Linux系统资源:

在controller中,将System resource Graphs中的Unix resources拖到右侧的监控区域中,并单击鼠标右键选择“Add Measurements”,在弹出的对话框中输入被监控的linux系统的IP地址,然后选择需要监控的性能指标(指标简介见下文),并点击“确定”。

此时可能会出现如下错误:

上图说明RPC服务没有成功启动。

解决办法:见前文“(一)、准备工作”

上图说明是Linux系统中的防火墙开启了并且阻挡了LoadRunner监控Linux系统的资源。

解决办法:关闭防火墙: [root@localhost ~]# /etc/init.d/iptables stop;

监控成功之后如下图所示:

2、常用计数器说明

1)、CPU指标

Average load

  上一分钟同时处于“就绪”状态的平均进程数,这个数值除以CPU个数应该小于2,如果长期是2证明有排队的

CPU utilization

  CPU 的使用时间百分比,如果在75%以上,则可以考虑换CPU了

Swap-in rate

  正在交换的进程数

Swap-out rate

  正在交换的进程数

Context switches rate

  每秒钟在进程或线程之间的切换次数

System mode CPU utilization

  在系统模式下使用 CPU 的时间百分比

User mode CPU utilization

  在用户模式下使用 CPU 的时间百分比

Interrupt rate

  每秒内的设备中断数

2)、内存

Page-in rate

  每秒钟读入到物理内存中的页数

Page-out rate

  每秒钟写入页面文件和从物理内存中删除的页数

Paging rate

  每秒钟读入物理内存或写入页面文件的页数,如果持续在几百,可能要加大内存了

3)、磁盘

Collision rate

  每秒钟在以太网上检测到的冲突数

Disk rate

  磁盘传输速率

4)、网络

Incoming packets error rate

  接收以太网数据包时每秒钟接收到的错误数

Incoming packets rate

  每秒钟传入的以太网数据包数

Outgoing packets errors rate

  发送以太网数据包时每秒钟发送的错误数

Outgoing packets rate

  每秒钟传出的以太网数据包数

 

二、LoadRunner监控Windows资源

(一)、Windows开启LR监控的配置信息:

步骤1.控制面板》管理工具》服务,开启以下服务:Remote Procedure Call(RPC) 、Remote Registry Service、Network DDE。

步骤2.被监视的WINDOWS机器:右击我的电脑,选择管理->共享文件夹->共享 在这里面要有C$这个共享文件夹(要是没有自己手动加)。

步骤3.保证被监控的服务器,能用管理员登录(LR要连接WINDOWS机器进行监视,要有管理员帐号和密码)。被监视的WINDOWS机器上管理工具 -> 本地安全策略 -> 安全选项 -> 网络访问:本地帐户的共享和安全模式,把访问方式改为“经典”模式,这样就可以以administrator的身份登陆了。

步骤4.装LR的机器上使用运行,输入 \\被监视机器IP\C$ ,输入管理员帐号和密码,如果能看到被监视机器的C盘了,就说明你得到了那台机器的管理员权限,可以使用LR去连接了。如果不能共享,可能Server服务没有启动,请先启动此服务。

步骤5.在Controller找到Windows Resource计数器,右键"Add Measrements…"添加要监控的主机地址,点击"Add"后配置你的监控机,选择需要的监控指标。

监控成功之后如下图所示:

(二)、一些重要的性能计数器

1、性能计数器大类选择

Process object下的所有计数器。

Process or object下的所有计数器

System object下的所有计数器

Memory object下的所有计数器

2、性能计数器详细说明

分析性能日志的时候,我会重点观察下面这些计数器

 (1)Process object

该计数器可以针对目标进程分析内存,CPU,线程数目和handle数目。首先要确定目标进程,然后分析目标进程的下面一些计数器:

% Processor Time

该计数器是该进程占用CPU资源的指标。当进程繁忙的时候,CPU平均占用率应该在80%以内。如果超过该数值,程序可以认为发生了high CPU的问题。另外一种问题是CPU波动幅度大。虽然平均占用率不高,但是上下跳动频繁。在某一个短时间段里面,会有连续高CPU的情况出现。

Handle Count

该计数器记录了当前进程使用的kernel object handle数量。Kernel object是重要的系统资源。当程序进入稳定运行状态的时候,Handle Count数量也应该维持在一个稳定的区间。如果发现Handle Count在整个程序周期内总体趋势是连续向上,可以考虑程序是否有Handle Leak。

ID Process

该计数器记录了目标进程的进程ID。你可能觉得奇怪,ID有什么好观察的。进程ID是用来观察程序是否有重启发生。比如ASP.NET工作进程可能会自动回收。由于进程名都相同,只有通过进程ID来判断是否进程有重新启动现象。如果ID有变化,考虑程序是否发生崩溃或者Recycle。

Private Bytes

该计数器记录了当前通过VirtualAlloc API Commit的Memory数量。无论是直接调用API申请的内存,被Heap Manager申请的内存,或者是CLR 的managed heap(托管堆),都算在里面。跟Handle Count一样,如果在整个程序周期内总体趋势是连续向上,说明有Memory Leak(内存泄漏)。

指这个处理不能与其他处理共享的、已分配的当前字节数。

Virtual Bytes

指处理使用的虚拟地址空间的以字节数显示的当前大小。使用虚拟地址空间不一定是指对磁盘或主内存页的相应的使用。虚拟空间是有限的,可能会限制处理加载数据库的能力。该计数器记录了当前进程申请成功的用户动态总内存地址,包括DLL/EXE占用的地址和通过VirtualAlloc API Reserve的Memory Space数量,所以该计数器应该总大于Private Bytes。一般来说,Virtual Bytes跟Private Bytes的变化大致一致。由于内存分片的存在, Virtual Bytes跟Private Byes一般保持一个相对稳定的比例关系。当Virtual Bytes跟Private Bytes的比例关系大于2的时候(可通过windown/LR的监控窗口获取比例),程序往往有比较严重的内存地址分片(内存地址分片概念说不清,清楚后补充)。

(2)Processor object

该计数器记录系统中芯片的负载情况。由于普通程序并不刻意绑定到某个具体CPU上执行,所以在多CPU机器上观察Total Instance也就足够了。

% Processor Time

该计数器跟Process下的% Processor Time的意义一样,不过这里记录的是所有进程线程使用处理器执行指令所花的时间百分比,而不是针对具体某一个进程。通过把这个计数器跟Process下的同名计数器一起比较,就能看出系统的高CPU问题是否是由于单一的某个进程导致的。

(3)System

System object

该计数器记录系统中一个整体的统计信息。所以不区分Instance. 通过比较System object下的counter和其他counter的变化趋势,往往能看出一些线索。

Context Switch/sec

Context Switch标示了系统中整体线程的调度,切换频率。线程切换是开销比较大的操作。频繁的线程切换导大量CPU周期被浪费。所以看到高CPU的时候,一定要跟Context Switch一起比较。如果两者有相同的变化趋势,高CPU往往是由于contention导致的,而不是死循环。

Exception Dispatches/sec

Exception Dispatches表示了系统中异常派发,处理的频繁程序。跟线程切换一样,异常处理也需要大量的CPU开销。分析方法跟Context Switch雷同。

File Data Operations/sec

File Data Operations记录了当前系统中磁盘文件读写的频繁程度。通过观察该计数器跟其他性能指标的变化趋势,通常能够判断磁盘文件操作是否是性能瓶颈。类似的计数器还有Network Interface\Bytes total/sec。

 

(4)Memory

Memory object记录了当前系统中整体内存的统计信息。

Available Mbytes

该计数器是指物理内存的可用数,物理内存的可用数是指计算机上可用于运行处理的有效物理内存的字节 数量.这个计数器只显示上一次观察到的值;它不是一个平均值.至少要有10%的物理内存值,如果available 至少要有10%的物理内存值,如果available Mbytes值一直很小(4M或更小),说明计算机 Mbytes值一直很小(4M或更小),说明计算机总的内存可能不足,或某程序没有释放内存。

Committed Bytes

以字节表示的确认虚拟内存。确认内存磁盘页面文件上保留了空间的物理内存。每个物理磁盘上可以有一个或一个以上的页面文件。这个计数器只显示上一回观察到的值;它不是一个平均值。

Available Mbytes

Available Mbytes记录了当前剩余的物理内存数量。Committed Bytes记录了所有进程commit的内存数量。

结合以上两个计数器可以观察到:

1) 两者相加可以粗略估计系统总体可用内存多少,便于估计物理配置。

2) 当Available Mbytes少于100MB的时候,说明系统总体内存吃紧,会影响到整个系统所有进程的性能。应该考虑增加物理内存或者监察内存泄露。

3) 通过比较Process\Private Bytes跟Virtual Bytes,便于进一步确认是否有内存泄露,判断内存泄露是否是某一单个进程导致。

Free System Page Table Entries,Pool Paged Bytes和Pool Paged Bytes

这三个计数器可以衡量核心态空闲内存的数量。特别是当使用/3GB开关后,核心态内存地址被压缩,容易导致核心态内存不足,继而引发一些非常怪的问题。

上一篇:LoadRunner监控Linux资源


下一篇:c语言操作一维数组-3