开发经验java服务生产环境CPU使用过高解决思路
Posted 叁滴水
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开发经验java服务生产环境CPU使用过高解决思路相关的知识,希望对你有一定的参考价值。
java服务生产环境CPU突然升高,日志查询无果时,可以通过使用jvm的调试工具定位问题。
思路
定位java服务进程——>定位java线程——>定位代码块
1、定位java服务进程
一个服务器可能有多个java服务。通过top
命令可查看是哪个服务cpu使用率较高。记住CPU使用率较高的PID号。
2、定位线程id
每个java服务中有很多线程在执行,通过ps H -eo pid,tid,%cpu --sort=%cpu |grep [PID]
可以定位到哪个线程CPU使用率较高
[root@]# ps H -eo pid,tid,%cpu --sort=%cpu |grep 20443
20443 22263 0.0
20443 20469 0.3
20443 20451 0.4
20443 20466 0.6
20443 20468 0.6
20443 20467 50.0
如上图,看到20467
线程CPU使用率较高,可查看是哪块代码使用较高。
3、定位代码块
通过jstack [PID]
可显示出线程的执行状态如下图,但是乱七八糟,通过20467
转换为16进制
进行搜索。
搜索得到对应的线程信息,可直观的看到代码异常信息。
可通过springboot中一个while循环进行测试。
@GetMapping ("/while")
public void while1(){
log.info ("while!~~~~~~~~~");
while (true){
}
}
以上是关于开发经验java服务生产环境CPU使用过高解决思路的主要内容,如果未能解决你的问题,请参考以下文章