當前位置:
首頁 > 最新 > Linux性能檢測常用的10個基本命令

Linux性能檢測常用的10個基本命令

本文的內容主要來自對Netflix的一篇技術博客( Linux Performance Analysis in 60,000 Milliseconds (https://medium.com/netflix-techblog/linux-performance-analysis-in-60-000-milliseconds-accc10403c55),並添加了一些自己的理解,僅供參考。


1. uptime

該命令可以大致的看出計算機的整體負載情況,load average後的數字分別表示計算機在1min、5min、15min內的平均負載。


列印內核環形緩存區中的內容,可以用來查看一些錯誤;

上面的例子中,顯示進程18694 因引內存越界被kill掉以及TCP request被丟棄的錯誤。通過dmesg可以快速判斷是否有導致系統性能異常的問題。

列印進程、內存、交換分區、IO和CPU等的統計信息;

vmstat的格式如下

vmstat第一次輸出表示從開機到vmstat運行時的平均值;剩餘輸出的都是在指定的時間間隔內的平均值,上述例子中delay的值設置為1,除第一次以外,剩餘的都是1秒統計一次,count未設置,將會一直循環列印。

上述的例子中delay設置為10,count設置為3,表示每行列印10秒內的平均值,只列印3次。

需要檢查的列

r:表示正在運行或者等待CPU調度的進程數。因為該列數據不包含I/O的統計信息,因此可以用來檢測CPU是否飽和。若r列中的數字大於CPU的核數,表示CPU已經處於飽和狀態。

free:當前剩餘的內存;

si, so:交換分區換入和換出的個數,若換入換出個數大於0,表示內存不足;

us, sy, id, wa:CPU的統計信息,分別表示user time、system time(kernel)、idle、wait I/O。I/O處理所用的時間包含在system time中,因此若system time超過20%,則I/O可能存在瓶頸或異常;


該命令用於每秒列印一次每個CPU的統計信息,可用於查看CPU的調度是否均勻

該命令用於列印各個進程對CPU的佔用情況,類似top命令中顯示的內容。pidstat的優勢在於,可以滾動的列印進程運行情況,而不像top那樣會清屏。

上述例子中,%CPU中兩個java進程的cpu利用率分別達到了1590%和1573%,表示java進程佔用了16顆CPU。


類似vmstat,第一次輸出的是從系統開機到統計這段時間的採樣數據;

檢查列

r/s, w/s, rkB/s, wkB/s,表示每秒向I/O設備發出的reads、writes、read Kbytes、write Kbytes的數量。

await,表示應用程序排隊等待和被服務的平均I/O時間,該值若大於預期的時間,這表示I/O設備處於飽和狀態或者異常。

avgqu-sz,表示請求被發送給I/O設備的平均時間,若該值大於1,則表示I/O設備可能已經飽和;

%util,每秒設備的利用率;若該利用率超過60%,則表示設備出現性能異常;


檢查的列:

buffers: For the buffer cache, used for block device I/O.

cached: For the page cache, used by file systems.

若buffers和cached接近0,說明I/O的使用率過高,系統存在性能問題。

Linux中會用free內存作為cache,若應用程序需要分配內存,系統能夠快速的將cache佔用的內存回收,因此free的內存包含cache佔用的部分。


sar是System Activity Reporter的縮寫,系統活動狀態報告。

-n { keyword [,…] | ALL },用於報告網路統計數據。keyword可以是以下的一個或者多個: DEV, EDEV, NFS, NFSD, SOCK, IP, EIP, ICMP, EICMP, TCP, ETCP, UDP, SOCK6, IP6, EIP6, ICMP6, EICMP6 和UDP6。

-n DEV 1, 每秒統計一次網路的使用情況;

-n EDEV 1,每秒統計一次錯誤的網路信息;

IFACE ,網路介面名稱;

rxpck/s ,每秒接收到包數;

txpck/s ,每秒傳輸的報數;(transmit packages)

rxkB/s ,每秒接收的千位元組數;

txkB/s ,每秒發送的千位元組數;

rxcmp/s ,每秒接收的壓縮包的數量;

txcmp/s ,每秒發送的壓縮包的數量;

rxmcst/s,每秒接收的組數據包數量;


該命令可以用於粗略的判斷網路的吞吐量,如發起的網路連接數量和接收的網路連接數量;

TCP, 報告關於TCPv4網路流量的統計信息;

ETCP, 報告有關TCPv4網路錯誤的統計信息;

檢測的列:

active/s: Number of locally-initiated TCP connections per second (e.g., via connect()),發起的網路連接數量;

passive/s: Number of remotely-initiated TCP connections per second (e.g., via accept()),接收的網路連接數量;

retrans/s: Number of TCP retransmits per second,重傳的數量;


top命令包含更多的指標統計,相當於一個綜合命令。


下面的圖片很好的展示了各個命令的主要作用,如使用vmstat查看系統的整體性能,mpstat用於查看cpu的性能,pidstat用於查看進程的狀態,iostat用於查看io的狀態,free用於產看內存的狀態,sar用於產看網路的狀態等。

image.png


Linux Performance Tools


性能不好怎麼辦?對著清單擼一遍

Linux Performance Analysis in 60,000 Milliseconds

Netflix常用性能測試工具視頻教程

●編號572,輸入編號直達本文

●輸入m獲取文章目錄

推薦↓↓↓

運維

更多推薦18個技術類微信公眾號

涵蓋:程序人生、演算法與數據結構、黑客技術與網路安全、大數據技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux學習 的精彩文章:

繼慕尼黑後,另一個德國州也計劃從 Linux 轉向 Windows
2018年5月份GitHub上最熱門的開源項目

TAG:Linux學習 |