性能分析

vmstat

虛擬內存統計

用法

作爲java程序員需要掌握的 Linux 常用性能分析命令

其中

  • r : 運行和等待 CPU 時間片的進程數。若該值大於系統 CPU 個數,則說明 CPU 不足
  • b : 表示等待資源的進程數
  • swpd : 切換到內存交換區的內存大小(單位 KB)
  • free: 空閒的物理內存的大小,我的機器內存總共2G,剩餘92M。
  • buff: Linux/Unix系統是用來存儲,目錄裏面有什麼內容,權限等的緩存
  • cache:直接用來記憶我們打開的文件,給文件做緩衝,把空閒的物理內存的一部分拿來做文件和目錄的緩存,是爲了提高 程序執行的性能,當程序使用內存時,buffer/cached會很快地被使用
  • si:每秒從磁盤讀入虛擬內存的大小,如果這個值大於0,表示物理內存不夠用或者內存泄露了,要查找耗內存進程解決掉。
  • so:每秒虛擬內存寫入磁盤的大小,如果這個值大於0,同上。
  • bi:塊設備每秒接收的塊數量(讀磁盤)(kb/s)
  • bo:塊設備每秒發送的塊數量(寫磁盤)(kb/s)
  • in:每秒CPU的中斷次數,包括時間中斷
  • cs:每秒上下文切換次數。
  • us:用戶進程消耗 CPU 時間百分比
  • sy:內核進程消耗 CPU 時間百分比,sy 的值較高時,則說明內核消耗的 CPU 資源很多
  • id:空閒 CPU 時間百分比
  • wt:IO 等待 CPU 時間百分比

free

內存使用狀況

作爲java程序員需要掌握的 Linux 常用性能分析命令

load average: 系統 1分鐘,5分鐘,15分鐘的平均負荷

netstat

當前網絡信息

用法

作爲java程序員需要掌握的 Linux 常用性能分析命令

其中

  • -a (all)顯示所有選項,默認不顯示LISTEN相關
  • -t (tcp)僅顯示tcp相關選項
  • -u (udp)僅顯示udp相關選項
  • -n 拒絕顯示別名,能顯示數字的全部轉化成數字
  • -l 僅列出有在 Listen (監聽) 的服務狀態
  • -p 顯示建立相關鏈接的程序名
  • -r 顯示路由信息,路由表
  • -e 顯示擴展信息,例如uid等
  • -s 按各個協議進行統計
  • -c 每隔一個固定時間,執行該netstat命令。

提示:LISTEN和LISTENING的狀態只有用-a或者-l才能看到

top

作爲java程序員需要掌握的 Linux 常用性能分析命令

其中

第一行:

  • 14:36:14 當前系統時間
  • days, 4:43 系統已經運行了2天4小時43分鐘(在這期間沒有重啓過)
  • 1 users 當前有1個用戶登錄系統
  • load average: 0.00, 0.01, 0.05 ,後面的三個數分別是1分鐘、5分鐘、15分鐘的負載情況。load average數據是每隔5秒鐘檢查一次活躍的進程數,然後按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。

第二行:Tasks 任務(進程),

  • 系統現在共有10個進程,其中處於運行中的有2個,108個在休眠(sleep),stoped狀態的有0個,zombie狀態(殭屍)的有0個。

第三行:cpu狀態

  • us 用戶空間佔用CPU的百分比
  • sy 內核空間佔用CPU的百分比
  • ni 改變過優先級的進程佔用CPU的百分比
  • id 空閒CPU百分比
  • wa IO等待佔用CPU的百分比
  • hi 硬中斷(Hardware IRQ)佔用CPU的百分比
  • si 軟中斷(Software Interrupts)佔用CPU的百分比

第四行:內存狀態

  • total 物理內存總量
  • free 空閒內存總量
  • used 使用中的內存總量
  • buff/cache 緩存的內存量

第五行:swap交換分區

  • total 交換區總量
  • free 空閒交換區總量
  • used 使用的交換區總量
  • avail Mem 緩衝的交換區總量

第六行:各進程(任務)的狀態監控

  • PID 進程id
  • USER 進程所有者
  • PR 進程優先級
  • NI nice值。負值表示高優先級,正值表示低優先級
  • VIRT 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
  • RES 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
  • SHR 共享內存大小,單位kb
  • S 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=殭屍進程
  • %CPU 上次更新到現在的CPU時間佔用百分比
  • %MEM 進程使用的物理內存百分比
  • TIME+ 進程使用的CPU時間總計,單位1/100秒
  • COMMAND 進程名稱(命令名/命令行)

監控java線程數:

1

ps -eLf grep java wc -l

監控網絡客戶連接數:

netstat -n grep tcp grep 偵聽端口 wc -l

相關文章