推荐一款神器,助你秒级定位线上问题!

背景

经常做后端服务开发的同学,或多或少都遇到过 CPU 负载特别高的问题。

尤其是在周末或大半夜,突然群里有人反馈线上机器负载特别高,不熟悉定位流程和思路的同学可能登上服务器一通手忙脚乱,定位过程百转千回。

对此,也有不少同学曾经整理过相关流程或方法论,类似把大象放进冰箱要几步

传统的方案一般是4步

  1. 1. top oder by with P:1040 // 首先按进程负载排序找到  axLoad(pid)
  2. 2. top -Hp 进程PID:1073    // 找到相关负载 线程PID
  3. 3. printf “0x%x\n”线程PID: 0x431  // 将线程PID转换为 16进制,为后面查找 jstack 日志做准备
  4. 4. jstack  进程PID | vim +/十六进制线程PID -        // 例如:jstack 1040|vim +/0x431 - 

但是对于线上问题定位来说,分秒必争,上面的 4 步还是太繁琐耗时了,有没有可能封装成为一个工具,在有问题的时候一键定位,秒级找到有问题的代码行呢?

当然可以!

工具链的成熟与否不仅体现了一个开发者的运维能力,也体现了开发者的效率意识。

淘宝的oldratlee 同学就将上面的流程封装为了一个工具:

show-busy-java-threads.sh

https://github.com/oldratlee/useful-scripts

可以很方便的定位线上的这类问题,下面我会举两个例子来看实际的效果。

快速安装使用:

  1. source <(curl -fsSL https://raw.githubusercontent.com/oldratlee/useful-scripts/master/test-cases/self-installer.sh)
     
     
     
     
     
    参考:https://blog.csdn.net/qq_42046105/article/details/115343601
     
posted @ 2021-05-25 00:07  逍遥游jJ2EE  阅读(89)  评论(0编辑  收藏  举报