机器CPU高问题排查

  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,分析对应的错误,或者将报错发送给开发人员分析问题

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,932评论 25 709
  • 今天事情比较多,刚回到家,还没洗澡,因为承诺今天要写简书,所以要做到。 2015年我上了展能,记得十大金句中的其中...
    幸福从光开始阅读 377评论 0 2
  • 壹、我是一只爱吃鸡的黄鼠狼,怎么样怎么样! 凤鸣山,有凤来鸣,算是个不错的地方。这里草木繁盛,常年玉石不断,灵气极...
    大钱小胖阅读 1,076评论 43 20
  • 三无真人阅读 393评论 0 0