sar命令详解

Posted 上单carrry

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sar命令详解相关的知识,希望对你有一定的参考价值。

文章目录

前言

和sar比起来,其他Linux命令都是渣

Sar是一个Linux下的监控工具,一直站在鄙视链的顶端。但是往往因繁多的参数,让人望而生畏,不知道怎么使用。然而这么强大命令并非是无章可循,只要我们找到合适的切入点来分析这个工具,就会发现实际上是非常简单的。

一、概述

格式

sar命令很简单,它的参数主要分为四部分。其中,第二部分和第三、四部分,是可选的,也就是说,最终要的参数,就剩下一个,那就是选项。不带选项默认是-u。
1.选项,也就是我们要获取的是哪个类型的指标数据,这里的-n,代表的是监控一些网络信息
2.类型参数,有的类型带有参数,有的没有。这里的DEV,代表的是监控网卡信息
3.时间间隔,表示多少秒采样一次数据,这里的1就是1秒
4.次数,表示采样的次数。比如时间间隔是3,采样次数是4,那么sar命令将会阻塞12秒钟
Sar的参数众多,想要一个参数一个参数的记忆,不免会耗费大量时间。所以我们就需要一个切入点,讨论监控工具,不外乎就是监控系统资源,那么自然也就是磁盘、cpu、网络、内存、IO等。

默认监控: sar 1 1     //  CPU和IOWAIT统计状态 
(1) sar -b 1 1        // IO传送速率
(2) sar -B 1 1        // 页交换速率
(3) sar -c 1 1        // 进程创建的速率
(4) sar -d 1 1        // 块设备的活跃信息
(5) sar -n DEV 1 1    // 网路设备的状态信息
(6) sar -n SOCK 1 1   // SOCK的使用情况
(7) sar -n ALL 1 1    // 所有的网络状态信息
(8) sar -P ALL 1 1    // 每颗CPU的使用状态信息和IOWAIT统计状态 
(9) sar -q 1 1        // 队列的长度(等待运行的进程数)和负载的状态
(10) sar -r 1 1      // 内存和swap空间使用情况
(11) sar -R 1 1       // 内存的统计信息(内存页的分配和释放、系统每秒作为BUFFER使用内存页、每秒被cache到的内存页)
(12) sar -u 1 1       // CPU的使用情况和IOWAIT信息(同默认监控)
(13) sar -v 1 1       // inode, file and other kernel tablesd的状态信息
(14) sar -w 1 1       // 每秒上下文交换的数目
(15) sar -W 1 1       // SWAP交换的统计信息(监控状态同iostat 的si so)
(16) sar -x 2906 1 1  // 显示指定进程(2906)的统计信息,信息包括:进程造成的错误、用户级和系统级用户CPU的占用情况、运行在哪颗CPU上
(17) sar -y 1 1       // TTY设备的活动状态
(18) 将结果输出到文件(-o)和读取记录信息(-f)
(19) sar -h           // 查看帮助

二、CPU信息
sar -u 1 3 或 sar 1 3 (1:每隔一秒刷新一次,3:刷新3次)

也可以使用-p查看全天的


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

进程长度和CPU平均负载状态监控
sar -q 1 3 (1:每隔一秒刷新一次,3:刷新3次)

二、内存监控

sar -r 1 3 (1:每隔一秒刷新一次,3:刷3次)


sar -W 1 3

三、I/O和传送速率监控与磁盘使用情况

Sar的I/O和磁盘使用情况是有点重合的
sar -b 1 3 (1:每隔一秒刷新一次,3:刷新3次)


sar -d 1 3 (1:每隔一秒刷新一次,3:刷新3次)

sar -d 1 3 -p(1:每隔一秒刷新一次,3:刷新3次)

参数-p可以打印出sda,hdc等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0

  1. avgqu-sz 的值较低时,设备的利用率较高。
  2. %util I/O请求占用的CPU百分比,值越高,说明I/O越慢。

四、网络宽带监控

sar -n DEV 1 3
sar命令使用-n选项可以汇报网络相关信息,可用的参数包括:DEV、EDEV、SOCK和FULL。

1.IFACE:就是网络设备的名称;
2.rxpck/s:每秒钟接收到的包数目
3.txpck/s:每秒钟发送出去的包数目
4.rxbyt/s:每秒钟接收到的字节数
5.txbyt/s:每秒钟发送出去的字节数
6.rxcmp/s:每秒钟接收到的压缩包数目
7.txcmp/s:每秒钟发送出去的压缩包数目
8.txmcst/s:每秒钟接收到的多播包的包数目

查看网络信息的参数还有很多,就不一一举例,毕竟大多数时候我们只和DEV打交道,这边我就把它举出来了。
1.DEV 网卡
2.EDEV 网卡 (错误)
3.NFS NFS 客户端
4.NFSD NFS 服务器
5.SOCK Sockets (套接字) (v4)
6.IP IP 流 (v4)
7.EIP IP 流 (v4) (错误)
8.ICMP ICMP 流 (v4)
9.EICMP ICMP 流 (v4) (错误)
10.TCP TCP 流 (v4)
11.ETCP TCP 流 (v4) (错误)
12.UDP UDP 流 (v4)
13.SOCK6 Sockets (套接字) (v6)
14.IP6 IP 流 (v6)
15.EIP6 IP 流 (v6) (错误)
16.ICMP6 ICMP 流 (v6)
17.EICMP6 ICMP 流 (v6) (错误)
18.UDP6 UDP 流 (v6)

五、一些可能会用到的选项

将结果输出到文件(-o)和读取记录信息(-f)

-f可以读取二级制存储的数据文件,所以我们也可以用它来读取之前的日志文件中的系统数据

监控indo、文件和其他内核监控
sar -v 1 3

dentunusd:目录高速缓存中未被使用的条目数量
file-nr:文件句柄(file handle)的使用数量
inode-nr:索引节点句柄(inode handle)的使用数量
pty-nr:使用的pty数量

内存分页监控
sar -B 1 3

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)的百分比

要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来
怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看
怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看
怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看

六、压力测试实验

测试cpu占用率
测试前数据

这里我们用stess命令测试

这里可以看到我们的cpu空闲时间已经没有了

测试内存占用率

我们依旧是使用stress命令测试
stress --vm 2 --vm-bytes 1G --vm-hang 100 --timeout 100s
开启2个进程分配内存,每次分配1GB内存,保持100秒后释放,100秒后退出。


测试I/O与传输速率与磁盘使用情况

依旧是stress命令测试

我们用stress命令模拟写入数据,可以看到此时的IO总数和写入速率

也可以用-d -p看的更加全面


检测网络流量
这里我们可以用ab命令来测试

使用ab命令模拟1000个用户访问5000次的数据

可以看到我们的接受和发送的数据都非常的大

总结

当然,sar命令虽然功能强大,在很多方面方面我们都可以使用sar来查询到我们需要的数据,但不是说我们就需用sar就可以了,对于系统的监控优化命令,当然是越多越好,很多时候我还是习惯使用top、free这些命令,从来没有无敌的工具,真正厉害的是灵活运用工具的我们。

以上是关于sar命令详解的主要内容,如果未能解决你的问题,请参考以下文章

Linux sar 命令详解

linux下监控工具sar命令详解

linux sar命令详解

linux sar命令详解

[转帖]Linux系列之SAR命令使用详解

Linux日常运维管理技巧: w命令-查看系统负载vmstat命令top命令sar命令