本文介紹工作中常用的幾個linux效能檢視命令:top,sar,vmstat,iostat,pidstat等。
top是最常用的linux效能分析工具,它能夠實時的顯示系統中各個程序的資源占用情況。top命令的部分輸出如下:
top的互動命令有以下幾個:
(1)f 選擇顯示的列
(2)o或o 改變列的顯示順序
(3)l 切換顯示平均負載和啟動時間資訊
(4)m 切換顯示記憶體資訊
(5)t 切換顯示程序和cpu狀態資訊
(6)c 切換顯示命令名稱和完整命令列
(7)m 根據駐留記憶體大小進行排序k
(8)p 根據cpu使用百分比大小進行排序
(10)h 顯示幫助資訊
(11)q 退出
(12)數字1 顯示所有cpu的負載情況
top命令引數:
top [-] [d] [p] [q] [c] [c] [s] [s] [n]
d 指定每兩次螢幕資訊重新整理之間的時間間隔。當然使用者可以使用s互動命令來改變之。
p 通過指定監控程序id來僅僅監控某個程序的狀態。
q該選項將使top沒有任何延遲的進行重新整理。如果呼叫程式有超級使用者許可權,那麼top將以盡可能高的優先順序執行。
s 指定累計模式
s 使top命令在安全模式中執行。這將去除互動命令所帶來的潛在危險。
i 使top不顯示任何閒置或者僵死程序。
c 顯示整個命令列而不只是顯示命令名
sar週期性的對記憶體和cpu的使用情況進行取樣。基本語法如下:
sar [option]
-a:所有報告的總和
-u:輸出cpu使用情況的統計資訊
-v:輸出inode、檔案和其他核心表的統計資訊
-d:輸出每乙個塊裝置的活動資訊
-r:輸出記憶體和交換空間的統計資訊
-b:顯示i/o和傳送速率的統計資訊
-a:檔案讀寫情況
-c:輸出程序統計資訊,每秒建立的程序數
-r:輸出記憶體頁面的統計資訊
-y:終端裝置活動情況
-w:輸出系統交換活動資訊
-n:網路的統計資訊
-o:取樣結果輸出到檔案
例如:每10秒取樣一次,連續取樣3次,觀察cpu 的使用情況,並將取樣結果以二進位制形式存入當前目錄下的檔案test中 :sar -u -o test 10 3
檢視二進位制檔案test中的內容:sar -u -f test
每10秒取樣一次,連續取樣3次,觀察核心表的狀態:sar -v 10 3
每10秒取樣一次,連續取樣3次,監控記憶體分頁:sar -r 10 3
每10秒取樣一次,連續取樣3次,監控記憶體分頁:sar -b 10 3
每10秒取樣一次,連續取樣3次,報告緩衝區的使用情況:sar -b 10 3
每10秒取樣一次,連續取樣3次,監控程序佇列長度和平均負載狀態:sar -q 10 3
每10秒取樣一次,連續取樣3次,監控系統交換活動資訊:sar -w 10 3
每10秒取樣一次,連續取樣3次,報告裝置使用情況:sar -d 10 3 –p
要判斷系統瓶頸問題,有時需幾個 sar 命令選項結合起來
懷疑cpu存在瓶頸,可用 sar -u 和 sar -q 等來檢視
懷疑記憶體存在瓶頸,可用 sar -b、sar -r 和 sar -w 等來檢視
懷疑i/o存在瓶頸,可用 sar -b、sar -u 和 sar -d 等來檢視
**有乙個改進版的sar叫tsar,可以收集和報告效能和應用的資料,並保持到mysql裡。
vmstat可以統計cpu、記憶體使用情況、swap使用情況、i/o操作、上下文切換、時鐘中斷等資訊。
使用如:vmstat 1 3
iostat主要檢視磁碟io資訊。
tps: 每秒鐘傳送到的i/o請求數.
blk_read /s: 每秒從裝置讀取的block數.
blk_wrtn/s: 每秒向裝置寫入的block數.
blk_read: 讀入的block總數.
blk_wrtn: 寫入的block總數
使用:iostat -d 1 2
iostat -x 1 2
是sysstat的元件之一,可以檢測程序和執行緒的效能情況。
程序檢視工具。
ps表示程序的5種狀態碼:
d 不可中斷 uninterruptible sleep (usually io)
r 執行 runnable (on run queue)
s 中斷 sleeping
t 停止 traced or stopped
z 僵死 a defunct (」zombie」) process
ps引數:
a 顯示所有程序
-a 顯示同一終端下的所有程式
-a 顯示所有程序
c 顯示程序的真實名稱
-n 反向選擇
-e 等於「-a」
e 顯示環境變數
f 顯示程式間的關係
-h 顯示樹狀結構
r 顯示當前終端的程序
t 顯示當前終端的所有程式
u 指定使用者的所有程序
-au 顯示較詳細的資訊
-aux 顯示所有包含其他使用者的行程
-c《命令》 列出指定命令的狀況
--lines《行數》 每頁顯示的行數
--width《字元數》 每頁顯示的字元數
--help 顯示幫助資訊
--version 顯示版本顯示
示例:1.顯示所有程序資訊
ps -a
2.顯示指定使用者資訊
ps -u root
3.顯示所有程序資訊,包括命令列
ps -ef
4.將目前屬於您自己這次登入的 pid 與相關資訊列示出來
ps -l
5.列出目前所有的正在記憶體當中的程式
ps -aux
6.列出類似程式樹的程式顯示
ps -axjf
網路連線狀態檢視工具。
用netstat命令去統計伺服器目前的網路連線狀態
netstat -n|awk '/^tcp/end'
netstat -an | awk '/:80/' | sort | uniq -c
檔案描述符檢視工具。
查詢開啟檔案最多的資訊如下:
lsof -n|awk ''|sort|uniq -c |sort -nr|more
檢視各個程序開啟的檔案資料量:
lsof -n |awk ' " " $3'|sort|uniq -c |sort -nr|more
參考:竹子-部落格
Linux命令列與命令
linux的命令是很重要的工具,也往往是初學者最大的瓶頸。有朋友用了很長時間的linux圖形介面,基本不使用命令列輸入命令執行,所以裝的linux最終成了擺設。這裡總結一些命令列下常使用的命令,希望能有用。什麼是命令 我們通常所說的linux命令列是執行在終端 terminal 的shell 閱讀l...
Linux 命令列檢視CPU資訊
幾個cpu more proc cpuinfo grep physical id uniq wc l 每個cpu是幾核 假設cpu配置相同 more proc cpuinfo grep physical id grep 0 wc l cat proc cpuinfo grep processor 1...
Linux 下檢視命令列歷史
linux中,bash輸入的歷史記錄,會存在.bash history 或者說root bash history 通過history檢視。可以看到,不僅可以輸出正確的命令,還可以輸入錯誤的 如abc 而且輸出的是history之前所有的命令 including history bash histor...