linux中幾款常用的系統性能分析工具:
1.vmstat命令
解釋:
虛擬內存信息
用法:
vmstat [options] [delay [count]]
vmstat 2 5
//每2秒刷新一次,一共刷新5次
輸出屬性:
procs:
r:可運行(正運行或等待運行)進程的個數,和核心數有關
b:處于不可中斷睡眠態的進程個數(被阻塞的隊列的長度)
memory:
swpd: 交換內存的使用總量
free:空閑物理內存總量
buffer:用于buffer的內存總量
cache:用于cache的內存總量
swap:
si:從磁盤交換進內存的數據速率(kb/s)
//從磁盤到內存 //進內存
so:從內存交換至磁盤的數據速率(kb/s)
//內存寫到磁盤 //出內存
io:
bi:從塊設備讀入數據到系統的速率(kb/s)
bo: 保存數據至塊設備的速率
system:
in: interrupts 中斷速率,包括時鐘
cs: context switch 進程切換速率
cpu:
us:Time spent running non-kernel code
sy: Time spent running kernel code
id: Time spent idle. Linux 2.5.41前,包括IO-wait time.
wa: Time spent waiting for IO. 2.5.41前,包括in idle.
st: Time stolen from a virtual machine. 2.6.11前, unknown.
選項:
-s:統計內存數據
#:#秒鐘顯示一次
2.iostat命令
解釋:
iostat是I/O?statistics(輸入/輸出統計)的縮寫,主要的功能是對系統的磁盤I/O操作進行監視。它的輸出主要顯示磁盤讀寫操作的統計信息,同時也會給出CPU使用情況。同vmstat一樣,iostat也不能對某個進程進行深入分析,僅對系統的整體情況進行分析。
用法:
示例:iostat 1 10
選項:
-x:顯示詳細格式的信息
#:每#秒執行一次
# *:每#秒執行一次,執行*次退出
3. dstat命令:
解釋:
系統資源統計,代替vmstat,iostat
格式:
dstat [-afv] [options..] [delay [count]]
選項:
-c: 顯示cpu相關信息
-C #,#,…,total
-d: 顯示disk相關信息
-D total,sda,sdb,…
-g:顯示page相關統計數據
-m: 顯示memory相關統計數據
-n: 顯示network相關統計數據
-p: 顯示process相關統計數據
-r: 顯示io請求相關的統計數據
-s: 顯示swapped相關的統計數據
–tcp
–udp
–unix
–raw
–socket
–ipc
–top-cpu:顯示最占用CPU的進程
–top-io: 顯示最占用io的進程
–top-mem: 顯示最占用內存的進程
–top-latency: 顯示延遲最大的進程
影響性能因素:
好–>壞–>糟糕
CPU:
user%?+?sys%<?70%?user%?+?sys%=?85%?user%?+?sys%?>=90%
內存:
Swap?In(si)=0
Swap?Out(so)=0?Per?CPU?with?10?page/s?More?Swap?In?&?Swap?Out
磁盤:
iowait?%?<?20%?iowait?%?=35%?iowait?%?>=?50%
解釋:
user%:表示CPU處在用戶模式下的時間百分比。
%sys:表示CPU處在系統模式下的時間百分比。
%iowait:表示CPU等待輸入輸出完成時間的百分比。
swap?in:即si,表示虛擬內存的頁導入,即從SWAP?DISK交換到RAM。
swap?out:即so,表示虛擬內存的頁導出,即從RAM交換到SWAP?DISK。
總結:
1、linux下性能分析工具還有很多,例如:uptime可以檢查CPU的平均負載,free可以查看系統內存的使用狀況,ps、top可以配合監控系統的進程運行狀態,netstat可以監測網絡流量狀況等等。
2、系統性能優化是個涉及面廣、繁瑣、長久的工作,尋找出現性能問題的根源往往是最難的部分,一旦找到出現問題的原因,性能問題也就迎刃而解。因此,解決問題的思路得非常重要。例如,linux系統下的一個網站系統,用戶反映,網站訪問速度很慢,有時無法訪問。針對這個問題,第一步要做的是檢測網絡,可以通過ping命令檢查網站的域名解析是否正常,同時,ping服務器地址的延時是否過大等等,通過這種方式,首先排除網絡可能出現的問題;如果網絡沒有問題,接著進入第二步,對linux系統的內存使用狀況進行檢查,因為網站響應速度慢,一般跟內存關聯比較大,通過free、vmstat等命令判斷內存資源是否緊缺,如果內存資源不存在問題,進入第三步,檢查系統CPU的負載狀況,可以通過sar、vmstat、top等命令的輸出綜合判斷CPU是否存在過載問題,如果CPU沒有問題,繼續進入第四步,檢查系統的磁盤I/O是否存在瓶頸,可以通過iostat、vmstat等命令檢查磁盤的讀寫性能,如果磁盤讀寫也沒有問題,linux系統自身的性能問題基本排除,最后要做的是檢查程序本身是否存在問題。通過這樣的思路,層層檢測,步步排查,性能問題就“無處藏身”,查找出現性能問題的環節也就變得非常簡單。
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/90357