七周一次课linux
10.1 使用w查看系统负载 数据库
10.2 vmstat命令 api
10.3 top命令 bash
10.4 sar命令 服务器
10.5 nload命令网络
10.1 使用w查看系统负载 运维
这一章的内容是核心,之后会用的概率也是很大的,只要掌握必备的基础知识,作初级系统管理员是不成问题的。dom
做为一个运维工程师、系统管理员,若是对本身的系统不了解的话,那怎么排查问题呢?若是出现问题的话,确定要查一下是什么问题,哪里的问题,系统的资源的耗费状况如何查看。工具
使用w命令查看当前系统的负载fetch
[root@localhost sbin]# w
17:07:54 up 7:08, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 Sun21 20:06m 0.02s 0.02s -bash
root pts/0 192.168.11.1 Sun21 2.00s 0.22s 0.02s w
[root@localhost sbin]# date
Mon Jan 22 17:07:58 EST 2018
第一部分是系统时间,使用date命令也能够查看当前时间。
第二部分是系统运行时间
第三部分是登录了几个用户,从下面能够看到,也能够看到登陆了哪一个终端。若是是网络登陆的话,终端是pts/0,pts/1这些;若是是系统登陆,会出现tty1,tty1- tty6是6个终端。from是能够看出从哪里来的。
load average是关键的一段,这是它的系统负载,平时用的看的最多的就是这一部分了。它后面跟三个数字,分别是1分钟、5分钟、15分钟内系统的平均负载值。第一个数字是1分钟内使用CPU的活动的进程有多少个,值越大说明服务器压力越大。这是个平均值,这个数字能够是零点几,也能够是一百多,当前值是0,说明系统没有负载,就说明没有活动的进程,这说明服务器处于空闲的状态。这种状态对服务器,对于Linux操做系统来说就比较浪费,它在空耗。
LOGIN@是登录的时间,IDLE是空闲了多长时间,PCPU是使用CPU的时间,WHAT是适用的命令,后面的能够不用管它。
那什么值是理想状态呢?看你有几颗CPU,这几颗CPU指的是逻辑CPU,而不是物理CPU。CPU有不少类型,Intel的,AMD的,都会有几颗CPU,每颗上又会有不少逻辑CPU。查看CPU的命令以下:
[root@localhost ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
stepping : 9
microcode : 0x70
cpu MHz : 2808.139
cache size : 6144 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
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 ht 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 arat pln pts hwp hwp_notify hwp_act_window hwp_epp
bogomips : 5616.00
clflush size : 64
cache_alignment : 64
address sizes : 42 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
stepping : 9
microcode : 0x70
cpu MHz : 2808.139
cache size : 6144 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 1
initial apicid : 1
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 ht 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 arat pln pts hwp hwp_notify hwp_act_window hwp_epp
bogomips : 5616.00
clflush size : 64
cache_alignment : 64
address sizes : 42 bits physical, 48 bits virtual
power management:
[root@localhost ~]#
须要查看的数字是processor,若是是0,就表明有1颗;是1表明是2颗;若是有39,就表明有40颗,固然这里说的是逻辑CPU,而不是物理CPU。系统上的数字是0,表明有一颗CPU,用w命令查到的第一个数字是1是最好的,不闲也没什么压力。processor的最大数字是7,表明最多有8颗CPU,只要w命令查到的数字不大于8,就是能够的。CPU在工做的时候,只要保证每一个CPU都有一个进程在占用它,就没有问题。就能够工做过来,就不会累,也没有排队的状况。
还有一个命令是:uptime,它和w命令的结果同样。
[root@localhost ~]# uptime
21:00:44 up 20 min, 2 users, load average: 0.00, 0.01, 0.06
[root@localhost ~]# w
21:00:47 up 20 min, 2 users, load average: 0.00, 0.01, 0.06
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty2 20:47 13:35 0.03s 0.03s -bash
root pts/0 192.168.231.1 20:42 7.00s 0.11s 0.02s w
[root@localhost ~]#
注:/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。
[root@localhost sbin]# grep -c 'processor' /proc/cpuinfo
2
[root@localhost sbin]#
10.2 vmstat命令
咱们用w命令学会了查看负载状况,若是出现了负载值偏高的状况,如查询的数字大于CPU核数了,说明CPU不够用了。此时就须要思考CPU不够用的缘由,进程在干什么,都有哪些任务在使用CPU,你可能想去查看系统的瓶颈在哪里。
[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 1195604 2084 367804 0 0 112 4 95 99 0 1 98 1 0
[root@localhost ~]#
能够查到CPU核数,内存,虚拟内存交换分区,io就是磁盘,系统的进程等等相关的东西。常用vmstat 1命令,每隔一秒输出一次状态,动态显示,感受差很少能够Ctrl C结束。
[root@localhost ~]# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 1195360 2084 367836 0 0 106 3 92 96 0 1 98 1 0
0 0 0 1195360 2084 367836 0 0 0 0 78 80 0 0 100 0 0
0 0 0 1195360 2084 367836 0 0 0 0 92 91 0 1 100 0 0
0 0 0 1195360 2084 367836 0 0 0 0 87 80 0 1 100 0 0
0 0 0 1195360 2084 367836 0 0 0 0 92 89 0 1 100 0 0
0 0 0 1195360 2084 367836 0 0 0 0 64 61 0 0 100 0 0
^C
[root@localhost ~]#
固然也能够vmstat 1 5,每隔一秒输出一次状态,输出5次自动结束。
[root@localhost ~]# vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 1195312 2084 367828 0 0 101 3 90 93 0 1 98 1 0
0 0 0 1195312 2084 367828 0 0 0 0 109 102 0 0 100 0 0
0 0 0 1195312 2084 367828 0 0 0 0 68 67 0 0 100 0 0
0 0 0 1195312 2084 367828 0 0 0 0 87 86 0 0 100 0 0
0 0 0 1195312 2084 367828 0 0 0 0 74 69 0 0 100 0 0
[root@localhost ~]#
咱们只须要关心以下几列:
proc显示进程的相关信息:
r,是run的简写,表示系统中有多少个进程是属于run的状态。若是系统只有一颗CPU,可是进程有10个,那就须要排队了。某一个时间点只可能有一个进程在使用CPU,由于系统只有一颗CPU,其余进程都在排队,等到你的时候你再去用。但它们那是循环的,每一个进程都有机会使用CPU,均可以使用一下子。不论是在使用仍是在排队,都是处于r的状态。若是该数值长期大于服务器CPU的个数,则说明CPU资源不够用了。
b,是block的缩写,表示等待资源的进程数。b就是说进程被CPU之外的资源(硬盘或者网络)给阻断了,处于一个等待状态,卡死了,b被堵死了。好比说网速慢,进程想要给你发一个数据包,假如网速很快,只须要1秒就发完了。可是如今速度慢,可能就花了10秒钟,就是由于网速太慢,这个时候只能等网速了,这就是有多少进程在等待了,在block。
memory显示内存的相关信息
swpd,表示切换到交换分区中的内存数量,单位为KB。之前讲分区时,有个swap交换分区,当内存不够时,系统能够把内存中的一部分数据临时放到swap空间里面去。若是这个数字不变,那还好,没有关系;若是这个数字在持续不断的变化,那说明内存和交换分区在持续不断的交换数据,这就只能说明内存不够了。
free,buff,cache咱们讲内存时,再讲这几个单词的含义。
swap显示内存的交换状况
si、so和swapd相关,若是swapd频繁变化,那他们也会相应发生变化。
si:表示有多少数据(块)是由swap交换区进入内存中的,单位为KB。i表示in,进入内存的。o表示out,so表示有多少是从内存中出来的。
io显示磁盘的状况
bi,bo是和磁盘有关系的。bi表示从块设备读取数据的量(读磁盘),单位为KB。bo表示从块设备写入数据的量(写磁盘),单位为KB。这个数据量很大,说明磁盘在频繁的读写。io相比较CPU也好,内存也好,是很慢的。若是有那么多的数据读写,确定会形成并列增长,由于有不少进程在等待磁盘,这个是必然的。
CPU:显示CPU的使用状态
us:表示用户级别的,好比说一个操做系统,确定不可能只运行一个系统,还有跑一些服务。好比跑了一个网站,跑了一个MySQL,网站也好,MySQL也好,确定会占一些资源,它就会体现us这一方面了,user用户占用的状况。us的数字是不会超过100的,由于一共就100%。us数字表示用户下的资源占用CPU的百分比,us长期大于50就说明系统资源不够了。
sy:显示系统自己花费CPU的时间百分比。
id:表示空闲的百分比us+sy+id=100
wa:wait等待,表示I/O等待所占用CPU的时间百分比,这一列很大,说明CPU不够用了。
经过vmstat命令能够断定出系统的瓶颈,如CPU不够,内存不够,仍是磁盘io太大,均可以断定出来。
10.3 top命令
用top命令显示进程所占的系统资源
能够用top查看具体的进程,查看进程使用资源状况
[root@localhost ~]# top
top - 21:23:13 up 43 min, 2 users, load average: 0.08, 0.06, 0.06
Tasks: 147 total, 1 running, 146 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1867048 total, 1194320 free, 302480 used, 370248 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 1360196 avail Mem
4 root 20 0 0 0 0 S 0.3 0.0 0:01.91 kworker/0:0
1788 gdm 20 0 1313128 23328 14320 S 0.3 1.2 0:04.02 gnome-settings-
2545 root 20 0 157716 2236 1532 R 0.3 0.1 0:01.36 top
1 root 20 0 193968 7224 4056 S 0.0 0.4 0:02.06 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.04 ksoftirqd/0
……中间省略一部分
43 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kmpath_rdacd
45 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kpsmoused
[root@localhost ~]#
第一行和w命令查到的系统负载是同样的,总共有多少任务,有多少运行的任务,有多少正在sleeping的任务。有多少stopped的任务,有多少zombie的任务。st是被偷走的CPU百分比。
僵尸进程,主进程被意外终止,留下的子进程就没人管了,这种进程就比较尴尬,没人管,只能自生自灭。
风扇转的欢,CPU很烫,一般说明CPU使用率很高。us长期在60%以上是对CPU没有好处的。虽然资源利用率高,可是对机器是没有好处的。
下面是真正须要关心的东西,默认状况下,它会按CPU百分比从高到低排序,%MEM是内存,RES是物理内存大小,单位是KB千字节。
按大小字母M,会出现按内存使用大小排序,能够看到进程使用内存的具体大小。按大小字母P,换回CPU使用大小排序。按1的话,下面会列出
%Cpu0 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
全部的CPU使用状况。按字母q会推出top命令。
使用top -c命令能够查看具体的进程命令,全局的路径,看的比较详细。
使用top -bn1命令,能够静态的一次性的把全部的信息所有显示出来。
[root@localhost ~]# top -bn1
top - 23:20:31 up 2:40, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 147 total, 1 running, 146 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 3.0 sy, 0.0 ni, 97.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1867048 total, 1194396 free, 302124 used, 370528 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 1360420 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4173 root 20 0 157584 2056 1464 R 6.2 0.1 0:00.01 top
1 root 20 0 193968 7224 4056 S 0.0 0.4 0:02.62 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.09 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.04 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:01.22 rcu_sched
10 root rt 0 0 0 0 S 0.0 0.0 0:00.06 watchdog/0
11 root rt 0 0 0 0 S 0.0 0.0 0:00.06 watchdog/1
12 root rt 0 0 0 0 S 0.0 0.0 0:00.03 migration/1
13 root 20 0 0 0 0 S 0.0 0.0 0:00.06 ksoftirqd/1
15 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:00.01 kdevtmpfs
18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
19 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd
20 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
……中间省略不少
4083 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kworker/0:0
4092 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0
4158 root 20 0 107904 612 516 S 0.0 0.0 0:00.00 sleep
[root@localhost ~]#
这种用法适合在写脚本的时候用。
能够关注一下PID,好比说要杀死一个命令,可使用PID去杀。kill PID命令就能够杀死一个进程。
USER是哪一个用户运行的,PR、NI是关于优先级的,不须要过多关注。
注:使用top命令重点查看的仍是下面的进程使用系统资源的详细情况。
10.4 sar命令
sar是一个很是全面的分析系统状态的命令,主要用来查看网卡的流量。它一样能够查看你的CPU、内存、磁盘的状态,它被称为linux系统中的瑞士军刀,也就是它的命令很是复杂和丰富。与其余系统状态监控工具不一样,它能够打印历史信息,能够显示当天从零点开始到当前时刻的系统状态信息。
若是没有这个命令,能够经过
yum install -y sysstat来安装。
安装完这个命令,首次使用这个命令会出现"没有这个文件或目录"错误,那是由于sar工具尚未生成相应的数据库文件(无需时时监控,由于不用去查询那个库文件)。
若是sar不加参数的话,它会默认调用系统里面保留的历史文件,
[root@localhost ~]# sar #这里已经安装,没有报错
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 01/19/2018 _x86_64_ (2 CPU)
07:13:34 AM LINUX RESTART
[root@localhost ~]# which sar
/usr/bin/sar
[root@localhost ~]# ls /var/log/sa
sa03 sa06 sa09 sa11 sa15 sa17 sa19 sa22 sa24 sa26 sa28 sar15 sar21 sar26
sa05 sa08 sa10 sa14 sa16 sa18 sa21 sa23 sa25 sa27 sar08 sar16 sar24 sar27
[root@localhost ~]#
这个目录就是它生成的历史文件所在的目录,什么叫历史文件呢?由于sar有一个特性,每10分钟会把系统的状态过滤一遍,抓一遍保存在文件里,这个文件就存在上面的目录里。
这个命令要想使用,须要加上合适的选项和参数,若是要查看网卡的流量,须要使用以下命令:
[root@localhost ~]# sar -n DEV 1 10
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 01/19/2018 _x86_64_ (2 CPU)
07:30:43 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:44 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:44 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:44 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:44 AM ens33 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:44 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:45 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:45 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:45 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:45 AM ens33 2.00 2.00 0.12 0.62 0.00 0.00 0.00
07:30:45 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:46 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:46 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:46 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:46 AM ens33 1.00 1.00 0.06 0.56 0.00 0.00 0.00
07:30:46 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:47 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:47 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:47 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:47 AM ens33 1.00 1.00 0.06 0.56 0.00 0.00 0.00
07:30:47 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:48 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:48 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:48 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:48 AM ens33 1.98 1.98 0.15 0.64 0.00 0.00 0.00
07:30:48 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:49 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:49 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:49 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:49 AM ens33 1.00 1.00 0.06 0.56 0.00 0.00 0.00
07:30:49 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:50 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:50 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:50 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:50 AM ens33 1.00 1.00 0.06 0.56 0.00 0.00 0.00
07:30:50 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:51 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:51 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:51 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:51 AM ens33 1.00 1.00 0.06 0.56 0.00 0.00 0.00
07:30:51 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:52 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:52 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:52 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:52 AM ens33 1.00 1.00 0.06 0.56 0.00 0.00 0.00
07:30:52 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:53 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:53 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:53 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:53 AM ens33 2.00 2.00 0.12 0.62 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: virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: ens33 1.20 1.20 0.07 0.52 0.00 0.00 0.00
[root@localhost ~]#
这个用法和vmstat的用法相似,就是每隔1秒钟显示1次,总共显示10次结束。
IFACE表示网卡的名字。
rxpck/s和txpck/s表示每秒钟的包的数量,单位是个。rx是receive的简写,表明收取的,tx表明发送的。
rxkB/s这一列表示每秒收取的数据量(单位是KB)
txkB/s这一列表示每秒发送的数据量(后面几列不须要关注,阿铭老师工做这么多年,后面几列都是不超过0的,也就是都是0)
一个网站若是遭到攻击,它会发送不少的数据包给你的网站,意味着你要接受不少的数据包。量很大的话,意味着你的网卡承担不了,最终致使网络堵塞,你的网站不能打开。
那多少包合适呢?
有时候也要关注网卡流量是否跑满,好比你的公司买了一个机柜,分配了一些带宽(好比说100M),100M不大,若是换算成常规理解的就是12.5M/s,也不是很大。若是有几我的同时下载的话,很快就占满了。若是rxpck/s的数据包有几千是正常的,若是有几万的话,就不正常了。有几万,几十万的话,就是被攻击了。若是被攻击了,能够看rxpck/s的数据包有多少,这个不太肯定,须要用抓包工具,这个之后再讲。
[root@localhost ~]# sar
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 01/19/2018 _x86_64_ (2 CPU)
07:13:34 AM LINUX RESTART
07:20:02 AM CPU %user %nice %system %iowait %steal %idle
07:30:01 AM all 0.08 0.00 0.21 0.05 0.00 99.66
07:40:01 AM all 0.04 0.00 0.24 0.01 0.00 99.71
07:50:01 AM all 0.04 0.00 0.14 0.00 0.00 99.82
Average: all 0.05 0.00 0.19 0.02 0.00 99.73
[root@localhost ~]# ls /var/log/sa/
sa03 sa06 sa09 sa11 sa15 sa17 sa19 sa22 sa24 sa26 sa28 sar15 sar21 sar26
sa05 sa08 sa10 sa14 sa16 sa18 sa21 sa23 sa25 sa27 sar08 sar16 sar24 sar27
[root@localhost ~]#
如今运行sar命令不会报错了,由于/var/log/sa下已经生成了文件,每隔10分钟会抓一次。
使用以下命令能够查看某一天的网卡流量:
sar -n DEV -f /var/log/sa/sarn,n表明具体的日期
[root@localhost ~]# sar -n DEV -f /var/log/sa/sar15
Invalid system activity file: /var/log/sa/sar15
[root@localhost ~]#
虽然没有查看数据,可是有数据的话,是能够查到的。
数据在这个目录下最多保留一个月
sar -q是查看服务器在过去的某个时间的负载状况
[root@localhost ~]# sar -q 1 10
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 01/19/2018 _x86_64_ (2 CPU)
08:00:43 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
08:00:44 AM 0 246 0.00 0.01 0.05 0
08:00:45 AM 0 246 0.00 0.01 0.05 0
08:00:46 AM 0 246 0.00 0.01 0.05 0
08:00:47 AM 0 246 0.00 0.01 0.05 0
08:00:48 AM 2 246 0.00 0.01 0.05 0
08:00:49 AM 0 246 0.00 0.01 0.05 0
08:00:50 AM 0 246 0.00 0.01 0.05 0
08:00:51 AM 0 246 0.00 0.01 0.05 0
08:00:52 AM 0 246 0.00 0.01 0.05 0
08:00:53 AM 0 246 0.00 0.01 0.05 0
Average: 0 246 0.00 0.01 0.05 0
[root@localhost ~]#
[root@localhost ~]# w
08:01:31 up 48 min, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.231.1 07:16 3.00s 0.19s 0.05s w
[root@localhost ~]#
[root@localhost ~]# sar -q
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 01/19/2018 _x86_64_ (2 CPU)
07:13:34 AM LINUX RESTART
07:20:02 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
07:30:01 AM 4 247 0.01 0.04 0.09 0
07:40:01 AM 3 246 0.00 0.01 0.05 0
07:50:01 AM 2 246 0.00 0.01 0.05 0
08:00:01 AM 5 248 0.00 0.01 0.05 0
Average: 4 247 0.00 0.02 0.06 0
[root@localhost ~]#
sar -b是查看磁盘的,看它的读和写。
[root@localhost ~]# sar -b
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 01/19/2018 _x86_64_ (2 CPU)
07:13:34 AM LINUX RESTART
07:20:02 AM tps rtps wtps bread/s bwrtn/s
07:30:01 AM 0.29 0.10 0.19 4.69 4.06
07:40:01 AM 0.16 0.00 0.16 0.16 2.09
07:50:01 AM 0.03 0.00 0.03 0.00 0.33
08:00:01 AM 0.14 0.00 0.14 0.15 2.01
Average: 0.16 0.03 0.13 1.25 2.12
[root@localhost ~]#
下面的命令是看它的读和写
[root@localhost ~]# sar -b 1 5
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 01/19/2018 _x86_64_ (2 CPU)
08:03:44 AM tps rtps wtps bread/s bwrtn/s
08:03:45 AM 0.00 0.00 0.00 0.00 0.00
08:03:46 AM 0.00 0.00 0.00 0.00 0.00
08:03:47 AM 0.00 0.00 0.00 0.00 0.00
08:03:48 AM 0.00 0.00 0.00 0.00 0.00
08:03:49 AM 0.00 0.00 0.00 0.00 0.00
Average: 0.00 0.00 0.00 0.00 0.00
[root@localhost ~]#
10.5 nload命令
sar命令能够查看网卡流量,可是不够直观,使用nload命令更好。nload命令默认没有安装,须要使用以下命令安装:
yum install -y epel-release;yum install -y nload
安装完运行,就会出现动态的显示网卡:
最上面一行是网卡名字以及IP地址,按向右箭头能够查看其余网卡(lo)的网络流量。输出结果分为两部分,Incoming为进入网卡的流量,Outgoing为网卡出去的流量。咱们关注的固然是Curr那行的数据,其单位也能够动态自动调整,很是人性化。按q退出该界面。买的带宽是出去的带宽,若是有攻击,进来的数字就会很大。
sar的补充内容:
[root@localhost ~]# ls /var/log/sa/
[root@localhost ~]#
这个目录等到明天才会生成,sarn是能够经过cat来查看的,而san不能。
友情连接:阿铭Linux