10.1 使用w查看系统负载

具体用法如下:

[root@bogon ~]# w
 09:11:25 up 17 min,  1 user,  load average: 0.00, 0.04, 0.10
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.193.1    08:56    5.00s  0.04s  0.00s w

第1行从左至右显示的信息依次为:时间、系统运行时间、登录用户数、平均负载。从第2行开始的所有行则是告诉我们:当前登录的用户名极其登录地址等。最因该关注第1行中的load average:后面的3个数值。

第一个数值表示1分钟内系统的平均负载值,第2个数值表示5分钟内系统的平均负载值,第3个数值表示15分钟内系统的平均负载值。着重看第1个值,它表示单位时间段内使用CPU的活动进程数(在这里其实就是1分钟内),值越大就说明服务器压力越大。一般情况下,这个值只要不超过服务器的CPU数量就没有关系。如果服务器CPU数量为8,那么值小于8就说明当前服务器没有压力;否则就要关注一下了。查看服务器有几个CPU的方法如下所示:

[root@bogon ~]# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 78
model name      : Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
stepping        : 3
microcode       : 0x9e
cpu MHz         : 2400.149
cache size      : 3072 KB
physical id     : 0
siblings        : 1
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 22
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch epb fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp
bogomips        : 4800.29
clflush size    : 64
cache_alignment : 64
address sizes   : 42 bits physical, 48 bits virtual
power management:

上例中,/proc/cpuinfo这个文件记录了CPU的详细信息。目前市面上的服务器有很多是2颗多核CPU,在Linux看来,它就是2*n个CPU(这里的n为单颗物理CPU上有几核)。例如n是4,则查看这个文件时会显示8段类似的信息,而最后一段信息的processor:后面会显示7。所以查看当前系统有几个CPU,我们可以使用命令grep -c 'processor' /proc/cpuinfo。然而查看有几颗物理CPU时,则需要查看关键字physical id。

vmstat命令

具体用法如下:

[root@bogon ~]# 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 585312   2084 210944    0    0    31     3   61   82  0  0 99  1  0

命令w查看的是系统整体上的负载,通过看那个数值可以知道当前系统有没有压力。但无法判断具体是哪里(CPU,内存,磁盘等)有压力,所以这就用到了vmstat。vmstat命令打印的结果共分为6部分:procs,memory,swap,io,system和cpu。重点关注一下r,b,si,so,bi,bo这几列信息。

  • procs显示进程的相关信息。

  • r(run):表示运行或等待CPU时间片的进程数。大家不要误认为等待CPU时间片意味着这个进程没有运行,实际上某一时刻1个CPU只能有一个进程占用,其它进程只能排着队等着,此时这些排队等待CPU资源的进程依然是运行状态。该数值如果长期大于服务器CPU的个数,则说明CPU资源不够用了。

  • b(block):表示等待资源的进程数,这个资源指的是I/O,内存等。举个例子,当磁盘读写非常频繁时,写数据就会非常慢,此时CPU运算很快就结束了,但进程需要把计算的结果写入磁盘,这样进程的任务才算完成,那此时这个进程只能慢慢地等待磁盘了,这样这个进程就是这个b状态。该数值如果长时间大于1,则需要关注一下了。

  • memory显示内存的相关信息。

  • swpd:表示切换到交换分区中的内存数量,单位为KB。

  • free:表示当前空闲的内存数量,单位为KB。

  • cache:表示(从磁盘中读取的)缓存大小,单位为KB。

  • buff:表示(即将写入磁盘的)缓冲大小,单位为KB。

  • swap显示内存的交换情况

  • si:表示由交换区写入内存的数据量,单位为KB。

  • so:表示由内存写入交换区的数据量,单位为KB。

  • io显示磁盘的使用情况。

  • bi:表示从块设备读取数据的量(读磁盘),单位为KB。

  • bo:表示从块设备写入数据的量(读磁盘),单位为KB。

  • system显示采集间隔内发生的中断次数。

  • in:表示在某一时间间隔内观测到的每秒设备的中断次数。

  • cs:表示每秒产生的上下文切换次数。

  • cpu显示CPU的使用状态

  • us:显示用户下所花费CPU的时间百分比。

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

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

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

  • st:表示被偷走的CPU所占百分比(一般都为0,不用关注)。

  • 以上介绍的各个参数中,经常会关注r,b和wa这3列。io压力很大,这两列的数值会比较高。当这两列的数值的比较高并且不断变化时,说明内存不够了,内存中的数据频繁交换到交换分区中,这对系统性能影响极大。


  • 10.3 top命令 :动态查看系统进程的使用资源情况,每隔3秒更新一次
    top -c :显示详细的进程信息
    top -bn1:静态显示所有进程
    q退出,数字1显示所有核cpu,大写字母M按内存使用顺序排序,

  • 大写字母P按cpu使用情况排序


  • [root@bogon ~]# top -bn1 |head
    top - 15:10:48 up  6:16,  1 user,  load average: 0.00, 0.01, 0.05
    Tasks: 117 total,   1 running, 116 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  6.2 us,  0.0 sy,  0.0 ni, 81.2 id, 12.5 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :   997956 total,   583800 free,   200372 used,   213784 buff/cache
    KiB Swap:  4194300 total,  4194300 free,        0 used.   604600 avail Mem
    
       PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
         1 root      20   0  125496   4036   2592 S  0.0  0.4   0:01.61 systemd
         2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
         3 root      20   0       0      0      0 S  0.0  0.0   0:00.26 ksoftirqd/0

    10.4 sar命令 yum install -y sysstat(安装sar命令)监控系统状态
    sar -n DEV 查看网卡流量
    sar -q 系统负载
    sar -b 磁盘读写
    sar -f /var/log/sa/saxx 查看历史文件

  • [root@bogon ~]# sar -n DEV
    Linux 3.10.0-862.el7.x86_64 (localhost.localdomain)     2018年07月10日  _x86_64_        (1 CPU)
    
    08时55分19秒       LINUX RESTART
    
    09时00分01秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    09时10分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    09时10分01秒 virbr0-nic      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    09时10分01秒    virbr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    09时10分01秒     ens33      1.00      0.07      0.07      0.01      0.00      0.00      0.00
    09时20分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    09时20分01秒 virbr0-nic      0.00      0.00      0.00      0.00      0.00      0.00      0.00
  • [root@bogon ~]# sar -q
    Linux 3.10.0-862.el7.x86_64 (localhost.localdomain)     2018年07月10日  _x86_64_        (1 CPU)
    
    08时55分19秒       LINUX RESTART
    
    09时00分01秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
    09时10分01秒         2       157      0.00      0.04      0.11         0
    09时20分01秒         1       157      0.07      0.03      0.06         0
    09时30分01秒         1       157      0.00      0.01      0.05         0
    09时40分01秒         1       157      0.00      0.01      0.05         0
    09时50分01秒         1       157      0.00      0.03      0.05         0
  • [root@bogon ~]# sar -b
    Linux 3.10.0-862.el7.x86_64 (localhost.localdomain)     2018年07月10日  _x86_64_        (1 CPU)
    
    08时55分19秒       LINUX RESTART
    
    09时00分01秒       tps      rtps      wtps   bread/s   bwrtn/s
    09时10分01秒      0.11      0.02      0.08      0.48      1.17
    09时20分01秒      0.06      0.00      0.06      0.07      0.70
    09时30分01秒      0.03      0.00      0.03      0.00      0.28
    09时40分01秒      0.04      0.00      0.04      0.00      0.40
    09时50分01秒      5.29      4.85      0.44    138.55     21.85
    nload命令
  • 安装命令 yum install -y epel-release:yum install -y nload

  • incoming为进入网卡的流量,outgoing为网卡出口流量。关注curr那行数据。