昨天先整理了JVM相关的命令,今天接着上次的问题,遇到了一种情况,测试压测服务,其他接口压测过程中CPU在合理范围内,就只有一个接口在压测过程中CPU上升到90%左右,记录一下排查过程。
可能造成CPU升高的原因有很多,简单分为3大类型,9大场景,如业务类问题,并发类问题,内存类问题,如图:
找出占用cpu最高的堆栈信息
1、先查看哪个进程的CPU最高
top
2、使用命令top -p <pid> ,显示java进程的内存情况,pid是你的java进程号,比如10887
top -p 10887
3、按H,获取每个线程的内存情况