使用w,vmstat命令,top命令,sar命令,nload命令
-
w命令/uptime
load average: 0.00, 0.01, 0.05
上面這條顯示的就是系統負載。後面有三段數字
[root@localhost ~]# w
21:33:04 up 41 min, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.245.1 20:53 0.00s 0.10s 0.02s w
[root@localhost ~]#
第一個數值表示一分鐘內系統的平均負載值,第二個數值表示5分鐘內系統的平均負載值,第三個數值表示15分鐘內系統的平均值。
主要著重看第一個值,值越大說明服務器的壓力越大。一般情況下這個值只要不超過服務器的cpu數量就沒有關系。
查看系統有幾個cpu : cat /proc/cpuinfo
看processor的值是多少,0就表示有1個邏輯cpu。10就表示有11個邏輯cpu
[root@localhost ~]# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 61 model name : Intel(R) Core(TM) i5-5300U CPU @ 2.30GHz stepping : 4 microcode : 0x22 cpu MHz : 2294.250 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 : 20 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 ida arat epb pln pts dtherm fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm rdseed adx smap xsaveopt bogomips : 4589.38 clflush size : 64 cache_alignment : 64 address sizes : 42 bits physical, 48 bits virtual power management: [root@localhost ~]#
vmstat
當我們發現系統的負載偏高的時候,可以用vmstat來查看都有哪些原因導致配置不夠用了。
[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 2 0 0 715284 892 169560 0 0 30 3 35 63 0 0 99 0 0 [root@localhost ~]#
一般用vmstat 1 來查看系統負載。這條命令的意思是每一秒鐘進行動態顯示
[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
2 0 0 715440 892 169592 0 0 29 3 35 62 0 0 100 0 0
0 0 0 715424 892 169592 0 0 0 0 45 60 0 1 99 0 0
0 0 0 715424 892 169592 0 0 0 0 24 34 0 0 100 0 0
0 0 0 715424 892 169592 0 0 0 0 33 41 1 0 99 0 0
0 0 0 715424 892 169592 0 0 0 0 38 42 0 1 99 0 0
0 0 0 715424 892 169592 0 0 0 0 36 49 0 0 100 0 0
^C
[root@localhost ~]#
後面再加上一個數字就是指定顯示幾行後結束
[root@localhost ~]# vmstat 1 3
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 715440 892 169592 0 0 26 3 34 60 0 0 100 0 0
0 0 0 715424 892 169592 0 0 0 0 28 42 0 0 100 0 0
0 0 0 715424 892 169592 0 0 0 0 28 34 0 0 100 0 0
[root@localhost ~]#
其中r(run)的意思:表示運行或者等待的時間的進程數。因為某一個時刻只有一個進程在用一個cpu,如果有十個進程,就會一個進程在某一個時間運行,到時間了,就運行下一個進程。進行輪流運行,其他進程在排隊。
b:(block) : 等待資源的進程數。比如進程在進行完成之後要寫入磁盤,這時候如果硬盤的負載很高,讀寫速度慢,或者網速太慢了。導致進程出現等待的情況。
swpd :表示切換到交換分區中的內存數量,單位為KB。
free : 表示當前空閑的內存數量,單位為KB。
buff : 表示(即將寫入磁盤的)緩沖大小,單位為KB。
cache : 表示(從硬盤中讀取的)緩存大小,單位為KB。
si : 表示由交換區寫入內存的數據量,單位為KB.
so : 表示由內存寫入交換分區的數據量,單位為KB.
bi : 表示從塊設備讀取數據的量(讀磁盤),單位為KB.
bo :寫磁盤 ,單位為KB。
in : 表示某一時間間隔內觀測到的每秒設備的中斷次數。
cs : 表示每秒產生的上下文切換次數。
us : 顯示用戶下所花費CPU的資源的百分比。
sy :顯示系統花費CPU的資源的百分比。
id : 表示cpu處於空閑狀態的資源百分比。
wa : 表示I/O等待所占用CPU的時間百分比。
st : 表示被偷走的cpu所占百分比,(比如虛擬機會偷走物理機的cpu)一般都是0,不用關註。
top 查看進程使用資源情況
top - 22:47:23 up 1:55, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 94 total, 1 running, 93 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 999936 total, 714648 free, 114544 used, 170744 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 707696 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
543 root 20 0 302636 6168 4788 S 0.3 0.6 0:15.07 vmtoolsd
2108 root 20 0 143096 5152 3876 S 0.3 0.5 0:00.77 sshd
1 root 20 0 128092 6704 3952 S 0.0 0.7 0:01.91 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.27 ksoftirqd/0
6 root 20 0 0 0 0 S 0.0 0.0 0:00.34 kworker/u256:0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 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:00.56 rcu_sched
10 root rt 0 0 0 0 S 0.0 0.0 0:00.09 watchdog/0
12 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd
20 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md
26 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0
27 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd
28 root 39 19 0 0 0 S 0.0 0.0 0:00.06 khugepaged
29 root 20 0 0 0 0 S 0.0 0.0 0:00.00 fsnotify_mark
30 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 crypto
38 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kthrotld
39 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kworker/u256:1
40 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kmpath_rdacd
41 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kpsmoused
43 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ipv6_addrconf
默認按照cpu百分比進行排列
數字單位是k字節。
按大寫字母M是以內存排序
按大寫P,是以cpu排序
按數字1,可以列出所有核cpu的使用情況。
按q退出。
top -bn1 :表示非動態打印系統資源的使用情況,可以用在shell腳本中。
sar命令
幾乎可以監控系統的所有資源狀態。俗稱linux系統的瑞士×××。
首先需要安裝這個命令。
[root@localhost ~]# sar
-bash: sar: 未找到命令
[root@localhost ~]# yum install -y sysstat
sar -n DEV 1 3 每一秒顯示三次
[root@localhost ~]# sar -n DEV 1 3
Linux 3.10.0-514.el7.x86_64 (localhost.localdomain) 2017年09月11日 _x86_64_ (1 CPU)
23時15分34秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
23時15分35秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
23時15分35秒 ens33 1.01 1.01 0.06 0.20 0.00 0.00 0.00
23時15分35秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
23時15分36秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
23時15分36秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00
23時15分36秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
23時15分37秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
23時15分37秒 ens33 0.99 0.99 0.06 0.40 0.00 0.00 0.00
平均時間: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
平均時間: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均時間: ens33 1.00 1.00 0.06 0.33 0.00 0.00 0.00
[root@localhost ~]#
rxpck/s 表示每秒進入收取包的數量。txpck/s 表示每秒發送出去包的量。rxkb/s 表示每秒收取的量單位為kb,txkb/s表示每秒發送的數據量。
數據包幾千是正常的,如果數據包上萬或者幾十萬,就很有可能被攻擊了。可以進行抓包查看。
sar -q 查看歷史負載
sar -n DEV -f /var/log/sa/sa17 查看某一天的網卡流量歷史,sa17每10分鐘生成一次,二進制文件,不能直接cat
sar -n DEV -f /var/log/sa/sar17 sar17是每天生成一次,可以直接cat查看
sar -b 查看磁盤。
nload命令
首先需要安裝yum install epel-release
然後安裝yum install -y nload
非常直觀的查看網卡,按方向鍵切換網卡,按q退出
Device ens33 [192.168.245.128] (1/2):
====================================================================================================================================================
Incoming:
Curr: 944.00 Bit/s
Avg: 1.26 kBit/s
Min: 944.00 Bit/s
Max: 2.76 kBit/s
Ttl: 6.86 MByte
Outgoing:
Curr: 9.05 kBit/s
Avg: 8.91 kBit/s
Min: 4.23 kBit/s
Max: 9.49 kBit/s
Ttl: 3.48 MByte
使用w,vmstat命令,top命令,sar命令,nload命令