1. 查找進(jìn)程
top查看進(jìn)程占用資源情況
明顯看出java的那個(gè)進(jìn)程占用過高cpu.
2.查找線程
使用top -H -p <pid>查看線程占用情況
(或者ps -mp 25147-o THREAD,tid,time\top -Hp pid找到耗時(shí)最高的線程;
或者在top命令之后使用:shift+h 查看哪個(gè)進(jìn)程程消耗最高)
3.查找java的堆棧信息
將線程id轉(zhuǎn)換成十六進(jìn)制
#printf %x 15664
3d30
4.然后再使用jstack查詢線程的堆棧信息
語法:jstack <pid> | grep -a 線程id(十六進(jìn)制)
jstack <pid> | grep -a 3d30
這樣就找出了有問題的代碼了亥贸。
常識(shí):
pid:進(jìn)程id
tid:線程id
1浇垦、top命令:Linux命令∧腥停可以查看實(shí)時(shí)的CPU使用情況。也可以查看最近一段時(shí)間的CPU使用情況甚纲。
2朦前、PS命令:Linux命令介杆。強(qiáng)大的進(jìn)程狀態(tài)監(jiān)控命令韭寸。可以查看進(jìn)程以及進(jìn)程中線程的當(dāng)前CPU使用情況赴背。屬于當(dāng)前狀態(tài)的采樣數(shù)據(jù)晶渠。
3凰荚、jstack:Java提供的命令乱陡。可以查看某個(gè)進(jìn)程的當(dāng)前線程棧運(yùn)行情況。根據(jù)這個(gè)命令的輸出可以定位某個(gè)進(jìn)程的所有線程的當(dāng)前運(yùn)行狀態(tài)积锅、運(yùn)行代碼,以及是否死鎖等等适篙。