首页 > 技术文章 > Linux 性能优化工具包 sysstat 以及 sysstat 服务

augusite 2019-04-29 16:12 原文

1. sysstat service

1.1. /etc/cron.d/sysstat

Linux 下的性能分析,少不了要使用 sysstat 工具包中的命令。同时 sysstat 服务会自动每个10分钟收集一次系统状态信息,并将它们存储到 /var/log/sa目录下。每天一个文件,文件名分别是sa01, sa02,... sa30..

[root@localhost sa]# pwd
/var/log/sa
[root@localhost sa]# ls
sa01  sa03  sa05  sa06  sa07  sa08  sa09  sa10  sa11  sa12  sa13  sa14  sa15  sa25  sa26  sa27  sa28  sa29  sa30  sar25

自动收集系统信息,是通过 /etc/cron.d/sysstat 来实现的:

[root@localhost sa]# cat /etc/cron.d/sysstat
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib/sa/sa1 1 1
# 0 * * * * root /usr/lib/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib/sa/sa2 -A

上面标示每个10分钟,运行一次 /usr/lib/sa/sa1 1 1, 该命令 man sa1:

sa1 - Collect and store binary data in the system activity daily data file.

SYNOPSIS:/usr/lib/sa/sa1 [ --boot | interval count ]

sa1 收集到的是 binary data. 所以 sa2 -A 负责将当天的二进制文件转换成文本文件。

sa2 - Write a daily report in the /var/log/sa directory

其中的收集信息的频率(10分钟一次)我们可以根据需要进行修改。

1.2. /etc/sysconfig/sysstat

/var/log/sa/目录下的文件保存时间等相关配置存在于文件 /etc/sysconfig/sysstat中:

 
[root@localhost ~]# cat /etc/sysconfig/sysstat
# sysstat-9.0.4 configuration file.

# How long to keep log files (in days).
# If value is greater than 28, then log files are kept in
# multiple directories, one for each month.
HISTORY=28

# Compress (using gzip or bzip2) sa and sar files older than (in days):
COMPRESSAFTER=31

# Parameters for the system activity data collector (see sadc manual page)
# which are used for the generation of log files.
SADC_OPTIONS="-S DISK"

# Compression program to use.
ZIP="bzip2"
 

其中的 HISTORY=28 表示最多保存28天的数据。保存时间,我们可以根据需要进行修改。

1.3. 确保 sysstat 服务启动:

[root@localhost ~]# chkconfig --level 35 sysstat on
[root@localhost ~]# chkconfig |grep sysstat
sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off

上面是 sysstat 服务运行的知识。下面是 sysstat 工具包中的命令行如何使用收集到的信息,来了解系统的运行情况。

2. sysstat 工具包中的命令

sysstat工具包中有很多的分析命令,常用的有:sar, iostat, mpstat(multi processor stat), pidstat, vmstat等等。

其中的sar命令尤其强大,它一个命令就能够收集系统CPU, 内存,磁盘,网络,进程切换,swap, 甚至文件inode,等个方面的信息。sar 的应用比较多,而且也比较复杂,数据更为精确。

2.1 sar 命令

 

-A:所有报告的总和

-b:显示I/O和传递速率的统计信息

-B:显示换页状态

-d:输出每一块磁盘的使用信息

-e:设置显示报告的结束时间

-f:从制定的文件读取报告

-i:设置状态信息刷新的间隔时间

-P:报告每个CPU的状态

-R:显示内存状态

–u:输出cpu使用情况和统计信息

–v:显示索引节点、文件和其他内核表的状态

-w:显示交换分区的状态

-x:显示给定进程的装

-r:报告内存利用率的统计信息

 

将统计结果保存在文件并从文件读取内容:

        #sar -u -o /tmp/1.txt 2 3 #保存之文件,保存后的文件是二进制的,无法使用vim和cat直接打开

        # sar -u -f /tmp/1.txt #从二进制文件读取

 

1)sar -u 查看CPU信息:

sar -u, sar -u ALL, sar -u 1 5, sar -u ALL 1 5

 
[root@localhost ~]# sar -u 1 2
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

11:02:27 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
11:02:28 AM     all      0.99      0.00      2.97      0.00      0.00     96.04
11:02:29 AM     all      0.00      0.00      3.03      0.00      0.00     96.97
Average:        all      0.50      0.00      3.00      0.00      0.00     96.50

输出项说明:

CPU:all 表示统计信息为所有 CPU 的平均值。

%user:显示在用户级别(application)运行使用 CPU 总时间的百分比。

%nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。

%system:在核心级别(kernel)运行所使用 CPU 总时间的百分比。

%iowait:显示用于等待I/O操作占用 CPU 总时间的百分比。

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

%idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。

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

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

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

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

如果要查看二进制文件test中的内容,需键入如下sar命令:

sar -u -f test

2)sar -r, sar -R 查看内存信息:

sar -r, sar -R, sar -r 1 5, sar -R 1 5

 
[root@localhost ~]# sar -r  1 2
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

11:05:31 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
11:05:32 AM    824392    206156     20.00     71556     74584     82316      3.96
11:05:33 AM    824392    206156     20.00     71556     74584     82316      3.96
Average:       824392    206156     20.00     71556     74584     82316      3.96
[root@localhost ~]# sar -R  1 2
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

11:05:56 AM   frmpg/s   bufpg/s   campg/s
11:05:57 AM    -11.11      0.00      0.00
11:05:58 AM      0.00      0.00      0.00
Average:        -5.56      0.00      0.00

输出项说明:

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

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

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

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

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

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

3)sar -S, sar -W 查看 swap:

sar -S, sar -S 1 5, sar -W, sar -W 1 5. sar -S 查看的是swap空间的使用情况,sar -W 是每秒发生的swap/page情况

复制代码
[root@localhost ~]# sar -S
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

09:43:28 AM       LINUX RESTART

09:50:02 AM kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
10:00:01 AM   1048572         0      0.00         0      0.00
10:10:02 AM   1048572         0      0.00         0      0.00
10:20:01 AM   1048572         0      0.00         0      0.00
10:30:01 AM   1048572         0      0.00         0      0.00
10:40:02 AM   1048572         0      0.00         0      0.00
10:50:01 AM   1048572         0      0.00         0      0.00
11:00:01 AM   1048572         0      0.00         0      0.00
Average:      1048572         0      0.00         0      0.00
[root@localhost ~]# sar -S 1 5
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

11:07:29 AM kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
11:07:30 AM   1048572         0      0.00         0      0.00
11:07:31 AM   1048572         0      0.00         0      0.00
11:07:32 AM   1048572         0      0.00         0      0.00
11:07:33 AM   1048572         0      0.00         0      0.00
11:07:34 AM   1048572         0      0.00         0      0.00
Average:      1048572         0      0.00         0      0.00
[root@localhost ~]# sar -W
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

09:43:28 AM       LINUX RESTART

09:50:02 AM  pswpin/s pswpout/s
10:00:01 AM      0.00      0.00
10:10:02 AM      0.00      0.00
10:20:01 AM      0.00      0.00
10:30:01 AM      0.00      0.00
10:40:02 AM      0.00      0.00
10:50:01 AM      0.00      0.00
11:00:01 AM      0.00      0.00
Average:         0.00      0.00
[root@localhost ~]# sar -W 1 5
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

11:09:51 AM  pswpin/s pswpout/s
11:09:52 AM      0.00      0.00
11:09:53 AM      0.00      0.00
11:09:54 AM      0.00      0.00
11:09:55 AM      0.00      0.00
11:09:56 AM      0.00      0.00
Average:         0.00      0.00
复制代码

4)sar -b, sar -B 查看磁盘IO:

sar -b, sar -b 1 5, sar -B, sar -B 1 5. sar -b 查看磁盘tps(iops);sar -B 主要查看每秒磁盘 page/ fault

复制代码
[root@localhost ~]# sar -b
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

09:43:28 AM       LINUX RESTART

09:50:02 AM       tps      rtps      wtps   bread/s   bwrtn/s
10:00:01 AM      0.01      0.00      0.01      0.00      0.11
10:10:02 AM      0.06      0.03      0.03      1.41      0.43
10:20:01 AM      0.01      0.00      0.01      0.00      0.11
10:30:01 AM      0.01      0.00      0.01      0.00      0.17
10:40:02 AM      0.16      0.10      0.06      4.84      0.89
10:50:01 AM     18.11     17.81      0.31    334.52     26.32
11:00:01 AM      0.11      0.09      0.02      5.12      0.34
11:10:01 AM      0.02      0.00      0.02      0.00      0.17
Average:         2.31      2.25      0.06     43.13      3.56
[root@localhost ~]# sar -b 1 5
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

11:12:58 AM       tps      rtps      wtps   bread/s   bwrtn/s
11:12:59 AM      0.00      0.00      0.00      0.00      0.00
11:13:00 AM      0.00      0.00      0.00      0.00      0.00
11:13:01 AM      0.00      0.00      0.00      0.00      0.00
11:13:02 AM      0.00      0.00      0.00      0.00      0.00
11:13:03 AM      0.00      0.00      0.00      0.00      0.00
Average:         0.00      0.00      0.00      0.00      0.00
[root@localhost ~]# sar -B
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

09:43:28 AM       LINUX RESTART

09:50:02 AM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
10:00:01 AM      0.00      0.05      3.29      0.00      0.86      0.00      0.00      0.00      0.00
10:10:02 AM      0.71      0.22     12.02      0.00      3.16      0.00      0.00      0.00      0.00
10:20:01 AM      0.00      0.05      3.43      0.00      0.85      0.00      0.00      0.00      0.00
10:30:01 AM      0.00      0.09      3.28      0.00      0.83      0.00      0.00      0.00      0.00
10:40:02 AM      2.42      0.44     59.48      0.02     14.86      0.00      0.00      0.00      0.00
10:50:01 AM    167.26     13.16   1580.24      0.09    336.45      0.00      0.00      0.00      0.00
11:00:01 AM      2.56      0.17     15.00      0.02      3.95      0.00      0.00      0.00      0.00
11:10:01 AM      0.00      0.09     25.18      0.00      9.43      0.00      0.00      0.00      0.00
Average:        21.57      1.78    212.26      0.02     46.20      0.00      0.00      0.00      0.00
[root@localhost ~]# sar -B 1 5
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

11:13:09 AM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
11:13:10 AM      0.00      0.00     45.45      0.00     59.60      0.00      0.00      0.00      0.00
11:13:11 AM      0.00      0.00     38.38      0.00     59.60      0.00      0.00      0.00      0.00
11:13:12 AM      0.00      0.00     30.30      0.00     59.60      0.00      0.00      0.00      0.00
11:13:13 AM      0.00      0.00     30.30      0.00     59.60      0.00      0.00      0.00      0.00
11:13:14 AM      0.00      0.00     30.00      0.00     59.00      0.00      0.00      0.00      0.00
Average:         0.00      0.00     34.88      0.00     59.48      0.00      0.00      0.00      0.00
复制代码

输出项说明:

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

 

输出项说明:

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

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

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

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

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

5)sar -d 查看磁盘IO活动:

复制代码
[root@localhost ~]# sar -d
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

09:43:28 AM       LINUX RESTART

09:50:02 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
10:00:01 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
10:00:01 AM    dev8-0      0.01      0.00      0.11     12.80      0.00      2.00      1.60      0.00
10:10:02 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
10:10:02 AM    dev8-0      0.06      1.41      0.43     29.62      0.00      5.86      5.30      0.03
10:20:01 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
10:20:01 AM    dev8-0      0.01      0.00      0.11     12.80      0.00      2.80      2.60      0.00
10:30:01 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
10:30:01 AM    dev8-0      0.01      0.00      0.17     14.86      0.00      3.29      2.14      0.00
10:40:02 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
10:40:02 AM    dev8-0      0.16      4.84      0.89     35.13      0.00      7.26      6.59      0.11
10:50:01 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
10:50:01 AM    dev8-0     18.11    334.52     26.32     19.92      0.05      3.15      2.98      5.40
11:00:01 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:00:01 AM    dev8-0      0.11      5.12      0.34     50.62      0.00     20.66     13.55      0.15
11:10:01 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:10:01 AM    dev8-0      0.02      0.00      0.17     11.56      0.00      1.67      1.56      0.00
Average:      dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:       dev8-0      2.31     43.13      3.56     20.25      0.01      3.29      3.08      0.71
[root@localhost ~]# sar -d 1 3
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

11:16:29 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
11:16:30 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:16:30 AM    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

11:16:30 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
11:16:31 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:16:31 AM    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

11:16:31 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
11:16:32 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:16:32 AM    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:          DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
Average:      dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:       dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
复制代码

其中:

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

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% 时,表示设备带宽已经占满。

6)sar -n { keyword [,...] | ALL } 查看网络:

Possible keywords are DEV, EDEV, NFS, NFSD, SOCK, IP, EIP, ICMP, EICMP, TCP,  ETCP,  UDP,  SOCK6,  IP6,  EIP6, ICMP6, EICMP6 and UDP6.

你想查看网络哪个方面的信息,就将 keyword 换成上面的那个选项。

sar -n DEV 查看网络设备上的数据包收发情况,sar -n EDEV 查看网络设备上发生的数据包收发错误的情况,sar -n DEV 1 5, sar -n EDEV 1 5.

复制代码
[root@localhost ~]# sar -n DEV 1 2
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

11:20:05 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
11:20:06 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:20:06 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:20:06 AM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00

11:20:06 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
11:20:07 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:20:07 AM      eth0      2.02      3.03      0.12      0.70      0.00      0.00      0.00
11:20:07 AM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00

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      1.01      1.52      0.06      0.35      0.00      0.00      0.00
Average:         eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00
[root@localhost ~]# sar -n EDEV 1 2
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

11:20:16 AM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s
11:20:17 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:20:17 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:20:17 AM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

11:20:17 AM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s
11:20:18 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:20:18 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:20:18 AM      eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:        IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s
Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
复制代码

sar -n TCP, sar -n TCP 1 5 查看TCP;sar -n ETCP 查看tcp错误; sar -n SOCK, sar -n SOCK 1 5 查看socket;

#sar -n选项使用6个不同的开关:DEV,EDEV,NFS,NFSD,SOCK,IP,EIP,ICMP,EICMP,TCP,ETCP,UDP,SOCK6,IP6,EIP6,ICMP6,EICMP6和UDP6 ,DEV显示网络接口信息,EDEV显示关于网络错误的统计数据,NFS统计活动的NFS客户端的信息,NFSD统计NFS服务器的信息,SOCK显示套接字信息,ALL显示所有5个开关。它们可以单独或者一起使用。 

        1.10.1:sar -n DEV 1 1: 每间隔1秒统计一次,总计统计1次,下面的average是在多次统计后的平均值

 

#IFACE 本地网卡接口的名称

#rxpck/s 每秒钟接受的数据包

#txpck/s 每秒钟发送的数据库

#rxKB/S 每秒钟接受的数据包大小,单位为KB

#txKB/S 每秒钟发送的数据包大小,单位为KB

#rxcmp/s 每秒钟接受的压缩数据包

#txcmp/s 每秒钟发送的压缩包

#rxmcst/s 每秒钟接收的多播数据包    

        1.10.2:sar -n EDEV  1 1  #统计网络设备通信失败信息:

#IFACE 网卡名称

#rxerr/s 每秒钟接收到的损坏的数据包

#txerr/s 每秒钟发送的数据包错误数

#coll/s 当发送数据包时候,每秒钟发生的冲撞(collisions)数,这个是在半双工模式下才有

#rxdrop/s 当由于缓冲区满的时候,网卡设备接收端每秒钟丢掉的网络包的数目

#txdrop/s 当由于缓冲区满的时候,网络设备发送端每秒钟丢掉的网络包的数目

#txcarr/s  当发送数据包的时候,每秒钟载波错误发生的次数

#rxfram   在接收数据包的时候,每秒钟发生的帧对其错误的次数

#rxfifo    在接收数据包的时候,每秒钟缓冲区溢出的错误发生的次数

#txfifo    在发生数据包 的时候,每秒钟缓冲区溢出的错误发生的次数

        1.10.3:sar -n SOCK 1 1  #统计socket连接信息

 

#totsck 当前被使用的socket总数

#tcpsck 当前正在被使用的TCP的socket总数

#udpsck  当前正在被使用的UDP的socket总数

#rawsck 当前正在被使用于RAW的skcket总数

#if-frag  当前的IP分片的数目

#tcp-tw TCP套接字中处于TIME-WAIT状态的连接数量

########如果你使用FULL关键字,相当于上述DEV、EDEV和SOCK三者的综合 

        1.10.4:sar -n TCP 1 3 #TCP连接的统计

 

#active/s 新的主动连接

#passive/s 新的被动连接

#iseg/s 接受的段

#oseg/s 输出的段

        1.10.5:sar -n 使用总结

-n DEV  网络接口统计信息。
-n EDEV  网络接口错误。
-n IP  IP数据报统计信息。
-n EIP  IP错误统计信息。
-n TCP  TCP统计信息。
-n ETCP  TCP错误统计信息。
-n SOCK  套接字使用。

7)sar -q 查看系统load负载:

复制代码
[root@localhost ~]# sar -q
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

09:43:28 AM       LINUX RESTART

09:50:02 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
10:00:01 AM         0        66      0.00      0.02      0.09
10:10:02 AM         0        67      0.00      0.00      0.03
10:20:01 AM         0        67      0.00      0.00      0.00
10:30:01 AM         0        67      0.00      0.00      0.00
10:40:02 AM         0        78      0.00      0.00      0.00
10:50:01 AM         0        76      0.00      0.16      0.14
11:00:01 AM         0        80      0.00      0.02      0.06
11:10:01 AM         0        80      0.00      0.00      0.00
11:20:01 AM         0        81      0.00      0.00      0.00
Average:            0        74      0.00      0.02      0.04
[root@localhost ~]# sar -q 1 3
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

11:25:44 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
11:25:45 AM         0        80      0.00      0.00      0.00
11:25:46 AM         0        80      0.00      0.00      0.00
11:25:47 AM         0        80      0.00      0.00      0.00
Average:            0        80      0.00      0.00      0.00
复制代码

runq-sz 表示在CPU上排队等待执行的任务;plist-sz系统所有任务。

输出项说明:

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

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

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

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

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

8)sar -w 每秒进程创建 和 进程切换:

复制代码
[root@localhost ~]# sar -w
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

09:43:28 AM       LINUX RESTART

09:50:02 AM    proc/s   cswch/s
10:00:01 AM      0.01     25.14
10:10:02 AM      0.04     25.58
10:20:01 AM      0.01     25.01
10:30:01 AM      0.01     25.40
10:40:02 AM      0.19     27.64
10:50:01 AM      4.02    120.10
11:00:01 AM      0.04     41.77
11:10:01 AM      0.09     38.55
11:20:01 AM      0.23     50.63
Average:         0.51     42.18
[root@localhost ~]# sar -w 1 4
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

11:28:07 AM    proc/s   cswch/s
11:28:08 AM      0.00     80.39
11:28:09 AM      0.00     90.82
11:28:10 AM      0.00     45.45
11:28:11 AM      0.00     60.00
Average:         0.00     69.17
复制代码

9)sar -W 每秒swap/page:

复制代码
[root@localhost ~]# sar -W
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

09:43:28 AM       LINUX RESTART

09:50:02 AM  pswpin/s pswpout/s
10:00:01 AM      0.00      0.00
10:10:02 AM      0.00      0.00
10:20:01 AM      0.00      0.00
10:30:01 AM      0.00      0.00
10:40:02 AM      0.00      0.00
10:50:01 AM      0.00      0.00
11:00:01 AM      0.00      0.00
11:10:01 AM      0.00      0.00
11:20:01 AM      0.00      0.00
Average:         0.00      0.00
[root@localhost ~]# sar -W 1 4
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

11:28:50 AM  pswpin/s pswpout/s
11:28:51 AM      0.00      0.00
11:28:52 AM      0.00      0.00
11:28:53 AM      0.00      0.00
11:28:54 AM      0.00      0.00
Average:         0.00      0.00
复制代码

输出项说明:

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

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

10)sar -v 查看文件inode使用,缓存情况:

复制代码
[root@localhost ~]# sar -v
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

09:43:28 AM       LINUX RESTART

09:50:02 AM dentunusd   file-nr  inode-nr    pty-nr
10:00:01 AM      1963       160      7250         0
10:10:02 AM      1988       160      7266         0
10:20:01 AM      1988       160      7266         0
10:30:01 AM      1988       160      7266         0
10:40:02 AM      2126       480      7418         5
10:50:01 AM     40677       448     43933         5
11:00:01 AM     40772       480     43952         5
11:10:01 AM     40894       480     43952         5
11:20:01 AM     41281       480     43953         5
Average:        19297       334     23584         3
[root@localhost ~]# sar -v 1 3
Linux 2.6.32-504.el6.i686 (localhost.localdomain)       10/20/2015      _i686_  (1 CPU)

11:29:49 AM dentunusd   file-nr  inode-nr    pty-nr
11:29:50 AM     41488       480     43945         5
11:29:51 AM     41488       480     43945         5
11:29:52 AM     41488       480     43945         5
Average:        41488       480     43945         5
复制代码

输出项说明:

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

file-nr:文件句柄(file handle)的使用数量

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

pty-nr:使用的pty数量

####这里面的索引和文件句柄值不是ulimit -a查看到的值,而是sysctl.conf里面定义的和内核相关的值, max-file表示系统级别的能够打开的文件句柄的数量, 而ulimit -n控制进程级别能够打开的文件句柄的数量,可以使用sysctl  -a | grep inode和sysctl  -a | grep file查看,具体含义如下:

file-max中指定了系统范围内所有进程可打开的文件句柄的数量限制(系统级别, kernel-level)。 The value in file-max denotes the maximum number of file handles that the Linux kernel will allocate)。当收到"Too many open files in system"这样的错误消息时, 就应该曾加这个值了。
    # cat /proc/sys/fs/file-max
    4096
    # echo 100000 > /proc/sys/fs/file-max
    或者
    # echo ""fs.file-max=65535" >> /etc/sysctl.conf
    # sysctl -p
file-nr 可以查看系统中当前打开的文件句柄的数量。 他里面包括3个数字: 第一个表示已经分配了的文件描述符数量, 第二个表示空闲的文件句柄数量, 第三个表示能够打开文件句柄的最大值(跟file-max一致)。  内核会动态的分配文件句柄, 但是不会再次释放他们(这个可能不适应最新的内核了, 在我的file-nr中看到第二列一直为0 第一列有增有减)	
man bash 找到说明ulimit的那一节:提供对shell及其启动的进程的可用资源(包括文件句柄, 进程数量, core文件大小等)的控制。 这是进程级别的, 也就是说系统中某个session及其启动的每个进程能打开多少个文件描述符, fork出多少个子进程等... 当达到上限时, 会报错"Too many open files"或者遇上Socket/File: Cant open so many files

 

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

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

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

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

 

常用命令汇总,因版本和平台不同,有部分命令可能没有或显示结果不一致:

 

 

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

 

2.2 iostat 命令

注意查看IO和CPU负载情况

参见:http://www.cnblogs.com/digdeep/p/4863502.html 和 man 手册

2.3 mpstat 命令

注意查看多核CPU情况

参见:http://www.cnblogs.com/digdeep/p/4847484.html 和 man 手册

2.4 pidstat命令

注意查看进程情况

参见:http://www.cnblogs.com/digdeep/p/4847484.html 和 man 手册

推荐阅读