七周一次课(3月19日)
10.1 使用w查看系统负载
10.2 vmstat命令
10.3 top命令
10.4 sar命令
10.5 nload命令 



10.1 使用w查看系统负载


介绍 

10.1-10.5 w查看系统负载  vmstat , top, sar, nload_vmstat


W命令

[root@centos7 sed]# w
 14:22:44 up  4:29,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.189.1    09:53    4.00s  0.59s  0.02s w

第一段内容分别是 

系统时间,登录时长,登录用户(登录用户信息在第二行),

第二段

登录用户信息,

TTY如果是网络登录,会用pts/0显示 。如果是本机登录,则会用tty1显示。


load average: 0.00, 0.01, 0.05,此项是关键,系统负载。

负载三段数值0.00, 0.01, 0.05,对应的分别是1分钟,5分钟,15分钟的负载值。

负载值的大小取决于CPU。数值表示单位时间段内使用CPU的活动的进程有多少个,是一个平均值。


查看cpu信息

[root@centos7 sed]#  cat /proc/cpuinfo 

10.1-10.5 w查看系统负载  vmstat , top, sar, nload_vmstat_02

负载值最理想的值是1(processor为0的情况下).

第一段负载值是最关键的,最能体现到系统负载情况。

LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.189.1    09:53    4.00s  0.59s  0.02s w


10.2 vmstat命令


10.1-10.5 w查看系统负载  vmstat , top, sar, nload_vmstat_03


当负载值大于逻辑CPU核数,此时表示CPU不够用了。


#vmstat 命令监控系统的状态

[root@centos7 sed]# vmstat 
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 739100   2076 140788    0    0     6     1   45   54  0  0 100  0  0


用法

#vmstat 1 动态显示进程情况,每一秒输出一次。直到按ctrl+c结束

#vmstat 1 5 动态显示进程,每一秒显示一次,只显示5次,自动结束。


vmstat只需要关注

  • r run 表示有多少个进程处于run状态,运行或等待CPU时间片的进程数。 假如系统有1个CPU,但是有10个进程想使用这个CPU,那么10个当中只有一个进程能使用此CPU,其他进程都需要排队,在排队的进程就是处于run状态了。所以r为2的意思是有2个进程在排队。此过程会进行循环。

  • b block 此进程被CPU以外的资源(硬盘、网络、内存、I/O)阻断了。b值表示有多少个进程在等待。

  • swapd 当物理内存使用不足的情况话,系统会把一部分空间拿出来,临时放到swap空间上去。

  • 如果此数值不稳定,表示swap分区和内存在频繁交换数据,这种情况就是内存不够。

  • si 与swpd值有关联。有多少kb的数据从swap写入到内存中。i=in 进入到内存去。 

  • so 与swpd值有关联。有多少kb的数据从内存里出来的。o=out 从内存里出来的。 

  • 磁盘

  • bi 从磁盘读取数据的量。进入到内存里去。读的数据量。

  • bo 从磁盘写入数据的量。写的数据量

  • us 显示用户下所花费CPU的时间百分比。数值一般不会超过100.长时间大于50,说明系统资源不够。

  • sy 显示系统花费CPU的时间百分比。

  • id IDLE,空闲。表示CPU处于空闲状态的时间百分比。

  • wa 表示I/O等待所占用CPU的时间百分比。

  • us+sy+id+wa=100


总结:

#vmstat命令可以判断出系统的瓶颈在哪儿。CPU不够、还是内存不够,或者是磁盘不够大。



10.3 top命令


10.1-10.5 w查看系统负载  vmstat , top, sar, nload_vmstat_04


#top 

10.1-10.5 w查看系统负载  vmstat , top, sar, nload_top_05


top - 16:03:57 up 44 days,  1:04,  1 user,  load average: 0.02, 0.07, 0.05
Tasks: 157 total,   1 running, 156 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.0 id,  0.4 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8073628 total,  2022424 free,  1375452 used,  4675752 buff/cache
KiB Swap:  8388604 total,  8388604 free,        0 used.  5828776 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
16162 root      20   0 3199820 107396  13384 S   1.3  1.3  76:05.84 java
 7557 root      20   0       0      0      0 S   1.0  0.0   0:06.83 kworker/0:0
16125 root      20   0 3064644 103568  13368 S   1.0  1.3  74:46.33 java
 5454 root      20   0  123660   5028   1236 S   0.3  0.1   1:23.89 php-fpm
 7653 root      20   0  157760   2224   1516 R   0.3  0.0   0:00.07 top
    1 root      20   0   51632   3688   2312 S   0.0  0.0   0:48.16 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:01.87 kthreadd
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.91 ksoftirqd/0
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
    8 root      rt   0       0      0      0 S   0.0  0.0   0:00.38 migration/0
    9 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
   10 root      20   0       0      0      0 S   0.0  0.0   1:42.14 rcu_sched
   11 root      rt   0       0      0      0 S   0.0  0.0   1:34.40 watchdog/0
   12 root      rt   0       0      0      0 S   0.0  0.0   0:13.22 watchdog/1
   13 root      rt   0       0      0      0 S   0.0  0.0   0:00.59 migration/1
   14 root      20   0       0      0      0 S   0.0  0.0   0:03.26 ksoftirqd/1
   16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H
   17 root      20   0       0      0      0 S   0.0  0.0   0:26.33 kworker/u34:0
   18 root      rt   0       0      0      0 S   0.0  0.0   0:12.09 watchdog/2
   19 root      rt   0       0      0      0 S   0.0  0.0   0:00.64 migration/2
   20 root      20   0       0      0      0 S   0.0  0.0   0:00.75 ksoftirqd/2
   22 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/2:0H
   23 root      rt   0       0      0      0 S   0.0  0.0   0:13.05 watchdog/3
   24 root      rt   0       0      0      0 S   0.0  0.0   0:00.69 migration/3
   25 root      20   0       0      0      0 S   0.0  0.0   0:00.61 ksoftirqd/3
   27 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/3:0H
   30 root      20   0       0      0      0 S   0.0  0.0   0:14.96 kdevtmpfs
   31 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 netns
   32 root      20   0       0      0      0 S   0.0  0.0   0:01.67 khungtaskd
   33 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 writeback
   34 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kintegrityd
   35 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 bioset

介绍tasks

  • total 总共

  • running 相当于vmstat的r

  • sleeping 休眠,暂时休息的意思。

  • stopped已停止

  • zombie僵尸进程


关注点 

us 60%以上会对CPU比较伤


物理内存使用情况

KiB Mem :  1008152 total,   738396 free,   126572 used,   143184 buff/cache 

交换分区使用情况

KiB Swap:  2097148 total,  2097148 free,        0 used.   719984 avail Mem

用top重点查看的还是下面的进程使用系统资源的详细状况,其中需要%CPU、%MEM和COMMAND这几项所代表的意义。RES这一项为进程所占的内存大小,而%MEM这一项为使用内存的百分比.

在top状态下,按shift+m键可以按照内存使用大小排序,切换回CPU排序,按P。按数字1可以列出所有核CPU的使用状态,按q键可以退出top。

默认情况下,是按%CPU大小排序,由高到底。

%CPU CPU使用率,

%MEM 指内存,

RES 物理内存大小,单位k。在计算机计算容量时 系统往往不会精准至1024,往往都是以1000来计算。


q退出,

#top -c

可以查看具体命令,全局路径,详细

10.1-10.5 w查看系统负载  vmstat , top, sar, nload_vmstat_06

#top -bn1

静态显示所有页面,适用于写脚本。

#kill+pid

能杀死进程



top -bn1静态快照

按数字1显示所有CPU核心的资源使用

top -c 更加详细的command显示



10.4 sar命令


10.1-10.5 w查看系统负载  vmstat , top, sar, nload_日常运维_07


sar命令很强大,它可以监控系统几乎所有资源的状态,比如平均负载、网卡流量、磁盘状态、内存使用等。与其他系统状态监控工具不同,它可以打印历史信息,可以显示当天从零点开始到当前时刻的系统状态信息。


安装sar命令

yum install -y  sysstat

使用#sar命令 最好加选项


查看网卡流量

#sar -n DEV 1 5

一秒钟输出一次,一共输出五次

[root@centos7 ~]# sar -n DEV 1 5

10.1-10.5 w查看系统负载  vmstat , top, sar, nload_vmstat_08

举例

17时57分15秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
17时57分16秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17时57分16秒     ens33      1.02      1.02      0.06      0.19      0.00      0.00      0.00


第一列时间

第二列IFACE 设备

第三列rxpck/s,每秒进入收取的包的数量。r receive

第四列txpck/s,每秒发送出去的包的数量。t transfor

第五rxkB/s,每秒收取的数据量,单位kb

第六txkB/s,每秒传送的数据量,单位kb


关注

rxpck/s 如果大于10000,需要关注了,有可能被***了。

rxkB/s如果大于5000000,需要关注


指定文件查看 -f

10.1-10.5 w查看系统负载  vmstat , top, sar, nload_top_09

/var/log/sa/sa19

这文件的定义是根据文件生成的当天时间,例如在2018年3月19日生成的,则命名会以sa19命名。

/var/log/sa/下的文件 最多保留一个月。

!!!!其实还有一个文件是sar19,sa19与sar19区别在。

sa19是二进制文件,不可以#cat等查看命令加载查看它的信息,只能用#sar相关命令去加载它的数据。

sar19是可以直接#cat的。


#sar -q 用法

[root@centos7 ~]# sar -q
Linux 3.10.0-693.el7.x86_64 (centos7.4-01) 2018年03月19日 _x86_64_(1 CPU)
17时50分01秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
18时00分01秒         1       104      0.00      0.01      0.05         0
18时10分01秒         2       104      0.01      0.02      0.05         0
18时20分01秒         1       104      0.00      0.01      0.05         0
18时30分01秒         1       105      0.00      0.01      0.05         0
平均时间:         1       104      0.00      0.01      0.05         0

#sar -q 有助于我们查看服务器过去某个时间的负载状况。



10.5 nload命令


  • 安装nload

  • 安装之前需要安装epel-release

yum install -y epel-release
yum install -y nload



#nload

10.1-10.5 w查看系统负载  vmstat , top, sar, nload_vmstat_10

10.1-10.5 w查看系统负载  vmstat , top, sar, nload_日常运维_11

Device ens33 [192.168.189.128] (1/2):

网卡名称      ip地址            其中一个网卡


按右箭头可以查看其他网卡的网络流量。输出结果分为两部分,Incoming为进入网卡的流量,Outgoing为网卡出去的流量,我们关注的是Curr哪行数据,其单位也可以动态自动调整,非常人性化,按q退出。