线上CPU占用过高排查与解决思路

cpu占用飙高排查步骤

  1. 使用 top 命令查看各个进程占用cpu的情况
    image

  2. 通过top命令查看后,可以查看是哪一个进程占用cpu较高,上图所示的进程为:3349463

  3. 查看当前线程中的进程信息

    ps H -eo pid,tid,%cpu | grep 3349463 ( 其中pid、tid、%cpu为要查看的列名)
    

    image

  4. 通过上图分析,可以查看哪个线程占用cpu高,在进程3348154中的线程3348155占用cpu高
    注意: 上述的线程id(3349464)是一个十进制,我们需要把这个线程id转换为16进制才行,因为通常在日志中展示的都是16进制的线程id名称
    转换方式:在linux中执行如下转换命令,也可自己计算或通过其他方式转换

    printf "%x\n" 3349464 (3349464为10进制线程id)
    

    image

    根据上述转换最终得到十进制线程id为:331bd8

  5. 得到了线程id后可以根据线程 id 找到有问题的线程,进一步定位到问题代码的源码行号信息
    执行命令查看引起问题的具体代码行数

    jstack 3349463 (此处是进程id)
    

    image

    image

posted @ 2023-06-13 17:41  加瓦同学  阅读(143)  评论(0编辑  收藏  举报