CPU飙升排查与定位


  1. 先启动预先准备好的项目环境,项目端口为:8081

2.请求相关接口等 http://xxxxx:8081/test/test_jvm

  1. 用top命令进行查看 cpu使用情况,如下图,PID为 22928 cpu 飙升到99.7%

  2. 查看PID为22928的具体使用线程,命令为: top -Hp 22928 如下图

  3. top -Hp 22928 具体使用线程的PID为 31250 ,其cpu达到了99.9等

  4. 进行十六进制转换 命令为: printf “ox%x” 31250 如下图 ,得到结果为:ox7a12

  5. 通过jstack 命令查其堆栈情况,命令为: jstack 22928 |grep 0x7a12 -A 5 ,其中22928 是主线程,查看后5行信息等,具体代码就是如下,在TestController 这个类中67行。而在testJava(命名不规范,测试代码)方法中,有while死循环,不断地启动线程导致飙升。这样就定位到具体代码行中,这只是单个jar,在linux物理机上操作,生产环境上下使用k8s排查思路大致相同。


文章作者: coderpwh
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 coderpwh !
  目录