可按照如下步驟進行排查
1拳昌、執(zhí)行top命令,找到cpu占用比較高的進程
2捺氢、打印該進程的堆棧信息(jstack)惜姐,保存到文件中備用
? ? ?jstack 進程ID > high_cpu.txt
3、找到進程中CPU占用比較高的線程胡岔,將線程ID轉(zhuǎn)換為16進制
? ? ? top -p 進程ID -H
4法希、從2中的堆棧信息文件中,找出該線程ID(16進制)對應(yīng)的堆棧信息
top命令:
第一行:基本信息
top - 20:50:42 up 190 days, 10:48, 4 users, load average: 0.24, 0.32, 0.30
0:50:42 up 190 days, 10:48:當前時間和系統(tǒng)運行時間
4 users:當前登錄用戶數(shù)
load average: 0.24, 0.32, 0.30:系統(tǒng)負載靶瘸,三個數(shù)字分別表示1分鐘苫亦、5分鐘、15分鐘前到現(xiàn)在的平均值
第二行:任務(wù)信息
total:進程總數(shù)
running:正在運行的進程數(shù)
sleeping:睡眠狀態(tài)的進程數(shù)
stopped:停止的進程數(shù)
zmobie:僵尸進程數(shù)
第三行:CPU使用情況
us:User Time怨咪,CPU執(zhí)行用戶進程百分比屋剑,包括Nice Time
sy:System Time,CPU在內(nèi)核運行百分比诗眨,包括IRQ和SoftIRQ
ni:Nice Time唉匾,調(diào)整進程優(yōu)先級所用百分比
id:idle Time,系統(tǒng)空閑百分比
wa:Waiting Time匠楚,CPU等待I/O完成所有百分比
hi:Hard IRQ Time巍膘,硬中斷占用的CPU時間百分比
si:Soft IRQ Time,軟中斷占用CPU的時間百分比
st:Steal Time芋簿,虛擬服務(wù)占用
第四行:物理內(nèi)存使用情況
total:總物理內(nèi)存
free:空閑的物理內(nèi)存
used:已使用的內(nèi)存
buff/cache:緩沖區(qū)和緩存占用內(nèi)存的總量
第五行:交換區(qū)使用情況
total:交換區(qū)的總量
free:未使用的量
used:已使用的量
avail Mem:可用的內(nèi)存量
第六行:進程詳細信息
PID:進程ID
USER:進程所有者的用戶名
PR:優(yōu)先級
NI:nice值
VIRT:進程使用的虛擬內(nèi)存總量典徘,單位KB
RES:進程使用的,未被換出的物理內(nèi)存大小益咬,單位KB
SHR:共享內(nèi)存大小逮诲,單位KB
S:進程狀態(tài) (D:不可中斷的睡眠狀態(tài),R:運行幽告,S:睡眠梅鹦,T:跟蹤/停止,Z:僵尸進程)
%CPU:上次更新到現(xiàn)在的CPU時間占比
%MEM:進程使用的物理內(nèi)存百分比
TIME+:進程使用的CPU時間統(tǒng)計冗锁,單位1/100秒
CMMAND:命令名/命令行