美文网首页
cpu idle过低问题

cpu idle过低问题

作者: 五月花号区块链联盟 | 来源:发表于2019-08-10 20:42 被阅读0次

    工作中,如果机器cpu idle过低,会收到告警

    P2
    主机名: set-xr-xxxx监控项:
    all(#5) cpu.idle < 30 当前值: 0
    排查的步骤如下,

    1. 使用top + 大写P,查看cpu占用过高的进程
      这里往往就是后台java服务,然后要通过进程来排查具体的线程,这时有两种方法
      方法一:

    2. top -H -p [pid] , 这时可以看到该进程下的所有线程,同样与大写P结合可以查看cpu占用过高的线程
      方法二:

    3. ps -mp [pid] -o THREAD,tid,time ,此时也可以看到该进程下的所有线程,其中m代表列出该进程下的所有线程,p代表列出线程占用cpu的时间,o代表格式化输出
      通过以上两种方法可以获取到线程id,以下称为tid

    4. 将tid转为16进制,可以使用以下命令 printf "%xn" [tid],得到的16进制线程id,我们同样称为tid

    5. jstack [pid] | grep tid(16进制) -A 60,从输出中排查公司相关的代码内容,找到问题代码的行数,进行排查
      如果是fullgc导致的,可以进一步dump jvm内存信息进行排查

    6. jmap -dump:format=b,file=dump-all.hprof [pid] #dump全量内存数据,[pid]替换为上一步查找的进程id

    7. jmap -dump:live,format=b,file=dump.hprof [pid] #再次dump存活对象内存数据,注意live参数会触发fullgc,所以本次dump一定要在上一步全量dump之后执行。

    8. 使用eclipse的工具mat打开,进行排查

    相关文章

      网友评论

          本文标题:cpu idle过低问题

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