1. 程式人生 > >二十九、w查看系統負載、vmstat命令、top命令、sar命令、nload命令

二十九、w查看系統負載、vmstat命令、top命令、sar命令、nload命令

w命令 vmstat命令 top命令 sar命令 nload命令

二十九、w查看系統負載、vmstat命令、top命令、sar命令、nload命令

一、使用w查看系統負載

# w

06:10:09 up 6:20, 1 user, load average: 0.00, 0.01, 0.05

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 192.168.93.1 23:50 1.00s 0.22s 0.02s w

第1行從左至右顯示的信息:當前系統時間 up 系統運行時間,登錄用戶數,平均負載。

遠程登錄為pts,虛擬機內登錄為tty,Linux登錄章節有詳細介紹。

pts顯示了遠程的IP。

LOGIN:登錄的時間

IDLE:空閑了多長時間。

load average: 0.00, 0.01, 0.05

load average:系統負載。

第1個數值表示1分鐘內系統的平均負載值,第2個數值表示5分鐘內系統的平均負載值,第3個數值表示15分鐘內系統的平均負載值。著重看第1個值,它表示單位時間段內使用CPU的活動進程數(在這裏其實就是1分鐘內),值越大說明服務器壓力越大。一般情況下,這個值只要不超過服務器的CPU數量就沒關系。若服務器CPU數量為8,那麽值小於8就說明當前服務器沒壓力,8就是理想狀態。

負載理想的狀態就是自己的CPU數量的數字,當前我的有1顆CPU,那麽數字為1時就是理想狀態,不閑也無壓力。

查看服務器有多少個CPU,方法:

# cat /proc/cpuinfo

processor : 0 看第1行的這個值,0代表1顆,1代表2顆,此處為邏輯CPU,並非物理CPU。最大數字是7,代表8顆CPU。

# uptime

06:54:20 up 7:04, 1 user, load average: 0.00, 0.01, 0.05

和w命令的第一行一模一樣。

當系統負載過大時,無法判斷具體哪裏有壓力。

二、vmstat命令

vmstat:監控系統的狀態。

判斷壓力的問題源(CPU、內存、磁盤等),使用vmstat命令。

# 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 1543344 2076 182424 0 0 3 0 25 22 0 0 100 0 0

通常用法是: # vmstat 1 每1秒顯示1次,動態顯示。

或者# vmstat 1 5 每秒顯示1次,顯示5次自動結束。

打印的結果分為6個部分:procs、memory、swap、io、system、cpu。

重點關註:r、b、si、so、bi、bo。

procs:顯示進程的相關信息。

r(run):表示運行或等待CPU時間片的進程數。某一時刻1個CPU只能有1個進程占用,其他進程排隊,等待CPU時間資源的進程依然是運行狀態。該數值若長期大於服務器CPU的個數,則說明CPU資源不夠用了。

b(block):進程被CPU以外的資源阻斷了。等待資源的進程數,這個資源指的是I/O,內存等。舉例,當磁盤讀寫很頻繁時,寫數據就會很慢,此時CPU運算很快就結束了,但進程需把計算的結果寫入磁盤,這樣進程的任務才算完成,那此時該進程只能慢慢等待磁盤,這個進程就是b狀態。該數值長時間大於1,則需要關註了。

menory:顯示內存的相關信息。

swpd:表示切換到交換分區中的內存數量,單位為KB。(若持續變動,說明內存和swap分區在頻繁交換數據,說明內存不夠了,為0正常)

free:表示當前空閑的內存數量,單位為KB。

buff:表示(即將寫入磁盤的)緩沖大小,單位為KB。

cache:表示(從磁盤中讀取的)緩存大小,單位為KB。

swap:顯示內存的交換情況。

(i:in)si:表示由交換區寫入內存的數據庫,單位為KB。關聯:swpd

(o:out)so:表示由內存寫入交換區的數據量,單位為KB。關聯:swpd

io:顯示磁盤的使用情況。和磁盤有關聯,數字大代表在頻繁讀寫,太多會造成b列增加。

bi:表示從塊設備讀取數據的量(讀磁盤),單位為KB。

bo:表示從塊設備寫入數據的量(寫磁盤),單位為KB。

system:顯示采集間隔內發生的中斷次數。

in:表示在某一時間間隔內觀測到的每秒設備的中斷次數。

cs:表示每秒產生的上下文切換次數。

cpu:顯示CPU的使用狀態。

us:顯示用戶下所花費CPU的時間百分比。數字不會超過100,若長時間大於50說明系統資源不夠了。

sy:顯示系統花費CPU的時間百分比。

id:表示CPU處於空閑狀態的時間百分比。

(wait)wa:表示I/O等待所占用CPU的時間百分比。數字太大說明CPU不夠用。

st:表示被偷走的CPU的所占百分比(一般為0,無需關註)服務器做了虛擬化,有虛擬機可能會偷走部分CPU。

us+sy+id=100

只需關註r、b、swpd、si、so、bi、bo、us、wa。多關註us

三、top命令

top:查看具體進程使用資源情況。

用法:# top 動態監控進程所占的系統資源,每隔3秒變一次。

特點:把占用系統資源(CPU、內存、I/O等)最高的進程放到最前面。

top - 04:42:37 up 50 min, 1 user, load average: 0.07, 0.04, 0.05

Tasks: 95 total, 1 running, 94 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, 1546204 free, 136952 used, 183892 buff/cache

KiB Swap: 4194300 total, 4194300 free, 0 used. 1540464 avail Mem

Tasks:進程數。

Tasks: 94 total, 1 running, 93 sleeping, 0 stopped, 0 zombie

94個進程,1個r狀態的進程,93個休眠,0個停止進程。

zombie:僵屍進程。主進程以外中止,子進程留在這。

RES:進程所占的內存大小。物理內存大小。單位是字節。

%MEM:使用內存的百分比

KiB Mem : 1867048 total, 1543120 free, 139108 used, 184820 buff/cache

物理內存(KB):進程數,剩余,已使用,buff/cache

默認情況下按CPU從高到低排序。按M可按內存排序,按P可切換回CPU排序。按數字1可列出所有核的CPU的使用狀態,按1可切換,按q鍵可以退出top。

top - 05:40:02 up 1:48, 1 user, load average: 0.00, 0.01, 0.05

Tasks: 94 total, 1 running, 93 sleeping, 0 stopped, 0 zombie

%Cpu0 : 0.0 us, 0.3 sy, 0.0 ni, 99.7 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

KiB Mem : 1867048 total, 1546076 free, 136920 used, 184052 buff/cache

KiB Swap: 4194300 total, 4194300 free, 0 used. 1540360 avail Mem

# top -c:可以查看到具體命令的全局路徑。

# top -bn1:一次性靜態輸出所有信息,適合寫腳本時使用。

四、sar命令

sar命令:可以打印歷史信息,可以顯示當天從零點開始到當前時間的系統狀態信息。

可以監控系統幾乎所有資源的狀態,如平均負載,網卡流量,磁盤狀態,內存等。

被稱為Linux裏的瑞士×××。查看網卡流量是非常有用的

若沒有該命令,yum install -y sysstat。

初次使用會報錯,因為sar工具還沒有生成相應的數據庫文件。

它的數據庫文件在/var/log/sa/目錄下。

# sar -n DEV 查看網卡流量歷史

該命令會把當天記錄的網卡信息打印出來,每隔十分鐘記錄一次。

# sar -n DEV

Linux 3.10.0-693.el7.x86_64 (yaowei-01) 2018年03月20日 _x86_64_ (2 CPU)

06時00分02秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

06時10分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

06時10分01秒 ens33 0.35 0.09 0.02 0.01 0.00 0.00 0.00

平均時間: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

平均時間: ens33 0.35 0.09 0.02 0.01 0.00 0.00 0.00

IFACE:設備名稱。

rxpck/s:每秒進入收取的包的數量。每秒收入幾千是正常,上萬就不正常了。

txpck/s:每秒發送出去的包的數量。

rxkB/s:每秒收取的數據量(KB)。

txkB/s:每秒發送的數據量。

後面幾列不需關註。

若服務器丟包嚴重,就應查一下網卡流量是否異常。若rxpck/s數值,或者rxkB/s大於5000000,很可能是被攻擊了。正常的服務器網卡流量沒這麽高,除非是自己在復制數據。

# sar -n DEV 1 5 實時查看網卡流量

# sar -n DEV -f /var/log/sa/sa23 查看某天的網卡流量歷史,後面跟文件名,23日。

該目錄下還會生成一個sar23的文件,可以cat,sa23是二進制文件,不能cat。

RedHat或Centos發行版,sar的庫文件一定在/var/log/sa/下。

# sar -q 查看歷史負載,有助於查看服務器在過去某個時間的負載情況。

# sar -b 查看磁盤

五、nload命令

比sar查看網卡流量更好用。系統默認沒安裝。

# yum install -y epel-release; yum install -y nload

因為nload包在epel擴展源裏,所以要先安裝一個擴展源。

# nload

Device ens33 [192.168.93.130] (1/2):

======================================================================================================================

Incoming:

Curr: 944.00 Bit/s

Avg: 1.12 kBit/s

Min: 944.00 Bit/s

Max: 1.86 kBit/s

Ttl: 15.59 MByte

Outgoing:

Curr: 8.58 kBit/s

Avg: 8.44 kBit/s

Min: 4.27 kBit/s

Max: 9.03 kBit/s

Ttl: 1.05 MByte

最上面一行為網卡名和IP地址,按右方向鍵可以查看其它網卡的網絡流量。

Incoming:進入網卡的流量,Outgoing:網卡出去的流量。

主要關註Curr那行。按q退。


二十九、w查看系統負載、vmstat命令、top命令、sar命令、nload命令