概述
我們在linux下,如果想要監控服務器性能。我們必須掌握以下常用的指標查看命令。
- ps
- pstree
- top
- free
- vmstat
- sar
ps
ps命令能給出當前系統中進程的快照。下面我們列舉幾個常用的選項
使用 -a 參數。-a 代表 all。同時加上x參數會顯示沒有控制終端的進程。
ps -ax
通過我們會查找某類或包含某些指定關鍵字的進程,這是會使用管道結合grep命令來進一步過濾結果。
例如查找java相關的進程ps -ax | grep java
有時我們則需要根據CPU和內存的使用情況來過濾排序篩選結果,這樣便於快速找到哪個進程最耗CPU、內存
ps -aux
根據CPU的使用升序排序
ps -aux --sort -pcpu
根據內存使用升序排序
ps -aux --sort -pmem
上述兩個命令合並一起,如下:
ps -aux --sort -pcpu,+pmem
只顯示前幾個進程,例如顯示前十個,需要使用管道結合head命令。
ps -aux | head -n 10
pstree
pstree命令以樹狀圖顯示進程間的關系
下面我們看幾個常用的示例。
以樹狀圖顯示進程,只顯示進程的名字,且相同進程合並顯示。
pstree
以樹狀圖顯示進程,還顯示進程PID。
pstree -p
以樹狀圖顯示進程PID為<pid>的進程以及子孫進程,如果有-p參數則同時顯示每個進程的PID。
pstree <pid>或
pstree -p <pid>
以樹狀圖顯示進程,相同名稱的進程不合並顯示,並且會顯示命令行參數,如果有-p參數則同時顯示每個進程的PID。
pstree -a
為什么要用pstree命令,通過該命令,能讓你更清晰的了解你要監控的目標服務關聯了哪些資源,能讓你更加清楚其資源關聯情況,增加在性能測試過程中分析的准確性。
不管是ps還是pstree命令,在性能測試過程中,最重要的一個應用技巧就是獲取資源消耗最高的目標進程的線程id。例如
ps auxw|head -1;ps auxw|sort -rn -k3|head -10 cpu占用最高的十個進程
ps auxw|head -1;ps auxw|sort -rn -k4|head -10 內存占用最高的十個進程
ps auxw --sort=rss 實際內存占用排名
ps auxw --sort=%cpu 實際cpu消耗排名
top
top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似於Windows的任務管理器。
與ps不同的是,top顯示系統當前的進程和其他狀況,而且是一個動態顯示過程,它可以不斷刷新當前狀態。
直接使用即可
free -m
使用free命令,能讓你清楚的了解當前系統內存消耗情況。
vmstat
vmstat命令是最常見的Linux/Unix監控工具,可以展現給定時間間隔的服務器的狀態值,包括服務器的CPU使用率,內存使用,虛擬內存交換情況,IO讀寫情況。
相比於top、free等命令,vmstat可以看到整個機器的CPU,內存,IO的消耗情況。
一般情況下vmstat工具的使用是通過兩個數字參數來完成的,第一個參數是采樣的時間間隔數,單位是秒,第二個參數是采樣的次數,如下命令:
vmstat 2 1
2表示每個兩秒采集一次服務器狀態,1表示只采集一次。
sar
sar(System Activity Reporter系統活動情況報告)是目前 Linux 上最為全面的系統性能分析工具之一,可以從多方面對系統的活動進行報告,包括:文件的讀寫情況、系統調用的使用情況、磁盤I/O、CPU效率、內存使用狀況、進程活動及IPC有關的活動等。
如果你的系統沒安裝該命令,請用以下方式進行安裝
apt-get install sysstat
yum install sysstat
安裝完成后在用以下命令啟用:
vi /etc/default/sysstat
將ENABLED改為“true”
ENABLED="true"
重啟下sar服務,開始采集相關數據
/etc/init.d/sysstat start
命令常用格式
sar [options] [-A] [-o file] t [n]
其中:
t為采樣間隔,n為采樣次數,默認值是1;
-o file表示將命令結果以二進制格式存放在文件中,file 是文件名。
options 為命令行選項,sar命令常用選項如下:
sar參數說明
-A 查看匯總所有的報告-a 查看文件讀寫使用情況-B 查看附加的緩存的使用情況-b 查看緩存的使用情況-c 查看系統調用的使用情況-d 查看磁盤的使用情況-g 查看串口的使用情況-h 查看關於buffer使用的統計數據-m 查看IPC消息隊列和信號量的使用情況-n 查看命名cache的使用情況-p 查看調頁活動的使用情況-q 查看運行隊列和交換隊列的平均長度-R 查看進程的活動情況-r 查看沒有使用的內存頁面和硬盤塊-u 查看CPU的利用率-v 查看進程、文件和鎖表狀態-w 查看系統交換活動狀況-y 查看TTY設備活動狀況
查看CPU是否存在瓶頸:
sar -u sar -q
查看內存是否存在瓶頸:
sar -Bsar -rsar -W
查看IO是否存在瓶頸
sar -bsar -usar -d
示例
例如,每10秒采樣一次,連續采樣3次,觀察CPU 的使用情況,並將采樣結果以二進制形式存入當前目錄下的文件cpu_info中,需鍵入如下命令:
sar -u -o cpu_info 10 3
iostat
iostat主要用於監控系統設備的IO負載情況,iostat首次運行時顯示自系統啟動開始的各項統計信息,之后運行iostat將顯示自上次運行該命令以后的統計信息。用戶可以通過指定統計的次數和時間來獲得所需的統計信息。
iotop
如果你想知道每個進程是如何使用IO的就比較麻煩。這個時候iotop可以上場了。
iotop 是一個用來監視磁盤 I/O 使用狀況的 top 類工具。iotop 具有與 top 相似的 UI,其中包括 PID、用戶、I/O、進程等相關信息。
例子:
sar -u #統計CPU的使用情況,每間隔1秒鍾統計一次總共統計三次:#sar -u 1 3