天天看點

使用w檢視系統負載、vmstat指令、top指令、sar指令、nload指令

使用w檢視系統負載

系統平均負載被定義為在特定時間間隔内運作隊列中的平均程序數

如果一個程序滿足以下條件則其就會位于運作隊列中:

它沒有在等待I/O操作的結果

它沒有主動進入等待狀态(也就是沒有調用'wait')

沒有被停止(例如:等待終止)

1、直接輸出w

[root@centos7 ~]# w

第一行 15:02:01 up 25 min,  3 users,  load average: 0.00, 0.01, 0.04

第二行  USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT

第三行  root     tty1                      14:36   25:05   0.01s  0.01s -bash

第四行  root     pts/0    192.168.100.100  14:37   23:05   9.18s  9.17s top

第五行  root     pts/1    192.168.100.100  15:01    1.00s  0.04s  0.02s w

第一行:目前系統時間,up 25min:啟動25分鐘;3 users:目前登入幾個使用者;load average:系統負載:1分鐘  5分鐘  15分鐘 和cpu有關系,機關時間内使用cpu活動的程序有多少個,最理想的狀态:cpu個數(邏輯cpu,不是實體cpu),即負載值不超過1(cpu個數),一分鐘檢視的數字最能展現目前負載情況

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

processor: 0

0:表示一顆,1表示兩顆

2、uptime和w一樣

[root@centos7 ~]# uptime

 15:13:28 up 37 min,  4 users,  load average: 0.00, 0.01, 0.04

vmstat指令

什麼原因導緻cpu不正常了,系統的瓶頸在哪裡,通過vmstat檢視

[root@centos7 ~]# vmstat 

程序                記憶體            交換分區    磁盤IO  系統        cpu

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 245120    948 120364    0    0    37     4   38   64  0  1 99  0  0

每一秒顯示一次,隻需要顯示5次

[root@centos7 ~]# vmstat 1 5

隻需要關注:r:有多少個程序處于run狀态;1個cpu處理10個程序;那麼cpu輪流排隊處理程序,隻要排隊就是r的狀态  ;當這個值超過了CPU數目,就會出現CPU瓶頸了;

如果運作隊列過大,表示你的CPU很繁忙,一般會造成CPU使用率很高。

b: 阻塞的程序;被網絡,硬碟顯示處理等待狀态,卡死了,block;有多少個程序在等待

swapd:當數字不停變換,表示記憶體不夠;

如果大于0,表示你的機器實體記憶體不足了,如果不是程式記憶體洩露的原因,那麼你該更新記憶體了或者把耗記憶體的任務遷移到其他機器。

si:有多少kb資料從swap進入到記憶體中

so:有多少從記憶體出來的到swap

bi:從磁盤讀,判斷磁盤讀   

bo:從磁盤寫,判斷磁盤寫

us:使用者占用cpu,比如mysql,http,表示使用者态的資源,長時間大于50,表示資源不夠,一共是100

sy:系統态

id:空閑的

us+sy+id=100

wa:等待cpu的百分百,有多少程序在等待,這列很大表示cpu不夠用

top指令

檢視系統具體哪個程序使用情況

預設3秒顯示一次動态的重新整理

Tasks: 350 total,   2 running, 348 sleeping,   0 stopped,   0 zombie

總共的任務            2個在運作    348在休眠    停止        主程序不存在,隻有子程序運作

cpu最高的在前面;按P用cpu排序

mem:按M排序

top -bn1:一次性的把top列出來

top -c:更加詳細的command顯示

kill -9 PID

sar指令

監控系統狀态

1、yum install -y sysstat

/var/log/sa/sa29 每隔一段時間生成的日志

[root@centos7 ~]# sar -n DEV -f /var/log/sa/sa29 (這個是二進制檔案)檢視當天的日志,也可以一個月内的日志

可以直接cat sar -n DEV -f /var/log/sa/sar29 

2、監控網卡流量

-n (network):網卡裝置

1:表示1秒檢視一次

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

第一列:時間

第二列:網卡名稱

第三列(rxpck/s):每秒接收的資料包大小;幾千是正常的,上萬就得關注了

第四列(txpck/s):每秒發送的資料包大小

rxkB/s  txkB/s :接收到的資料流量和發送的資料流量,機關是kB/s

rxcmp/s   txcmp/s  rxmcst/s:沒什麼意義

Linux 3.10.0-327.el7.x86_64 (centos7) 10/29/2017 _x86_64_(1 CPU)

07:09:44 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s

07:09:45 PM eno16777736      1.01      1.01      0.06      0.17      0.00      0.00      0.00

07:09:45 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

07:09:45 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s

07:09:46 PM eno16777736      1.00      1.00      0.06      0.37      0.00      0.00      0.00

07:09:46 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

3、檢視系統負載

[root@centos7 ~]# sar -q 1 5

runq-sz:運作隊列的長度(等待運作的程序數)。

plist-sz:程序清單中程序(processes)和線程(threads)的數量。

ldavg-1:最後 1 分鐘的系統平均負載(System load average)。

ldavg-5:過去 5 分鐘的系統平均負載。

ldavg-15:過去 15 分鐘的系統平均負載。

12:16:41 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15

12:16:44 PM         0       147      0.00      0.01      0.00

12:16:47 PM         0       147      0.00      0.01      0.00

12:16:50 PM         0       147      0.00      0.01      0.00

Average:            0       147      0.00      0.01      0.00

4、監控cpu

[root@test fc]# sar -u 1 3

%usr:使用者程序消耗的 CPU 時間百分比。

%nice: 運作正常程序消耗的 CPU 時間百分比。

%system:系統程序消耗的 CPU 時間百分比。

%iowait: I/O 等待所占 CPU 時間百分比。

%idle: CPU 空閑狀态的時間百分比。

Linux 2.6.32-573.el6.x86_64 (test)  11/02/2017  _x86_64_ (4 CPU)

12:09:50 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle

12:09:51 PM     all      0.00      0.00      0.25      0.00      0.00     99.75

12:09:52 PM     all      0.00      0.00      0.00      0.00      0.00    100.00

12:09:53 PM     all      0.00      0.00      0.25      0.00      0.00     99.75

Average:        all      0.00      0.00      0.17      0.00      0.00     99.83

總結:在所有的顯示中,我們應主要注意%iowait和%idle, %iowait的值過高,表示硬碟存在 I/O 瓶頸, %idle值高,表示 CPU 較空閑,如果%idle值高但系統響應慢時,有可能是 CPU 等待配置設定記憶體, 此時應加大記憶體容量。 %idle 值如果持續低于 10,那麼系統的 CPU 處理能力相對較低,表明系統中最需要解決的資源是 CPU。

5、IO傳輸速率的監控

[root@test fc]# sar -b 3 3

 tps:每秒鐘實體裝置的 I/O 傳輸總量。

 rtps:每秒鐘從實體裝置讀入的資料總量。

 wtps:每秒鐘向實體裝置寫入的資料總量。

 bread/s:每秒鐘從實體裝置讀入的資料量,機關為 塊/s。

 bwrtn/s:每秒鐘向實體裝置寫入的資料量,機關為 塊/s。

12:14:15 PM       tps      rtps      wtps   bread/s   bwrtn/s

12:14:18 PM      0.00      0.00      0.00      0.00      0.00

12:14:21 PM      0.00      0.00      0.00      0.00      0.00

12:14:24 PM      0.00      0.00      0.00      0.00      0.00

Average:         0.00      0.00      0.00      0.00      0.00

總結:

要判斷系統瓶頸問題,有時需幾個 sar 指令選項結合起來

懷疑 CPU 存在瓶頸,可用 sar -u 和 sar -q 等來檢視

懷疑記憶體存在瓶頸,可用 sar -B、 sar -r 和 sar -W 等來檢視

懷疑 I/O 存在瓶頸,可用 sar -b、 sar -u 和 sar -d 等來檢視

nload指令

1、[root@centos7 ~]# yum install epel-release

2、[root@centos7 ~]# yum install nload

3、[root@centos7 ~]# nload

可以檢視目前的,平均的,最大的,最小的,總共的帶寬

本文轉自 jiekegz  51CTO部落格,原文連結:http://blog.51cto.com/jacksoner/1977194

繼續閱讀