linux效能監控命令
vmstat
可以用來監控虛擬記憶體。可對作業系統的虛擬記憶體、IO、CPU等多個指標的整體情況進行監視。
Linux系統的記憶體分為實體記憶體和虛擬記憶體兩種。實體記憶體是真實的,也就是實體記憶體條上的記憶體。而虛擬記憶體則是採用硬碟空間補充實體記憶體,將暫時不使用的記憶體頁寫到硬碟上以騰出更多的實體記憶體讓有需要的程序使用。當這些已被騰出的記憶體頁需要再次使用時才從硬碟(虛擬記憶體)中讀回記憶體。這一切對於使用者來說是透明的。通常對Linux系統來說,虛擬記憶體就是swap分割槽。

image.png
記憶體方面:
swpd:已經使用的交換記憶體(kb)
free:空閒的實體記憶體(kb)
buff:用作緩衝區的記憶體數(kb)
cache:用作快取記憶體的記憶體數(kb)
si、so 兩列,表示磁碟和記憶體之間交換的頻繁程度。
分析思路:
如果 si、so 數值長期很大並且free長期很小,表示實體記憶體不能滿足需要,也就是記憶體不足。由於磁碟的效能比記憶體是慢很多的,所以如果存在大量的頁面交換,那麼系統的效能必然會受到很大影響。
CPU方面:
r:展示了正在執行和等待cpu資源的任務個數。當這個值超過了cpu個數,就會出現cpu瓶頸。
us:使用者CPU時間。
sy:系統CPU時間。
id:空閒CPU時間。
wa:等等I/O CPU時間。
us+sy+id+wa=100%
分析思路:
如果 r 經常大於4,且id經常小於40,表面CPU的負荷很重。
free
可以用來觀察記憶體使用情況。

image.png
total= used + free
分析思路:
當 –/+ buffers/cache中的free長時間接近0,且 swap used長時間比較大時,說明實體記憶體已經不夠用了,需要升級記憶體或降低記憶體的使用量。
iostat
可以用來監控磁碟I/O的情況。

image.png
顯示結果為從系統開機到當前執行時刻的統計資訊。
第一行顯示系統版本、主機名、日期等資訊。
avg-cpu:顯示總體CPU使用情況統計資訊。如果是多核CPU的話,這裡取平均值。
Device: 顯示各磁碟裝置的IO統計資訊。
主要關注點:
avg-cpu 的 %iowait:表明CPU用於等待I/O請求完成的時間。
Device 的 tps:每秒程序下發的I/O讀寫請求數量。

image.png
顯示和I/O相關的更詳細的資料。
主要關注點:
avgqu-sz:是平均請求佇列的長度。毫無疑問,佇列長度越短越好。
await: 每一個IO請求的處理的平均時間(單位是微秒毫秒)。這裡可以理解為IO的響應時間,一般地系統IO響應時間應該低於5ms,如果大於10ms就比較大了。這個時間包括了佇列時間和服務時間,也就是說,一般情況下,await大於svctm,它們的差值越小,則說明佇列時間越短,反之差值越大,佇列時間越長,說明系統出了問題。
svctm 表示平均每次裝置I/O操作的服務時間(以毫秒為單位)。如果svctm的值與await很接近,表示幾乎沒有I/O等待,磁碟效能很好,如果await的值遠高於svctm的值,則表示I/O佇列等待太長, 系統上執行的應用程式將變慢。
%util:在統計時間內所有處理IO時間,除以總共統計時間。例如,如果統計間隔1秒,該裝置有0.8秒在處理IO,而0.2秒閒置,那麼該裝置的%util = 0.8/1 = 80%,所以該引數暗示了裝置的繁忙程度。一般地,如果該引數是100%表示裝置已經接近滿負荷運行了(當然如果是多磁碟,即使%util是100%,因為磁碟的併發能力,所以磁碟使用未必就到了瓶頸)。
分析思路:
如果%util值長期處於100%左右,並且avgqu-sz的值比較大,同時await的值遠大於svctm,可以認為磁碟的處理能力不夠。
如果只有一個指標持續走高,需要結合mem指標來看,是否是由於記憶體空間不夠導致磁碟的使用增加。
top
可以實時顯示系統中各個程序的佔用情況。

image.png
上部分列出了系統整體的統計資訊:任務、CPU、記憶體、交換區等資訊。
下部分列出了程序的詳細情況。
uptime
可以檢視系統負載。顯示的和top命令第一行一樣。

image.png
當前時間
系統已執行時間
當前線上使用者
平均負載:一定時間內CPU任務佇列的平均長度,是在一段時間內CPU正在處理以及等待CPU處理的程序數之和的統計資訊。上面3個數分別是——最近一分鐘系統的負載、最近5分鐘系統的負載、最近15分鐘系統的負載
ps
檢視所有程序

image.png
netstat
這個命令用來檢視當前建立的網路連線(深刻理解netstat每一項代表的含義)。最經典的案例就是檢視本地系統打開了哪些埠:

image.png