1. 程式人生 > >一次cpu標高問題查詢

一次cpu標高問題查詢

簡單總結步驟:
1、通過ps ux 排查哪些程序cpu佔用率高
2、查出最耗CPU執行緒 top -Hp pid
2、通過執行緒ID轉換16進位制,printf “%x\n” 21742
4、追蹤執行緒內部,檢視load過高原因。通過命令:jstack 25245 >>/usr/2檔案,將執行緒堆裡面的資訊全部儲存下來
5、通過轉換的16進位制就可以去“2檔案”裡面查詢對應的執行緒
6、jstack 21711 | grep 54ee
7、通過執行緒ID找出日誌

找出pid(程序ID) top命令

在linux環境下,可以通過top命令檢視各個程序的cpu使用情況,預設按cpu使用率排序

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10378 root 20 0 7694964 1.169g 11668 S 0.7 30.3 0:58.37 java
10120 root 20 0 0 0 0 S 0.3 0.0 0:01.11 kworker/u4:1
10521 root 20 0 24824 1536 1112 R 0.3 0.0 0:00.05 top

通過程序id看執行緒情況
top -Hp 10378 可以檢視該程序下各個執行緒的cpu使用情況,有執行緒的pid

10412 root 20 0 7694964 1.169g 11668 S 0.3 30.3 0:00.08 java
10378 root 20 0 7694964 1.169g 11668 S 0.0 30.3 0:00.00 java
10379 root 20 0 7694964 1.169g 11668 S 0.0 30.3 0:00.86 java
10380 root 20 0 7694964 1.169g 11668 S 0.0 30.3 0:00.35 java
10381 root 20 0 7694964 1.169g 11668 S 0.0 30.3 0:00.34 java
10382 root 20 0 7694964 1.169g 11668 S 0.0 30.3 0:00.36 java
10383 root 20 0 7694964 1.169g 11668 S 0.0 30.3 0:00.05 java
10384 root 20 0 7694964 1.169g 11668 S 0.0 30.3 0:00.05 java
10385 root 20 0 7694964 1.169g 11668 S 0.0 30.3 0:00.00 java
10386 root 20 0 7694964 1.169g 11668 S 0.0 30.3 0:13.93 java
10387 root 20 0 7694964 1.169g 11668 S 0.0 30.3 0:14.65 java
10388 root 20 0 7694964 1.169g 11668 S 0.0 30.3 0:00.00 java
10389 root 20 0 7694964 1.169g 11668 S 0.0 30.3 0:00.76 java
10390 root 20 0 7694964 1.169g 11668 S 0.0 30.3 0:00.00 java
10395 root 20 0 7694964 1.169g 11668 S 0.0 30.3 0:00.53 java
10396 root 20 0 7694964 1.169g 11668 S 0.0 30.3 0:00.01 java
10397 root 20 0 7694964 1.169g 11668 S 0.0 30.3 0:00.00 java
10398 root 20 0 7694964 1.169g 11668 S 0.0 30.3 0:00.15 java
10399 root 20 0 7694964 1.169g 11668 S 0.0 30.3 0:00.08 java

通過執行緒ID轉換16進位制,printf “%x\n” 21742

追蹤執行緒內部,檢視load過高原因。通過命令:jstack 25245 >>/usr/jstack.out檔案,將執行緒堆裡面的資訊全部儲存下來

通過轉換的16進位制就可以去“2檔案”裡面查詢對應的執行緒

jstack 21711 | grep 54ee

通過執行緒ID找出日誌

===================
檢視jvm記憶體狀態
jstat -gcutil pid 1000 20
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 0.00 99.99 82.51 53.11 2409 1.205 10117 7250.393 7251.598
0.00 0.00 83.42 82.55 53.10 2409 1.205 10118 7252.650 7253.855
0.00 0.00 56.06 82.46 53.10 2410 1.205 10120 7254.467 7255.672
0.00 0.00 32.11 82.55 53.10 2411 1.205 10121 7256.673 7257.877
0.00 0.00 99.99 82.55 53.10 2412 1.205 10123 7257.026 7258.231
0.00 0.00 76.00 82.50 53.10 2412 1.205 10124 7259.241 7260.446
引數含義:
S0:Heap上的 Survivor space 0 段已使用空間的百分比
S1:Heap上的 Survivor space 1 段已使用空間的百分比
E: Heap上的 Eden space 段已使用空間的百分比
O: Heap上的 Old space 段已使用空間的百分比
P: Perm space 已使用空間的百分比
YGC:從程式啟動到取樣時發生Young GC的次數
YGCT:Young GC所用的時間(單位秒)
FGC:從程式啟動到取樣時發生Full GC的次數
FGCT:Full GC所用的時間(單位秒)
GCT:用於垃圾回收的總時間(單位秒)