美文网首页
【2019-08-12】java进程cpu使用率高,定位具体线程

【2019-08-12】java进程cpu使用率高,定位具体线程

作者: 学师大术 | 来源:发表于2019-08-12 10:46 被阅读0次

    问题现象

    cpu使用率高

    分析过程

    1. 使用top命令获取cpu的高的进程编号PID。
      op显示信息,需要关注的相关信息:
    • load average:反映了任务队列的平均长度。如果此值超过了CPU数量,则表示当前CPU数量不足以处理任务,负载过高
    • %us:用户CPU时间百分比。如果此值过高,可能是代码中存在死循环、或是频繁GC等
    • %sy:系统CPU时间百分比。如果此值过高,可能是系统线程竞争激烈,上下文切换过多,应当减少线程数
    • %wa:等待输入输出CPU时间百分比。如果此值过高,说明系统IO速度过慢,CPU大部分时间都在等待IO完成
    • %hi:硬件中断CPU百分比。当硬件中断发生时,CPU会优先去处理,例如网卡收包会产生硬件中断,会优先处理
    • swap used:被使用的swap。内存不住时才会用到,此值过高代表系统因为内存不足而导致频繁的换入、换出操作,这样会影响效率,应增大内存量
    • %CPU:进程使用CPU的百分比
    1. 获取进程中线程信息
    top -H -p PID > /tmp/top.txt
    
    1. 获取进程信息
     jstack PID > /tmp/jstack.txt
    
    1. 将线程tid转化成16进制
    printf "0x%x\n" tid
    
    1. 将16进制的信息在jstack.txt匹配找到对应的线程。

    相关文章

      网友评论

          本文标题:【2019-08-12】java进程cpu使用率高,定位具体线程

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