性能测试中通常需要长期监控服务器的CPU、内存、磁盘IO、网络IO等信息,来辅助对测试结论进行分析,以确定影响性能的瓶颈,指导后续性能优化。本文教你如何使用systat工具采集监控信息,编写脚本提取自己所需要的数据,转存为 csv文件,然后利用excel绘图。
以最近完成的一个项目的性能测试进行举例说明,需要统计分析查询过程中CPU、磁盘及网络IO的累计历史变化情况,监控数据统计结果如下图所示:
上述性能监控数据图表主要是通过systat工具采集监控信息,编写脚本提取自己所需要的数据,转存为 csv文件,然后利用excel绘图, 下文将进行详细阐述。
一、 Sysstat工具简介及使用
sysstat 是 Linux 系统中的常用工具包。它的主要用途是观察服务负载,比如CPU和内存的占用率、网络的使用率以及磁盘写入和读取速度等。Sysstat工具包中包含两类工具,及时查看工具:iostat、mpstat、sar;累计统计工具:sar。其中sar具有这两种功能,是sysstat中的核心工具。
sysstat是很多linux系统自带的安装工具,若没有则可以下载rpm –qa sysstat。
1.通过系统自记录文件,查看监控数据
系统安装后(或安装sysstat包后),默认创建一个/etc/cron.d/sysstat的文件,会通过cron工具周期性的间隔启动。
在 cron 任务 /etc/cron.d/sysstat 中每隔10分钟执行一次 /usr/lib/sa/sa1 1 1 命令,将信息写入文件 /var/log/sa/saDD。每天 23:53 执行一次 /usr/lib/sa/sa2 -A 命令,将当天的汇总信息写入文件 /var/log/sa/saDD。Sadc将收集的数据写入一个二进制的文件中,文件名为:/var/log/sa/saDD, 其中DD为当天的日期。
上述为二进制文件,可以通过sar命令打开具体文件,如下所示:
也可以查看某文件制定时间段的监控数据,如下所示:
2. 通过systat工具自定义查看
- CPU 统计信息
sar –u [采样时间] [统计次数(不指定次数,默认持续统计)]
输出项说明:
CPU: all表示统计信息为所有cpu的平均值;
%user: 显示在用户级别运行的CPU总时间的百分比;
%nice: 显示在用户级别,用于nice操作,所占用CPU总时间的百分比;
%system: 在系统核心级别(kernel)运行所使用的CPU总是简单的百分比;
%iowait: 显示用于等待I/O操作占用CPU总时间的百分比;
%steal: 管理程序(hypervisor) 为另一个虚拟进程提供服务而等待虚拟CPU的百分比;
%idle:显示CPU空闲时间占用CPU总时间的百分比。
为了后续统计分析,可以将统计数据,定向到文件中,如Sar –u 10 >cpustat.txt。
- 内存统计信息
sar –r [采样时间] [统计次数(不指定次数,默认持续统计)]
主要输出项说明:
kbmemfree 可用的空闲内存数量,单位为 KB;
kbmemused 已使用的内存数量(不包含内核使用的内存),单位为 KB;
%memused 已使用内存的百分数;
kbbuffers 内核缓冲区(buffer)使用的内存数量,单位为 KB;
kbcached 内核高速缓存(cache)数据使用的内存数量,单位为 KB;
- 网络IO
sar –n DEV [采样时间] [统计次数(不指定次数,默认持续统计) |grep 网卡名称(不加grep 默认统计所有网卡)]
输出项说明:
IFACE 网络设备名;
rxpck/s 每秒接收的包总数;
txpck/s 每秒传输的包总数;
rxbyt/s 每秒接收的字节(byte)总数;
txbyt/s 每秒传输的字节(byte)总数;
rxcmp/s 每秒接收压缩包的总数;
txcmp/s 每秒传输压缩包的总数;
rxmcst/s 每秒接收的多播(multicast)包的总数;
- 磁盘IO
方法一:I/O传输总量与传输速度统计
Sar –b [取样间隔] [统计次数(不指定次数,默认持续统计)]
输出项说明:
tps 每秒钟物理设备的 I/O 传输总量;
rtps 每秒钟从物理设备读入的数据总量;
wtps 每秒钟向物理设备写入的数据总量;
bread/s 每秒钟从物理设备读入的数据量,单位为 块/s;
bwrtn/s 每秒钟向物理设备写入的数据量,单位为 块/s。
方法二:
iostat -d [-k/-m] [-x] [-t] [取样间隔] [统计次数(不指定时,默认持续统计)]
参数说明:
-d 仅显示磁盘统计信息;
-k 以KB为单位显示每秒的磁盘请求数;
-m 以MB为单位显示每秒的磁盘请求数;
-t 在输出数据时,打印搜集数据的时间。
-x 输出扩展信息。
输出项说明:
rrqm/s 将读入请求合并后,每秒发送到设备的读入请求数。
wrqm/s 将写入请求合并后,每秒发送到设备的写入请求数。
r/s 每秒发送到设备的读入请求数。
w/s 每秒发送到设备的写入请求数。
rsec/s 每秒从设备读入的扇区数。
wsec/s 每秒向设备写入的扇区数。
rkB/s 每秒从设备读入的数据量,单位为 KB/s。
wkB/s 每秒向设备写入的数据量,单位为 KB/s。
rMB/s 每秒从设备读入的数据量,单位为 MB/s。
wMB/s 每秒向设备写入的数据量,单位为 MB/s。
avgrq-sz 发送到设备的请求的平均大小,单位为扇区。
avgqu-sz 发送到设备的请求的平均队列长度。
await I/O请求平均执行时间。包括发送请求和执行的时间。单位为毫秒。
svctm 发送到设备的I/O请求的平均执行时间。单位为毫秒。
%util 在I/O请求发送到设备期间,占用CPU时间的百分比。用于显示设备的带宽利用率。当这个值接近100%时,表示设备带宽已经占满。
- 其他辅助测试的指标(举例平均负载及句柄信息)
进程对队列长度及平均负载状态信息
sar –q [取样时间] [统计次数(不指定时,默认持续统计)]
输出项说明:
runq-sz 运行队列的长度(等待运行的进程数);
plist-sz 进程列表中进程(processes)和线程(threads)的数量;
ldavg-1 最后1分钟的系统平均负载(System load average);
ldavg-5 过去5分钟的系统平均负载;
ldavg-15 过去15分钟的系统平均负载。
句柄信息
输出项说明:
dentunusd 目录高速缓存中未被使用的条目数量;
file-nr 当前系统文件句柄的使用数量
inode-nr 索引节点句柄的使用数量
pty-ny 使用的pty数量
二、累计统计的监控数据的提取与绘图
将上述长期累计统计的监控信息重定向到文件中,然后再编写python脚本提取自己关心的数据写入CSV, 然后利用excel绘图,以网络IO数据的整理为例进行说明。
监控重定向后的文件格式如下图所示:
如只关心rxkB/s的数据,则编写python脚本提取网卡em1的rxkB/s数据,然后将提取的数据写入CSV中。
通过excel打开csv文件
利excel绘图,这样网卡em1随时间变化的rxkB/s的数值便统计出来了,如下所示。
其他监控信息通过类似的方法提取绘图,然后根据分析的性能监控图表便可以进行结论辅助分析。
声 明
本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。
关于绿盟科技
北京神州绿盟信息安全科技股份有限公司(简称绿盟科技)成立于2000年4月,总部位于北京。在国内外设有30多个分支机构,为政府、运营商、金融、能源、互联网以及教育、医疗等行业用户,提供具有核心竞争力的安全产品及解决方案,帮助客户实现业务的安全顺畅运行。
基于多年的安全攻防研究,绿盟科技在网络及终端安全、互联网基础安全、合规及安全管理等领域,为客户提供入侵检测/防护、抗拒绝服务攻击、远程安全评估以及Web安全防护等产品以及专业安全服务。
北京神州绿盟信息安全科技股份有限公司于2014年1月29日起在深圳证券交易所创业板上市交易,股票简称:绿盟科技,股票代码:300369。
如果您需要了解更多内容,可以
加入QQ群:570982169
直接询问:010-68438880