- 先启动预先准备好的项目环境,项目端口为:8081
2.请求相关接口等 http://xxxxx:8081/test/test_jvm
用top命令进行查看 cpu使用情况,如下图,PID为 22928 cpu 飙升到99.7%
查看PID为22928的具体使用线程,命令为: top -Hp 22928 如下图
top -Hp 22928 具体使用线程的PID为 31250 ,其cpu达到了99.9等
进行十六进制转换 命令为: printf “ox%x” 31250 如下图 ,得到结果为:ox7a12
通过jstack 命令查其堆栈情况,命令为: jstack 22928 |grep 0x7a12 -A 5 ,其中22928 是主线程,查看后5行信息等,具体代码就是如下,在TestController 这个类中67行。而在testJava(命名不规范,测试代码)方法中,有while死循环,不断地启动线程导致飙升。这样就定位到具体代码行中,这只是单个jar,在linux物理机上操作,生产环境上下使用k8s排查思路大致相同。