• Linux 性能优化工具包 sysstat 以及 sysstat 服务


    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 手册

  • 相关阅读:
    低情商大神的思维,高情商的你会懂么?为什么非常多计算机老师都是坏脾气?为什么提问没人回答?为什么要通过网络自主学习?
    Add Binary
    Codeforces Round #252 (Div. 2) B. Valera and Fruits(模拟)
    cocos2d-x项目101次相遇: Scenes , Director, Layers, Sprites
    Android应用性能优化系列视图篇——隐藏在资源图片中的内存杀手
    Android屏幕信息获取
    android 比较靠谱的图片压缩
    Android 图片压缩,基于比例和质量压缩
    android Bitmap类方法属性 详细说明
    Android入门——Bitmap和BitmapFactory
  • 原文地址:https://www.cnblogs.com/augusite/p/10790998.html
Copyright © 2020-2023  润新知