Linux-效能分析
阿新 • • 發佈:2018-12-26
top:系統整體效能的評估(抓記憶體快照)
1 linux系統當前時間
2 從開機到目前運行了多久,
3 當前有幾個使用者連線到本臺主機
4 load average: 負載均衡,當三個值相加後除以3結果大於0.6表示需要注意伺服器負擔。
5 Cpu使用率
6 99.8%id,該id是system idle process=處理器空閒時間百分比,越大越好
7 Swap,交換分割槽的值
top例項
a) 根據top命令,發現PID為28555的Java程序佔用CPU高達200%,出現故障。TIME:108 :表示108分鐘
b) ps aux | grep 28555(PID) 命令,可以進一步確定是tomcat程序出現了問題。
ps -mp 28555(PID) -o THREAD,tid,time 找出該程序下的執行緒
c) 其次將執行緒的id轉換為16進位制格式 命令:printf "%x\n" (28802)tid
28802的16進位制格式為7082
d) 最後列印執行緒的堆疊資訊:jstack pid |grep tid(16進位制) -A 30 :
e) 找到有問題的java程式碼,進行業務調整和編碼修改
vmstat:CPU效能的評估
一般vmstat工具的使用是通過兩個數字引數來完成的,第一個引數是取樣的時間間隔數,單位是秒,第二個引數是取樣的次數
vmstat -n 2 3 : 每隔2秒查一條記錄 共查三條
Procs r 列表示執行和等待cpu時間片的程序數,這個值如果長期大於系統CPU的個數,說明CPU不足,需要增加CPU。 b 列表示在等待資源的程序數,比如正在等待I/O、或者記憶體交換等。 cpu us列顯示了使用者程序消耗的CPU時間百分比。 us的值比較高時說明使用者程序消耗的cpu時間多,但是如果長期大於50%,就需要考慮優化程式或演算法。 sy列顯示了核心程序消耗的CPU時間百分比。 Sy的值較高時,說明核心消耗的CPU資源很多。 據經驗,us+sy的參考值為80%,如果us+sy大於 80%說明可能存在CPU資源不足。
iostat:磁碟I/O效能的評估
[[email protected] ~]# iostat -d 2 3
Linux 2.6.9-42.ELsmp (webserver) 12/01/2008 _i686_ (8 CPU)
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 1.87 2.58 114.12 6479462 286537372
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.00 0.00 0.00 0 0
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 1.00 0.00 12.00 0 24
對上面每項的輸出解釋如下:
Blk_read/s表示每秒讀取的資料塊數。
Blk_wrtn/s表示每秒寫入的資料塊數。
Blk_read表示讀取的所有塊數。
Blk_wrtn表示寫入的所有塊數。
可以通過Blk_read/s和Blk_wrtn/s的值對磁碟的讀寫效能有一個基本的瞭解,
如果Blk_wrtn/s值很大,表示磁碟的寫操作很頻繁,可以考慮優化磁碟或者優化程式,
如果Blk_read/s值很大,表示磁碟直接讀取操作很多,可以將讀取的資料放入記憶體中進行操作。
對於這兩個選項的值沒有一個固定的大小,根據系統應用的不同,會有不同的值,
但是有一個規則還是可以遵循的:長期的、超大的資料讀寫,肯定是不正常的,這種情況一定會影響系統性能。
free:記憶體效能的評估
free -m:以兆顯示
[[email protected] ~]# free -m
total used free shared buffers cached
Mem: 8111 7185 926 0 243 6299
-/+ buffers/cache: 643 7468
Swap: 8189 0 8189
一般有這樣一個經驗公式:
應用程式可用記憶體/系統實體記憶體>70%時,表示系統記憶體資源非常充足,不影響系統性能
應用程式可用記憶體/系統實體記憶體20%~70%時,表示系統記憶體資源基本能滿足應用需求,暫時不影響系統性能
應用程式可用記憶體/系統實體記憶體<20%時,表示系統記憶體資源緊缺,需要增加系統記憶體