1、top命令查看CPU使用率高的進程
1)load average系統平均負載:在特定時間間隔內運行隊列中(在CPU上運行或者等待運行多少進程)的平均進程數。從左到右:1,5,15分鍾內的平均進程數。
數據是每隔5秒鍾檢查一次活躍的進程數,然后按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。
2)09:43:22 當前系統運行時間
3)
up 系統運行時間為91天
4)users 當前登錄用戶數3
5)Tasks:201 total, 當前進程總數
6)3 running 正在運行的進程數
7)198 sleeping 睡眠的進程數
8)0 stop 停止的進程數
9)0zombie 僵屍進程數
10) Cpu(s): 0.0%us, 用戶空間占用CPU百分比
11) 100.0%sy, 內核空間占用CPU百分比
0.0%ni, 用戶進程空間內改變過優先級的進程占用CPU百分比
0.0%id 空閑CPU
0.0%wa 等待輸入輸出的CPU時間百分比
0.0%hi 硬中斷
0.0%si 軟中斷
0.0%st 實時
備注:(英文解釋)
us: is meaning of "user CPU time"
sy: is meaning of "system CPU time"
ni: is meaning of" nice CPU time"
id: is meaning of "idle"
wa: is meaning of "iowait"
hi:is meaning of "hardware irq"
si : is meaning of "software irq"
st : is meaning of "steal time
12) Mem 8007024 total, (8G) 內存總容量
136924 free, (0.1G) 空閑內存總量
4280872 used, (4G)使用的物理內存總量
3589228 buffers, (3G) 用做內核緩存的內存量
13)Swap 4194300 total (4G) 交換分區總量
3081596 free (3G) 空閑的交換分區總量
1112704 used (1G) 使用的交換分區總量
每個進程的RES或者%MEM:
RES=%MEM*物理內存大小
RES=8.5%*16GB=1.36GB
VIRT指的是虛擬內存,RES指的是實際內存
如果一個進程滿足以下條件則其就會位於運行隊列中:
- 它沒有在等待I/O操作的結果
- 它沒有主動進入等待狀態(也就是沒有調用'wait')
- 沒有被停止(例如:等待終止)
- 它沒有主動進入等待狀態(也就是沒有調用'wait')
- 沒有被停止(例如:等待終止)
正在運行的進程 + 准備好等待運行的進程 在特定時間內(1分鍾,5分鍾,10分鍾)的平均進程數。
一般來講我們觀察五分鍾或者十五分鍾的平均數值。坦白講,如果前一分鍾的負載情況是 1.00,那么仍可以說明認定服務器情況還是正常的。 但是如果十五
分鍾的數值仍然保持在 1.00,那么就值得注意了要考慮是否這應該增加的處理器數量
了
負荷 1.00 說明系統已經沒有剩余的資源了。在實際情況中 ,有
經驗的系統管理員都會將這條線划在 0.70:
“需要進行調查法則”: 如果長期你的系統負載在 0.70 上下,那么你需要在事情變得更糟糕之
前,花些時間了解其原因。
“現在就要修復法則”:1.00 。 如果你的服務器系統負載長期徘徊於 1.00,那么就應該馬上解決
這個問題。否則,你將半夜接到你上司的電話,這可不是件令人愉快的事情。

2、top -H -p 20589 查看進程內各個線程占用的CPU百分比
3、查看線程的十六進制,方便堆棧中查找:printf "%x" pid

監控java線程數:
ps -eLf | grep java | wc -l
ps -eLf | grep java | wc -l
監控網絡客戶連接數:
netstat -n | grep tcp | grep 偵聽端口 | wc -l
netstat -n | grep tcp | grep 偵聽端口 | wc -l
jstack pid>xxx.txt


3、查看io信息
iostat 查看磁盤負載iostat, iostat -x 1 2 意思是刷屏信息顯示2次,時間間隔為1秒
1.rrqm/s:每秒進行merge(合並)的讀操作數目
2.wrqm/s: 每秒進行 merge 的寫操作數目。即 delta(wmerge)/s
3.r/s: 每秒完成的讀 I/O 設備次數。即 delta(rio)/s
4.w/s: 每秒完成的寫 I/O 設備次數。即 delta(wio)/s
5.rsec/s: 每秒讀扇區數。即 delta(rsect)/s
6.wsec/s: 每秒寫扇區數。即 delta(wsect)/s
9.avgrq-sz:平均每次設備I/O操作的數據大小 (扇區)。delta(rsect+wsect)/delta(rio+wio)
11avgqu-sz:平均I/O隊列長度。即 delta(aveq)/s/1000 (因為aveq的單位為毫秒)。
12.await: 平均每次設備I/O操作的等待時間 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
13.svctm: 平均每次設備I/O操作的服務時間 (毫秒)。即 delta(use)/delta(rio+wio)
14.%util: 一秒中有百分之多少的時間用於 I/O 操作,或者說一秒中有多少時間 I/O 隊列是非空的。即
delta(use)/s/1000 (因為use的單位為毫秒)
如果 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁盤
可能存在瓶頸。
%idle(空閑)小於70% IO壓力就較大了,一般讀取速度有較多的wait.
同時可以結合vmstat 查看查看b參數(等待資源的進程數)和wa參數(IO等待所占用的CPU時間的百分比,高過30%時
IO壓力高)
