w、vmstat、 top、 sar、nload命令工具介紹

1. 使用w查看系統負載

用法如下:

# w

 18:20:14 up 2 days,  7:57,  1 user,  load average: 0.01, 0.03, 0.05

USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT

root     pts/0    192.168.4.84     10:14    6.00s  0.11s  0.03s w


解釋:linux管理員最常用的命令就是這個w了,該命令顯示的信息很豐富。第一行從左至右顯示的信息依次爲:時間、系統運行時間、登錄用戶數、平均負載。

第二行開始的所有行則是告訴我們:當前登錄的用戶名及其登錄地址等。


注意:在這裏面最應該關注的應該是第一行中的load average:後面三個數值。

第一個數值表示一分鐘內系統的平均負載值。

第二個數值表示五分鐘內系統的平均負載值。

第三個數值表示十五分鐘內系統的平均負載值。


備註:我們着重看第一個值,它表示單位時間段內使用cpu的活動進程數(在這裏其實就是一分鐘內)值越大就說明服務器壓力越大。一般情況下,這個值只要不超過服務器的cpu數量就沒有關係,如果服務器的cpu數量爲8,那麼值小於就說明當前服務器沒有壓力,否則就要關注下。



查看服務器有幾個CPU(邏輯CPU)

這裏的processor計數從0開始,也就是說第一個顯示爲0,第二個顯示爲1。


# cat /proc/cpuinfo

processor   : 1

vendor_id   : GenuineIntel

cpu family  : 6

model       : 58

model name  : Intel(R) Core(TM) i3-3240 CPU @ 3.40GHz

stepping    : 9

microcode   : 0x17

cpu MHz     : 3392.132

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 : 13

wp      : yes



查看當前系統有幾個cpu

# grep -c 'processor' /proc/cpuinfo 

1



2. vmstat命令

vmstat命令的含義爲顯示虛擬內存狀態(“Viryual Memor Statics”),它可以報告關於進程、內存、I/O等系統整體運行狀態。讓我們知道系統的使用瓶頸在哪裏。

具體用法如下:

# 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 697556    876 175492    0    0     1     0   53   69  0  0 100  0  0


# vmstat 1        表示每隔一秒輸出一次狀態且一直輸出,按Ctrl+c結束

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 697664    876 175524    0    0     1     0   53   69  0  0 100  0  0

 0  0      0 697648    876 175524    0    0     0     0  107  120  0  0 100  0  0

 0  0      0 697648    876 175524    0    0     0     0   79   89  0  1 99  0  0

 0  0      0 697648    876 175524    0    0     0     0   76   97  0  1 99  0  0

 0  0      0 697648    876 175524    0    0     0     0   67   78  0  0 100  0  0

 0  0      0 697648    876 175524    0    0     0     0   72   86  0  0 100  0  0

^C

# 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

 2  0      0 697664    876 175524    0    0     1     0   53   69  0  0 100  0  0

 0  0      0 697648    876 175524    0    0     0     0   80   92  0  0 100  0  0

 0  0      0 697648    876 175524    0    0     0     0   88  106  0  0 100  0  0

 0  0      0 697648    876 175524    0    0     0     0   86   95  0  0 100  0  0

 0  0      0 697648    876 175524    0    0     0     0   70   82  0  0 100  0  0


解釋相關進程的作用,重點關注r、b、si、so、bi、bo這幾列信息:

procs顯示進程的相關信息

r (run):表示運行或等待CPU時間片的進程數。說明:不要誤以爲等待CPU時間片意味着這個進程沒有進行,實際上某一時刻一個CPU只能有一個進程,其他進程只能排着隊等着,此時這些排隊等待CPU資源的進程依然是運行狀態。該數值如果長期大於服務器CPU的個數,則說明CPU資源不夠用了。


b (block):表示等待資源的進程數,這個資源指的是I/O、內存等。舉個例子:當磁盤讀寫非常頻繁時,寫數據就會非常慢,此時CPU運算很快就結束了,但進程需要把計算的結果寫入磁盤,這樣進程的任務纔算完成,那此時這個進程只能慢慢地等待,這樣這個進程就是這個b狀態。該數值如果長時間大於1,則需要關注一下。


memory顯示內存的相關信息

swpd:表示切換到交換分區中的內存數量,單位爲KB。

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

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

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


swap顯示內存的交換情況

si:表示由交換區寫入內存的數據量,單位爲KB。

so:表示由內存寫入交換區的數據量,單位爲KB。


io顯示磁盤的使用情況

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

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


system顯示採集間隔內發生的中斷次數

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

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


cpu顯示CPU的使用狀態

us:顯示用戶下花費CPU的時間百分比。

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

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

wa:表示I/O等待所佔用CPU的時間百分比。

st:表示被偷走的CPU所佔百分比(一般都爲0,不用關注)



3. top命令

top命令用於動態監控進程所佔的系統資源,每隔3秒變一次。它的特點是把佔用系統資源(cpu、內存、硬盤I/O等)最高的進程放到最前面。


用法如下:

# top

top - 19:37:58 up 2 days,  9:14,  1 user,  load average: 0.00, 0.01, 0.05

Tasks:  87 total,   1 running,  86 sleeping,   0 stopped,   0 zombie

%Cpu(s):  0.3 us,  0.7 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

KiB Mem :   999940 total,   696980 free,   126268 used,   176692 buff/cache

KiB Swap:  2097148 total,  2097148 free,        0 used.   692664 avail Mem 


   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                             

    21 root      20   0       0      0      0 S  0.7  0.0   3:13.30 kworker/0:1                                         

  3833 root      20   0  157588   2120   1512 R  0.7  0.2   0:00.77 top                                                 

   496 root      20   0  303272   6760   4780 S  0.3  0.7   5:36.48 vmtoolsd                                            

     1 root      20   0  128104   6700   3948 S  0.0  0.7   0:02.83 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:05.27 ksoftirqd/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:53.45 rcu_sched                                           

    10 root      rt   0       0      0      0 S  0.0  0.0   0:02.18 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.07 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      


備註:需要關注的值有load average,tasks,%CPU,%MEM。

RES表示進程佔用的內存數量。

shift+m表示按內存使用量排序。

shift+p表示按cpu使用量排序。

按數字1可以列出每個cpu的佔用量。

top -c顯示詳細的進程信息。

top -bn1靜態顯示所有進程。

q退出。

q+PID殺死程。



4. sar命令

sar命令很強大,被戲稱爲瑞士×××。它可以監控系統幾乎所有資源的狀態,比如平均負載、網上流量、磁盤狀態,內存使用等。與其他系統狀態監控工具不同,它可以打印歷史信息,可以顯示當天從零點開始到當前時刻的系統狀態信息。


#yum install -y sysstat     sar命令安裝


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

# sar -n DEV

Linux 3.10.0-514.el7.x86_64 (ccj-01)     2018年1月20日     _x86_64_    (1 CPU)


20時00分01秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s

20時10分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

20時10分01秒     ens33     12.01      0.14      0.92      0.02      0.00      0.00      0.00

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

平均時間:     ens33     12.01      0.14      0.92      0.02      0.00      0.00      0.00


解釋:

IFACE這一列表示設備名稱.

rxpck/s這一列表示每秒進入收取的包的數量有多少。

txpck/s這一列表示每秒發送出雲的包的數量有多少。

rxkB/s這一列表示每秒收取的數據量(單位爲KB)。

txkB/S這一列表示每秒發送的數據量。


注意:

如果有一天服務器丟包非常嚴重,那麼你就該應該查一下網卡流量是否異常了,如果rxpck/s那一列的數值大於4000,或者rxkB/s那一列的數值大於50000000,很有可能是被***了,正常的服務器網卡流量不會這麼高,除非是你自己在複製數據。



實時查看網卡流量

# sar -n DEV 1 5

Linux 3.10.0-514.el7.x86_64 (ccj-01)     2018年1月20日     _x86_64_    (1 CPU)


20時12分50秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s

20時12分51秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

20時12分51秒     ens33     11.22      0.00      0.82      0.00      0.00      0.00      0.00


20時12分51秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s

20時12分52秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

20時12分52秒     ens33     12.37      1.03      0.82      0.41      0.00      0.00      0.00


20時12分52秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s

20時12分53秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

20時12分53秒     ens33     12.24      1.02      0.91      0.41      0.00      0.00      0.00


20時12分53秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s

20時12分54秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

20時12分54秒     ens33      8.08      1.01      0.56      0.40      0.00      0.00      0.00


20時12分54秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s

20時12分55秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

20時12分55秒     ens33      7.14      1.02      0.45      0.41      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     10.20      0.82      0.71      0.33      0.00      0.00      0.00


使用-f選項查看某一天的網卡流量歷史,後面跟文件名。(在Red Hat或者CentOS發行版中,sar的庫文件一定在/var/log/sa/目錄下

示例如下:

# sar -n DEV -f /var/log/sa/sa20

Linux 3.10.0-514.el7.x86_64 (ccj-01)     2018年1月20日     _x86_64_    (1 CPU)


20時00分01秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s

20時10分01秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

20時10分01秒     ens33     12.01      0.14      0.92      0.02      0.00      0.00      0.00

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

平均時間:     ens33     12.01      0.14      0.92      0.02      0.00      0.00      0.00


查看歷史負載 sar -q

示例如下:

# sar -q

Linux 3.10.0-514.el7.x86_64 (ccj-01)     2018年1月20日     _x86_64_    (1 CPU)


20時00分01秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked

20時10分01秒         1       105      0.00      0.01      0.05         0

平均時間:         1       105      0.00      0.01      0.05         0


備註:這個命令有助於我們查看服務器在過去某個時間的負載狀況。



5. nload命令

sar雖然可以查看網卡流量,但是不夠直觀,還有一個更好用的工具,那就是nload。


安裝nload:

#yum install -y epel-release 先安裝擴展源

#yum install -y nload 因爲nload依賴於epel-release。


#nload  查看網卡流量:


Device ens33 [192.168.114.1] (1/2):

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

Incoming:


                                                                                  Curr: 10.76 kBit/s

                                                                                  Avg: 9.31 kBit/s

                                                                                  Min: 4.62 kBit/s

                                                                                  Max: 13.25 kBit/s

                                                                                  Ttl: 142.85 MByte

Outgoing:


                                                                                  Curr: 8.55 kBit/s

                                                                                  Avg: 8.42 kBit/s

                                                                                  Min: 3.90 kBit/s

                                                                                  Max: 9.18 kBit/s

                                                                                  Ttl: 1.69 MByte


說明:

Incoming爲進入網卡的流量。

Outgoing爲網卡出去的流量。

主要關注Curr那行的數據,其單位也可以動態自動調整。

按q退出該界面。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章