-
top找到占用CPU資源的進(jìn)程
top.png -
要查看java程序在做什么事情,用jstack命令dump出java堆棧
jstack-F 19740.png
這個(gè)報(bào)錯(cuò)是因?yàn)閖ava程序運(yùn)行的jdk版本和jstack運(yùn)行的jdk版本不一致
用find / -name java找到j(luò)ava程序運(yùn)行的jdk目錄
運(yùn)行該jdk下的jstack

jstack-F 19740 2.png
發(fā)現(xiàn)還是報(bào)錯(cuò),百度這個(gè)錯(cuò)誤找到解決方法,需要安裝一個(gè)openjdk-debuginfo:
在這個(gè)地址中http://debuginfo.centos.org/7/x86_64/找到對(duì)應(yīng)jdk版本的文件下載安裝
wget http://debuginfo.centos.org/7/x86_64/java-1.8.0-openjdk-debuginfo-1.8.0.121-0.b13.el7_3.x86_64.rpm
rpm -ivh java-1.8.0-openjdk-debuginfo-1.8.0.121-0.b13.el7_3.x86_64.rpm
安裝完成后,再次運(yùn)行,并將輸出的信息保存到文件,方便分析
jstack -F 19740 > ~/19740.txt
top -p pid -H 找到占用CPU的JAVA線程

top-h.png
如果用的是JDK,則需要將獲取的線程ID轉(zhuǎn)換成16進(jìn)制
我這里用的是openjdk,則不需要轉(zhuǎn)換,直接在保存的文件中查找相應(yīng)的線程ID,分析對(duì)應(yīng)的錯(cuò)誤,或者將報(bào)錯(cuò)發(fā)送給開發(fā)人員分析問題

