美文网首页
CPU使用超过100%,如何处理?

CPU使用超过100%,如何处理?

作者: Tomy_Jx_Li | 来源:发表于2018-12-23 15:31 被阅读18次

转载:CPU使用超过100%,如何处理?
生产环境有时会遇到java进程CPU使用超过100%,遇到这种问题如何定位问题原因呢?

一般JAVA进程CPU过高主要是程序中出现了死循环,死循环会导致两种情况:第一种,死循环本身不需要耗费太多CPU时间,但会不停创建对象,从而导致java堆内存溢出,但有时候内存快占满了,没有报内存溢出错误,JVM在不停的做FGC,从而出现CPU使用超过100%;第二种情况,就是死循环内有请求资源或者网络连接等操作;

第一种情况需要dump出当前jvm内存对象进行分析,找到导致JVM频繁做FGC的对象,再结合业务代码定位具体代码位置;
第二种情况需要查找占用cpu时间的线程,根据线程代码提示定位具体出问题的代码。

第一种情况分析方法:

  1. 通过top命令查看当前系统CPU使用情况,定位CPU使用率超过100%的进程ID;
  2. jstat -gc pid time 命令查看JVM垃圾回收情况,time参数是统计频率,一般1-3秒都可以,若出现频繁的FGC,则需要进一步分析内存情况;
  3. 用命令jmap -dump:format=b,file=test.dump pid导出当前进程内存信息,然后用MAT工具进行分析,即可找出问题;

第二种情况的分析方法:

  1. 通过top命令查看当前系统CPU使用情况,定位CPU使用率超过100%的进程ID;
  2. 通过ps aux | grep PID命令进一步确定具体的线程信息;
  3. 通过ps -mp pid -o THREAD,tid,time命令显示线程信息列表,然后找到耗时的线程ID;
  4. 将需要的线程ID转换为16进制格式:printf "%x\n" tid
  5. 最后找到线程堆栈信息:jstack pid |grep tid -A 30,其中tid是上面转换后的16进制的线程ID
    这样就找到了最终导致CPU100%的代码了,然后就是对具体的代码分析原因。

相关文章

  • CPU使用超过100%,如何处理?

    转载:CPU使用超过100%,如何处理?生产环境有时会遇到java进程CPU使用超过100%,遇到这种问题如何定位...

  • linux 性能度量参考标准

    CPU 1.cpu使用率。它描述了每个处理器的整体使用率。如果在一段持续时间内cpu的使用率超过80%。可能cpu...

  • linux下用top命令查看cpu利用率超过100%

    linux下用top命令查看cpu利用率超过100%,这里显示的所有的cpu加起来的使用率,说明你的CPU是多核,...

  • kdevtmpfsi挖矿病毒处理

    收到服务器监控发送的警报,CPU使用率达到100%,以下记录问题发现与处理方法 使用top命令查看cpu进程,发现...

  • cpu占用率超过100%?

    描述 使用adb shell top命令查看cpu占用情况时,发现cpu占用超过了100%,最高的一项占用了118...

  • git常用的命令

    简单使用 单个文件超过100m的处理方式 项目比较大

  • CPU 100% 问题

    CPU 100% 问题 线上问题处理 CPU 100% 2017-05-27 背景 由于之前做了个单点登录,导致...

  • centos系统命令使用-top

    1、使用top命令查看发现cpu使用率超过了100%,如下图: 2、我的机器是16核的,经过检查发现top命令显示...

  • Top参数

    top 查看linux下cpu利用率超过100% cpu:100%表示的是所有核加起来所占用的情况 例如4颗核就是...

  • linux中cpu使用100问题

    在linux中top的时候,有时候发现cpu的使用超过100%,其原因是每一个核都拥有100%的量,当为4核的时候...

网友评论

      本文标题:CPU使用超过100%,如何处理?

      本文链接:https://www.haomeiwen.com/subject/xljnkqtx.html