机器CPU高问题排查

2018-06-29  本文已影响0人  e20d9310ced3
  1. top找到占用CPU资源的进程


    top.png
  2. 要查看java程序在做什么事情,用jstack命令dump出java堆栈


    jstack-F 19740.png

这个报错是因为java程序运行的jdk版本和jstack运行的jdk版本不一致
用find / -name java找到java程序运行的jdk目录
运行该jdk下的jstack


jstack-F 19740 2.png

发现还是报错,百度这个错误找到解决方法,需要安装一个openjdk-debuginfo:
在这个地址中http://debuginfo.centos.org/7/x86_64/找到对应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

安装完成后,再次运行,并将输出的信息保存到文件,方便分析
jstack -F 19740 > ~/19740.txt

top -p pid -H 找到占用CPU的JAVA线程


top-h.png

如果用的是JDK,则需要将获取的线程ID转换成16进制
我这里用的是openjdk,则不需要转换,直接在保存的文件中查找相应的线程ID,分析对应的错误,或者将报错发送给开发人员分析问题

上一篇下一篇

猜你喜欢

热点阅读