1. 程式人生 > >Linux-效能分析

Linux-效能分析

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   :

 jstack 28555 |grep 7082 -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%時,表示系統記憶體資源緊缺,需要增加系統記憶體

de -h:檢視磁碟剩餘空間(硬碟)