CPU使用率过高
在高负载情况下CPU持续使用率高一般没有问题,但是导致任务无法正常调度或者load持续增加就需要重点关注,并且定位具体原因。(一般计算密集型应用 CPU 使用率偏高 load 偏低,IO 密集型相反。)
计算方式

原因分析
- 频繁 FullGC/YongGC
- 代码异常,出现死循环
- 死锁
定位步骤
处理方式
- 登录服务器之后使用top命令,并且输入1按照cpu使用率降序排序获取使用率最高的线程
- perf top -g -p pid查看调用关系(-g开启调用关系分析,-p指定线程号)
- top -Hp pid可以查看某个进程的线程信息( ps mp pid -o THREAD,tid)
- jstack 线程ID 可以查看某个线程的堆栈情况,特别对于hung挂死的线程,可以使用选项-F强制打印dump信息jstack -F pid
- 执行 jstack pid|grep -A 10 pid的16进制,得到线程堆栈信息中1371这个线程所在行的后面10行