一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“系统资源监控(window与类unix)”。
系统资源监控通常分为两类系统:window和类unix(unix、linux、aix)
window系统资源监控
window系统资源监控有两种方法:一是使用loadrunner工具进行监控;二是使用windows自带的性能工具perfmon进行监控。
一、使用LoadRunner工具进行监控
使用LoadRunner监控windows系统资源的步骤如下:
1.新建一个控制器场景
2.切换到运行标签页
3.找到window resource视图
4.单击右键-->add measurements(添加度量)
5.在弹出的对话框中windows resources
6.在monitored server machines框中,单击add按钮
7.在弹出add machine对话框中,name文件框中输入待监控的服务器IP地址,platform下拉框中选择被监控服务器的类型
8.单击OK按钮即可
loadrunner其实是不可能直接获取到监控的数据,是间接通过windows操作系统自带的性能监控工具perfmon来获取系统资源的。
而perfmon这个工具是在C盘C:\WINDOWS\system32路径下,所以如果要让loadrunner可以获取到这些数据,那么就必须将其有访问C盘的能力。
测试是否具有访问C盘的权限命令如下:
\\ip\c$
例如:
\\127.0.0.1\c$
二、perfmon工具监控
perfmon是windows自带的一个监控工具,所以在windows下不需要使用第三方监控工具,只用这个监控工具就足够了。
permon监控的步骤如下:
1.进入控制面板-->管理工具
2.找到性能监视器
3.在用户自定义下创建一个数据收集器
类UNIX系统资源监控
不管什么操作系统类型,其监控主要是对cpu、memory和io进行监控
一、程序执行的模型
二、CPU
运行态:表示正在执行的线程。
就绪态:准备好要运行的线程 ,等待现在目前在运行的线程运行结束后,就绪态中的线程就开运行。
等待态:等待到就绪态的线程。
运行态中最多可以执行多少个线程数是固定,如果我们就绪态中的线程很多的话,那么运行是无法处理过来的,这样就必须排队。排队数越多,说明服务器处理的越慢。
CPU处理这些线程时,会为每线程准备一个时间片即固定的时间长度,如果在这个时间片中还没有执行完成,那么CPU会自动进行中断处理,将时间片让出来给其它的任务使用。
所谓CPU资源消耗其实是指CPU的使用的百分比,所谓的百分比是指CPU在工作时间占整个时间长度的百分比,这个百分比值越大,说明CPU越忙,进而表明我们的CPU是不够的用。
CPU常见的监控工具:
1.vmstat
vmstat time count
如
vmstat 3 5
-r:队列长度,表示在就绪态中的任务有多少个,如果这个值越大就表示服务器越忙,队列是直接可以表示CPU是否处于瓶颈,队列长度应该小于等于cpu个数乘以核数
-us:用户进程或任务所消耗的CPU资源,就是用户所产生的任务所消耗的CPU资源
-sy:系统进程或任务所消耗的CPU资源
正常情况我们期望所消耗的CPU资源总和不要超85% -id:表示CPU空闲百分比,一般不低于15%
-wa:表示暂挂磁盘IO或NFS加载时,所消耗的CPU时间百分比,如果这个值超过25%,我们认为磁盘不平衡。
2.top
top -d time
如
top -d 10
top工具可以分析CPU消耗的情况,并且会将每个进程所消耗的CPU进行排序,这样子可以解决一个问题,就是我们知道哪些进程消耗的CPU值最多。
3.iostat
iostat time count
如
iostat 10 20
这里显示处理暂挂磁盘所消耗的CPU资源
4.ps
ps -ef
显示所有进程消耗资源的情况
ps au
当前用户下消耗CPU资源情况
查后台进程所消耗的情况
5.sar
sar是一个统计命令,用于统计CPU资源,并生成报告
sar -u time count
//表示单用户模式下CPU消耗的资源的统计报告
sar -P ALL time count
//显示所有CPU消耗的情况
关于分析CPU是否到达瓶颈的指标如下:
1.队列长度直观的反应CPU是否存在瓶颈
2.CPU的使用率,建议阀值一般不超过85%
3.热密集应用程序,找出消耗CPU资源最多的进程
4.wa的值建议阀值不超过25%,否则表示磁盘不平衡
三、memory
所以程序运行时所需要的数据,一般都是消耗的是内存的资源,但我们看到的内存叫实内存,在实际使用过程上,系统并不会将整个我们所谓内存条拿去直接使用,而有一个专门管理它的程序或机制,这个叫做虚拟内存管理器VMM。
在操作系统运行程序,程序并不是将整个物理内存拿去使用,而由VMM来操作它怎么使用,VMM会将实内存分成固定的一些大小的空间,我们把这种空间称之为页,页的大小一般为4KB、8KB、4MB等。
程序在运行时,会将程序分成两种段:一是持久段;二是工作段。
持久段是指一种存在的东西 ,一般是我们说可执行程序。持久段是存放在磁盘中。为了解决程序在运行过程中可能存在的缺页问题,我们磁盘中会一个调页空间,调页空间是如何调用页的是由调页算法来实现的。
工作段是工作过程中使用的东西 ,工作段一般包括类似像数据段和堆栈等。工作段只有在工作时才存在,如果程序完成之后,这个工件段就不存在。
内存为了更好管理内存,VMM中会有一个PFT页面桢表,所以在程序运行过程中会就会出PI和PO两个指标,用于表示对调页空调的使用情况。
空闲列表中页面帧的数量受下瑞两个参数控制:
minfree:
--->空闲列表中可接受的实内存页面帧的最小数量,当空闲列表的大小低于这个数时,VMM开始替换页面,它持续窃取页面,直到空闲列表的大小达到maxfree。
maxfree:
--->通过VMM页面替换空闲列表可达到的最大大小,当进程终止并释放它们的工作段页面或删除其页面在内存中的文件时,结果是空闲列表的大小可能会超过这个数。
内存监控常用工具:
1.free
total:总的内存数,是指总的物理内存数,即RAM的大小。
used:表示已使用的内存,所以有一个叫内存使用率的说法,一般不建议使用率超过85%,但是有一些操作当程序在工作时,会将所有的内存都吞入使用,但其实真实情况下并没有使用这么多内存。
free:表示空闲的内存数
swap表示交换分区,正常情况下swap使用的值为零,只有当RAM不够的时候,我们才会调用swap的内存,也就是说如果你看到swap中,使用的值不为零,那么就说明RAM不够用。
2.vmstat
显示内存的统计摘要信息 pi(pages paged in):表示从调页空间调入到内存,调页空间是一个存储在磁盘中一个虚拟内容,pi是衡量调页 空间的一个关键标示。 po(pages paged out):表示从内存写入调页空间的值,如果出现仍驻留调页空间或已修改的,那么还是保留在调页空间,直到程序运行结束或终止。
pi和po的值是不确定的,但是pi和po的值正常情况下是不可能为零,如果在不断的并过程中,我们发现pi和po一直为零,就说操作系统的内存存在问题。
正常情况下pi在增大的时候,po也会增大而非为零或一直不变。
3.ps v或ps -aux
显示每个进程所消耗的资源
%MEM:表示该进程所消耗的内存百分比
RSS:表示该进程所消耗的内存大小,单为KB
DRS:表示可执行程序映射大小
4.vmstat -s
统计内存消耗值的情况,主要包括实内存的使用、swap的使用、pi、po
CPU context switches:表示CPU时钟频率被切换的次数,当这个值很大说明CPU会任务频繁的调用并切换。
关于内存监控的主要指标:
--->内存的使用率,一般阀值不超过85%,但即使超过85%也不能完全判断内存是不够用的
--->swap的使用,一般swap的使用都为零,如果大于零,说明RAM不够
--->pi与po的值,如果pi和po的值一直很小或者为0说明内存有问题
--->监控每个进程所消耗的内存值
--->RSS显示为每个进程所消耗的实内存
--->CPU上下文切换次数
四、IO
对于类unix来说,我们通常说操作系统为文件操作系统,其主要的原因是在划分或使用硬盘时类unix与windows有着截然不一样的方式,所以在类unix中我们会说C盘、D盘的概念。
一个物理硬盘,通常可以分为多个卷组,给我们的直观理解就是分为了多个盘,每个卷组分对分划分出一个物理卷,每个物理卷可以分出多个逻辑卷,每个逻辑卷下面挂载我们不同的文件系统,文件系统下面存放着是文件。
不同的操作系统还会对物理卷大小进行分配,分配的大小是固定,可能4MB或8MB等。
磁盘存储数据都永久段的数据,在程序运行时,调页空间会将磁盘的永久段的信息调入到内存使用,即通过VMM来调用我们要的数据,就我们通常说主调页空间工作的原理。
一般来我们看到的文件是顺序,但实际上我们运行我们的文件不定是顺序的,如果不是顺序则说明我们的文件是零碎的,那么如果访问的是零碎的文件,这样会大大增加我们寻道的时间。碎片率越高说明性能就越差。
IO监控命令:
1.iostat
iostat time count
例如:
iostat 5 10
avg-cpu:统计而磁盘操作引起的CPU资源消耗的平均数据。
%iowait:暂挂磁盘所消耗的CPU的值,一般不超过25%,如果超过25%说明磁盘有问题。
Blk_read/s:每秒从磁盘中读的字节数
Blk_wrtn/s:每秒写入磁盘中的字节数
Blk_read:总从磁盘中读的字节数
Blk_wrtn:总的写入磁盘的字节数
tps:每秒传输的次数,即我们说的每秒处理的IO请求数,但是每个请求有多少字节数是不确定。
分析磁盘是否均衡:通过分析每个磁盘的读写数度来分析磁盘是否平衡。如果我们服务器有多个磁盘,那么需要比较每个磁盘的读写字节数,如果磁盘读写数字的值差距很明显,那么说明磁盘不均衡,所谓的不均衡是指我们访问磁盘读写的内容没有平均的分配到所有的磁盘中。
2.sar
sar -d time count
例如
sar -d 5 10 123
avgrq-sz:平均队列长度,未完成的任务排队的长度,如果平均队列长度越大,说明磁盘遇到瓶颈。
%tm_act:表示磁盘活动时间百分比,即磁盘在活动时所占的百分比时间,也可以理解磁盘带宽的利用率,如果这个值超过70%,我们磁盘是存在瓶颈的。因为%tm_act这个值越大,说不进程等待的时间长度会超过IO本身处理的时间。
关于IO监控的几个方面:
1.wa或%iowait的值不超过25%,如果超过表示磁盘存在问题
2.磁盘是否处于平衡状态
3.tps每秒传输次数
4.%tm_act的值建议不超过70%
5.avgrq-sz磁盘的队列长度
6.碎片率不能太高
nmon
nmon是IBM的一个开源第三方监控的工具,由两部分组成:一是nmon监控;二是nmon结果分析。
将nmon的工具上传到需要监控服务上,准确的说这个工具是不用安装,只要修改权限即可。
chmod 777 nmon
运行nmon 、
./nmon
nmon工作原理
使用nmon记录文件有两种方式:一是界面数据显示;二是记录在文件中。
记录在文件中的步骤如下:
1.输入需要监控的命令
nmon [ -f | -F filename | -x | -X | -z ] [ -r < runname > ] [ -t | -T | -Y ]
[ -s seconds ] [ -c number ] [ -w number ] [ -l dpl ] [ -d ] [-g filename ] [-k disklist ] [ -C ] [ -G ] [ -K ] [ -o outputpath ] [ -D ] [ -E ] [ -J ] [ -V ] [ -P ] [ -M ] [ -N ] [ -W ] [ -S ] [-^ ] [ -O ] [ -L ] [ -I percent ] [ -A ] [ -m < dir > ] [ -Z priority ]
通常使用的命令格式如下:
./nmon -f -r test -s 10 -c 20
-f:表示记录成文件
-r:表示运行本次监控的名称
-s:采样时间间隔
-c:采样点的次数
2.将nmon文件转换成csv文件
sort ***.nmon > ***.csv
3.使用分析工具对生成的csv文件进行分析
今天关于“系统资源监控(window与类unix)”就学习到这里了,每个工作日小编都会更新一个小知识,希望大家多多关注我们,一起来学习喔!