使用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