1.進程pid
jsp -l | grep appName
或
ps -ef | grep appName
2.查看cpu
top -c pidps -mp pid-o THREAD,tid,time / top -H -p pid #打印出進程對應的線程id及運行時間timeprintf '%x\n' 線程id
3.查看gc
jstat -gcutil | grep pid 500jstat -class pid
4.查看進程日志
jstack -l pid / jstack -F pidjstack -l pid >> dumpfilejstack pid > stack.logjstack 14760 | grep -a 0x39af -C20 --color
JAVA jstack日志文件中有以下幾種狀態需要關注的:
1.死鎖,Deadlock,線程死鎖;
2.執行中,Runnable,線程執行過程中可能會遇到第三方IO等阻塞或循環,仍需要關注;
3.等待資源, Waiting on condition,線程等待條件,可能是在等待網絡資源響應請求,具體需結合棧信息stacktrace進行分析;
4.等待獲取監視器,Waiting on monitor entry,一般是互斥鎖實現線程同步;
5.條件等待/定時等待,Object.wait() 或 TIMED_WAITING,Object.wait()是讓當前線程阻塞,并出讓當前線程的擁有的Object鎖,直到被持有Object鎖的其它線程調用Object.notify()喚醒才繼續執行
6.停止/停止中:Parked/Parking
5.jmap
jmap -dump:format=b,file=dump.phrof <pid>