sar命令使用说明书(sar工具在监控性能方向的实践)

1、背景介绍

任何软件在正式发布前,都会对相对应的接口进行性能压测,以确保软件在高强度的压力下,能够满足用户的操作,避免系统卡死等异常的现象。特别是在大促进行之前,性能测试及调优就显得格外重要。

以某系统正式环境为例,该系统压测接口透传,不涉及数据库,机器分布:

涉及一台nginx和一台Jboss服务器。

针对该系统,可以通过linux系统自带的工具包,进行监控,查看性能指标。

测试环境服务器资源

Nuginx:

Cpu/内存/磁盘:2C/2G/0G

Jboss:

Cpu/内存/磁盘:4C/4G/0G

2、sysstat工具简介

sysstat是 Linux系统中的常用工具包,一般系统会自带,如果没有安装,需要自行安装该工具包,它可以用来监控网络状况、cpu、内存情况。这些包括SAR、SADF、MPSTAT、IOSTAT、TAPESTAT、PIDSTAT、CIFSIOSTAT和SA工具。

各工具的作用如下:

iostat - 提供CPU统计,存储I/O统计(磁盘设备,分区及网络文件系统);

mpstat - 提供单个或组合CPU相关统计;

sar是 sysstat 中的核心工具。

为了实现 sar的累计统计,系统必须周期地记录当时的信息,这是通过调用/usr/lib/sa/中的三个工具实现的:

·sa1:收集并存储每天系统动态信息到一个二进制的文件中,用作 sadc的前端程序;

·sa2:收集每天的系统活跃信息写入总结性的报告,用作 sar的前端程序;

·sadc:系统动态数据收集工具,收集的数据被写入一个二进制的文件中,它被用作 sar工具的后端。

3、SAR命令介绍

在使用 Linux系统时,常常会遇到各种各样的问题,比如系统容易死机或者运行速度突然变慢,这时我们常常猜测:是否硬盘空间不足,是否内存不足,是否 I/O出现瓶颈,还是系统的核心参数出了问题?这时,我们应该考虑使用 sar工具对系统做一个全面了解,分析系统的负载状况。

sar(System ActivityReporter)是系统活动情况报告的缩写。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据;取样数据和分析的结果都可以存入文件,所需的负载很小。 sar是目前 Linux上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。为了提供不同的信息,sar提供了丰富的选项、因此使用较为复杂。

4、Sar工具监控

在日常使用中,通常SAR命令格式为:# sar –help

sar命令使用说明书(sar工具在监控性能方向的实践)(1)

以下列表为常用的选项说明:

sar命令使用说明书(sar工具在监控性能方向的实践)(2)

4.1 网络服务

每1秒采样一次,连续采样2次,观察网络服务情况,命令如下:

sar -n DEV 1 2

sar命令使用说明书(sar工具在监控性能方向的实践)(3)

我们通过MOBAXterm工具远程服务器,在压测执行过程中,查看服务器的cpu等性能信息。

IFACE:就是网络设备的名称;

rxpck/s:每秒钟接收到的包数目;

txpck/s:每秒钟发送出去的包数目;

rxbyt/s:每秒钟接收到的字节数;

txbyt/s:每秒钟发送出去的字节数;

rxcmp/s:每秒钟接收到的压缩包数目;

txcmp/s:每秒钟发送出去的压缩包数目;

txmcst/s:每秒钟接收到的多播包的包数目。

rxbyt/s:1296.46 txbyt/s:1177.78

4.2 cpu监控

查看CPU信息(型号)

# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

cpu的个数为4。

(1)每1秒采样一次,连续采样1次,观察CPU 的使用情况,命令如下:

sar -P ALL 1 1

sar命令使用说明书(sar工具在监控性能方向的实践)(4)

#%user #用户空间的CPU使用;

#%nice 改变过优先级的进程的CPU使用率;

#%system 内核空间的CPU使用率;

#%iowait CPU等待IO的百分比;

#%steal 虚拟机的虚拟机CPU使用的CPU;

#%idle 空闲的CPU;

#在以上的显示当中,主要看%iowait和%idle,%iowait过高表示存在I/O瓶颈,即磁盘IO无法满足业务需求,如果%idle过低表示CPU使用率比较严重,需要结合内存使用等情况判断CPU是否瓶颈。

如图展示,接口调用过程中,用户占用cpu8%,内核占用1%,空闲90%, 磁盘未占用。执行过程中,未出现cpu突增或突降的情况。表明该接口较稳定。

每10秒采样一次,连续采样3次,观察CPU 的使用情况,并将采样结果以二进制形式存入当前目录下的文件test中,需键入如下命令:

sar -u -o test 10 3

sar命令使用说明书(sar工具在监控性能方向的实践)(5)

%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。

根据监控情况,如出现下列情况,需要考虑是否性能异常。

1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈;

2. 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量;

3. 若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU ;

按照目前的场景,未出现异常,cpu运行稳定。

inode、文件和其他内核表监控,

每10秒采样一次,连续采样3次,观察核心表的状态,需键入如下命令:

sar -v 10 3

sar命令使用说明书(sar工具在监控性能方向的实践)(6)

dentunusd:目录高速缓存中未被使用的条目数量;

file-nr:文件句柄(file handle)的使用数量(在文件I/O中,要从一个文件读取数据,应用程序首先要调用操作系统函数并传送文件名,并选一个到该文件的路径来打开文件。该函数取回一个顺序号,即文件句柄(file handle),该文件句柄对于打开的文件是唯一的识别依据。要从文件中读取一块数据,应用程序需要调用函数ReadFile,并将文件句柄在内存中的地址和要拷贝的字节数传送给操作系统。当完成任务后,再通过调用系统函数来关闭该文件。);

inode-nr:索引节点句柄(inode handle)的使用数量;

pty-nr:使用的pty数量(pty(虚拟终端):我们远程telnet到主机或使用xterm时的个终端交互,这就是虚拟终端pty(pseudo-tty);

该指标便于后期问题定位和分析。

4.3 内存和交换空间监控(-r)

sar -r 5 5

每5秒采样一次,连续采样5次,监控内存分页:

sar命令使用说明书(sar工具在监控性能方向的实践)(7)

kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间;.

kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间;

%memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比.;

kbbuffers和kbcached:这两个值就是free命令中的buffer和cache;

kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM swap);

%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比。

4.4 内存分页监控

每1秒采样一次,连续采样10次,监控内存分页:

sar -B 1 10

sar命令使用说明书(sar工具在监控性能方向的实践)(8)

其中

pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB);

pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB);

fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major minor);

majflt/s:每秒钟产生的主缺页数.;

pgfree/s:每秒被放入空闲队列中的页个数;

pgscank/s:每秒被kswapd扫描的页个数;

pgscand/s:每秒直接被扫描的页个数;

pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数;

%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank pgscand)的百分比;

此信息反应内存分页情况。情况展示信息正常,3秒间隔一次。

4.5 I/O和传送速率监控(-b)

sar -b 1 10

每1秒采样一次,连续采样10次,报告缓冲区的使用情况:

sar命令使用说明书(sar工具在监控性能方向的实践)(9)

tps:每秒钟物理设备的 I/O 传输总量;

rtps:每秒钟从物理设备读入的数据总量;

wtps:每秒钟向物理设备写入的数据总量;

bread/s:每秒钟从物理设备读入的数据量,单位为 块/s;

bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s;

场景展示为写入操作,未进行读入操作。平均2秒间隔一次。

4.6 进程队列长度和平均负载状态监控

sar -q 1 10

每1秒采样一次,连续采样10次,监控进程队列长度和平均负载状态

sar命令使用说明书(sar工具在监控性能方向的实践)(10)

runq-sz:运行队列的长度(等待运行的进程数);

plist-sz:进程列表中进程(processes)和线程(threads)的数量;

ldavg-1:最后1分钟的系统平均负载(System load average);

ldavg-5:过去5分钟的系统平均负载;

ldavg-15:过去15分钟的系统平均负载;

指标平稳,无异常。

4.7 系统交换活动信息监控

sar -W 1 10

每1秒采样一次,连续采样10次,监控系统交换活动信息。

sar命令使用说明书(sar工具在监控性能方向的实践)(11)

pswpin/s:每秒系统换入的交换页面(swap page)数量;

pswpout/s:每秒系统换出的交换页面(swap page)数量;

无状态信息展示。

4.8 设备使用情况监控(-d)

# sar -d 5 2

每5秒采样一次,连续采样2次,报告设备使用情况:

sar命令使用说明书(sar工具在监控性能方向的实践)(12)

tps:每秒从物理磁盘I/O的次数.多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的;

rd_sec/s:每秒读扇区的次数;

wr_sec/s:每秒写扇区的次数;

avgrq-sz:平均每次设备I/O操作的数据大小(扇区);

avgqu-sz:磁盘请求队列的平均长度;

await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒=1000毫秒);

svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间;

%util:I/O请求占CPU的百分比,比率越大,说明越饱和。

1. avgqu-sz 的值较低时,设备的利用率较高;

2. 当%util的值接近 1% 时,表示设备带宽已经占满。

4.9 sar日志保存(-o)

使用-o选项,我们可以把sar统计信息保存到一个指定的文件,对于保存的日志,我们可以使用-f选项读取:

linux:~ # sar -n DEV 1 10 -o sar.out

sar命令使用说明书(sar工具在监控性能方向的实践)(13)

sar命令使用说明书(sar工具在监控性能方向的实践)(14)

linux:~ # sar -d 1 10 -f sar.out

sar命令使用说明书(sar工具在监控性能方向的实践)(15)

相比将结果重定向到一个文件,使用-o选项,可以保存更多的系统资源信息。

4.10 sar监控非实时数据

sar也可以监控非实时数据,通过cron周期的运行到指定目录下。

例如:我们想查看本月27日,从0点到23点的内存资源。

sa27就是本月27日,指定具体的时间可以通过-s(start)和-e(end)来指定。

sar -f /var/log/sa/sa27 -s 00:00:00 -e 23:00:00 –r

要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来。

怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看;

怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看;

怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看。

5、与zabbix监控工具对比图表结果

5.1 zabbix工具介绍

sar命令使用说明书(sar工具在监控性能方向的实践)(16)

5.1.1 Zabbix的部署架构

Zabbix分为三种部署架构,这三种架构为:

分布式部署架构

Server-Proxy,Server-node两种分布式部署架构,支持大规模的环境监控。

server-proxy-client架构

其中proxy是server、client之间沟通的一个桥梁,proxy本身没有前端,而且其本身并不存放数据,只是将agentd发来的数据暂时存放,而后再提交给server 。该架构经常是和master-node-client架构做比较的架构 ,一般适用于跨机房、跨网络的中型网络架构的监控。

master-node-client架构

该架构是zabbix最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境 。每个node同时也是一个server端,node下面可以接proxy,也可以直接接client 。node有自已的配置文件和数据库,其要做的是将配置信息和监控数据向master同步,master的故障或损坏对node其下架构的完整性。

sar命令使用说明书(sar工具在监控性能方向的实践)(17)

5.1.2 主动/被动模式监控

Zabbix通过线图,饼图,柱状图,区域图等展现收集的数据, 根据用户角色设置不同的访问权限进行查看。

5.2 系统资源监控

sar监控

通过shell脚本查看cpu执行情况

代码为:

sar命令使用说明书(sar工具在监控性能方向的实践)(18)

存放于var/log/sa文件夹里test.sh

执行:sh test.sh

sar命令使用说明书(sar工具在监控性能方向的实践)(19)

内存使用量memery usage:32.0318

Cpu:8.27

磁盘tps:5.00

交换页数swap pages number:0

执行sar -P ALL 1 3

sar命令使用说明书(sar工具在监控性能方向的实践)(20)

%iowait未出现占用过高,%idle未出现过低的情况,表明该接口调用占用cpu为8%。

sar -n DEV 1 100(查看网络服务,每秒一次,共100次)

sar命令使用说明书(sar工具在监控性能方向的实践)(21)

Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

Average: eth0 1256.40 1192.77 362.54 1833.41 0.00 0.00 0.00

rxpck/s:每秒钟接收到的包数目 1256.40

txpck/s:每秒钟发送出去的包数目 1192.77

rxbyt/s:每秒钟接收到的字节数 (rxkB/s换成字节数)371240.96字节

txbyt/s:每秒钟发送出去的字节数(rxkB/s换成字节数)1877411.84字节

sar -b 60 10

sar命令使用说明书(sar工具在监控性能方向的实践)(22)

zabbix监控(每60秒采样一次)

cpu百分比

sar命令使用说明书(sar工具在监控性能方向的实践)(23)

内存使用率

sar命令使用说明书(sar工具在监控性能方向的实践)(24)

系统负载

sar命令使用说明书(sar工具在监控性能方向的实践)(25)

IO磁盘

sar命令使用说明书(sar工具在监控性能方向的实践)(26)

网络

sar命令使用说明书(sar工具在监控性能方向的实践)(27)

分区空间百分比:

sar命令使用说明书(sar工具在监控性能方向的实践)(28)

6、总结

在项目中大家可以根据实际情况灵活选择监控工具进行监控,zabbix在总体监控上具有很好的实用性,其原理也是每60秒收集服务器数据指标,而linux自带的监控工具,针对服务器的具体指标具有很好的定位作用。建议两种工具在具体的性能监控过程中可以结合使用。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页