刚接手的服务经常间断性的出现CPU突然爆高的情况,正常情况下java应用线程的CPU利用率在200%左右,但是在出问题的时候利用率接近2000%(部署的服务器为单机24核)。开始由于对项目不太熟悉,所以一直怀疑是流量的问题,但是通过日志观察,问题爆发的时候流量并没有多大波动,显得很正常。最后随着时间的推移,慢慢的用了一些JVM自带的诊断工具来追踪问题,这里整理一下排查思路。
1.首先是top命令观察服务器总体的运行情况。最主要的参数有Cpu,负载(load),内存(Mem)
很明显,通过截图(本截图显示top命令,然后按1键可以看到各核信息)可以看出,java进程异常,服务器负载过高。所以再通过top -p pid -H命令查看该java进程的线程状况,如图(此贴为整理贴ÿ