學習一些linux監控命令

uptime :

用來快速查看系統平均負載,能夠打印系統總共運行了多長時間和系統的平均負載。uptime命令可以顯示的信息顯示依次爲:現在時間、系統已經運行了多長時間、目前有多少登陸用戶、系統在過去的1分鐘、5分鐘和15分鐘內的平均負載。

vmstate:

顯示虛擬內存狀態(“Viryual Memor Statics”),可以報告關於進程、內存、I/O等系統整體運行狀態。

語法:vmstat(選項)(參數)

vmstat 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0    320  42188 167332 1534368    0    0     4     7    1    0  0  0 99  0  0
 0  0    320  42188 167332 1534392    0    0     0     0 1002   39  0  0 100  0  0
  • vmstat 3,3表示每隔3秒刷新一次。

procs :進程

  • r: 運行隊列中進程數量,這個值也可以判斷是否需要增加CPU。(長期大於1)
  • b(block): 表示由於IO等待而block的進程數量。

memory:內存

  • swpd: 使用虛擬內存大小,如果swpd的值不爲0,但是SI,SO的值長期爲0,這種情況不會影響系統性能。
  • free: 空閒物理內存大小。
  • buff: 用作緩衝的內存大小。
  • cache: 用作緩存的內存大小,如果cache的值大的時候,說明cache處的文件數多,如果頻繁訪問到的文件都能被cache處,那麼磁盤的讀IO bi會非常小。

swap

  • si: 每秒從交換區寫到內存的大小,由磁盤調入內存。
  • so: 每秒寫入交換區的內存大小,由內存調入磁盤。
注意:內存夠用的時候,這2個值都是0,如果這2個值長期大於0時,系統性能會受到影響,磁盤IO和CPU資源都會被消耗。
有些朋友看到空閒內存(free)很少的或接近於0時,就認爲內存不夠用了,不能光看這一點,還要結合si和so,
如果free很少,但是si和so也很少(大多時候是0),那麼不用擔心,系統性能這時不會受到影響的。

IO(現在的Linux版本塊的大小爲1kb)

  • bi: 每秒讀取的塊數
  • bo: 每秒寫入的塊數

注意:隨機磁盤讀寫的時候,這2個值越大(如超出1024k),能看到CPU在IO等待的值也會越大。

system(系統)

  • in: 每秒中斷數,包括時鐘中斷。
  • cs(context switchs): 每秒上下文切換數。

注意:上面2個值越大,會看到由內核消耗的CPU時間會越大。

CPU(以百分比表示)

  • us: 用戶進程執行時間百分比(user time)

us的值比較高時,說明用戶進程消耗的CPU時間多,但是如果長期超50%的使用,那麼我們就該考慮優化程序算法或者進行加速。

  • sy: 內核系統進程執行時間百分比(system time)

sy的值高時,說明系統內核消耗的CPU資源多,這並不是良性表現,我們應該檢查原因。

  • wa: IO等待時間百分比

wa的值高時,說明IO等待比較嚴重,這可能由於磁盤大量作隨機訪問造成,也有可能磁盤出現瓶頸(塊操作)。

  • id(Idle): 空閒時間百分比

free:

顯示當前系統未使用的和已使用的內存數目,還可以顯示被內核使用的內存緩衝區。

free -b/-k/-m : 以Byte爲單位顯示內存使用情況/ 以kb爲單位顯示內存使用情況 / 以mb爲單位顯示內存使用情況.

free -m
             total       used       free     shared    buffers     cached
Mem:          2016       1973         42          0        163       1497
-/+ buffers/cache:        312       1703
Swap:         4094          0       4094
  • total:內存總數;
  • used:已經使用的內存數;
  • free:空閒的內存數;
  • shared:當前已經廢棄不用;
  • buffers Buffer:緩存內存數;
  • cached Page:緩存內存數。

total=used+free

  • (-buffers/cache) used內存數:第一部分Mem行中的 used – buffers – cached
  • (+buffers/cache) free內存數: 第一部分Mem行中的 free + buffers + cached

可見-buffers/cache反映的是被程序實實在在吃掉的內存,而+buffers/cache反映的是可以挪用的內存總數。

iostat:

用於監視系統輸入輸出設備和CPU的使用情況。它的特點是彙報磁盤活動統計情況,同時也會彙報出CPU使用情況。同vmstat一樣,iostat也有一個弱點,就是它不能對某個進程進行深入分析,僅對系統的整體情況進行分析。

# iostat -x /vda
Linux 3.10.0-693.2.2.el7.x86_64 (iz2zec6q7af34l736i2uuvz)       05/22/2018      _x86_64_        (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.21    0.00    0.14    0.00    0.00   99.64

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util

說明:第二行是系統信息和監測時間,第三行和第四行顯示CPU使用情況,後面爲I/O輸出的信息。

  • Device :監測設備名稱。
  • rrqm/s & wrqm/s:每秒需要讀取 & 寫入需求的數量。
  • r/s & w/s :每秒實際讀取 & 寫入需求的數量。
  • rsec/s & wsec/s : 每秒讀取 & 寫入區段的數量。
  • rkB/s & wKB/s :每秒實際讀取 & 寫入的大小,單位爲KB。
  • avgqu-sz:向設備發出的請求的平均數量。值大於 1 說明已經飽和了(雖說設備可以並行處理請求,尤其是由多個磁盤組成的虛擬設備。)
  • await :以毫秒爲單位的 I/O 平均消耗時間。這是應用程序消耗的實際時間,因爲它包括了排隊時間和處理時間。比預期更大的平均時間可能意味着設備的飽和,或設備出了問題。
  • svctm : I/O需求完成的平均時間。
  • %util:設備利用率。這個值是一個顯示出該設備在工作時每秒處於忙碌狀態的百分比。若值大於 60%,通常表明性能不佳(可以從 await 中看出),雖然它取決於設備本身。值接近 100% 通常意味着已飽和。

mpstat:

主要用於多CPU環境下,它顯示各個可用CPU的狀態系你想。這些信息存放在/proc/stat文件中。在多CPUs系統裏,其不但能查看所有CPU的平均狀況信息,而且能夠查看特定CPU的信息。

語法:mpstat(選項)(參數)

選項:
-P:指定CPU編號。

參數:
間隔時間:每次報告的間隔時間(秒);
次數:顯示報告的次數。

netstat:

用來打印Linux中網絡系統的狀態信息,可讓你得知整個Linux系統的網絡情況。

參數:

-a或--all:顯示所有連線中的Socket;
-A<網絡類型>或--<網絡類型>:列出該網絡類型連線中的相關地址;
-c或--continuous:持續列出網絡狀態;
-C或--cache:顯示路由器配置的快取信息;
-e或--extend:顯示網絡其他相關信息;
-F或--fib:顯示FIB;
-g或--groups:顯示多重廣播功能羣組組員名單;
-h或--help:在線幫助;
-i或--interfaces:顯示網絡界面信息表單;
-l或--listening:顯示監控中的服務器的Socket;
-M或--masquerade:顯示僞裝的網絡連線;
-n或--numeric:直接使用ip地址,而不通過域名服務器;
-N或--netlink或--symbolic:顯示網絡硬件外圍設備的符號連接名稱;
-o或--timers:顯示計時器;
-p或--programs:顯示正在使用Socket的程序識別碼和程序名稱;
-r或--route:顯示Routing Table;
-s或--statistice:顯示網絡工作信息統計表;
-t或--tcp:顯示TCP傳輸協議的連線狀況;
-u或--udp:顯示UDP傳輸協議的連線狀況;
-v或--verbose:顯示指令執行過程;
-V或--version:顯示版本信息;
-w或--raw:顯示RAW傳輸協議的連線狀況;
-x或--unix:此參數的效果和指定"-A unix"參數相同;
--ip或--inet:此參數的效果和指定"-A inet"參數相同。

top:

可以實時動態地查看系統的整體運行情況,是一個綜合了多方信息監測系統性能和運行信息的實用工具。通過top命令所提供的互動式界面,用熱鍵可以管理。

# top
top - 15:34:34 up 107 days,  4:41,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 167 total,   1 running, 166 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1016164 total,    72840 free,   498860 used,   444464 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   318488 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                           
19807 root      20   0  202884  20040   1632 S  0.7  2.0 115:00.97 python                                                            
32361 root      20   0  532304  15084   2136 S  0.3  1.5  85:54.58 docker-containe                                                   
    1 root      20   0  125336   3336   1996 S  0.0  0.3   0:59.97 systemd                                                           
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.09 kthreadd  

解釋:

top - 15:34:346[當前系統時間],
107 days[系統已經運行了16天],
1 user[個用戶當前登錄],
load average:0.00, 0.01, 0.05[系統負載,即任務隊列的平均長度]
Tasks: 167 total[總進程數],
1 running[正在運行的進程數],
166 sleeping[睡眠的進程數],
0 stopped[停止的進程數],
0 zombie[凍結進程數],
%Cpu(s) [cpu指標],
KiB Mem[物理內存總量,以kb爲單位]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章