故事开始:
线上部署服务3个小时后,收到服务器报警,CPU使用率达到90%。
问题定位:
登录线上服务器后
1.使用top
命令列出正在运行的进程,显示CPU占用率最高的为JAVA进程
2.使用top -Hp pid
找出使用cpu最高的线程。
3.使用printf "%x\n" 线程id
将线程id转成16进制
4.再用jstack pid|grep 线程id
查看线程信息,可以发现是引起cpu增加的语句。
至此,发现此问题中引发cpu增加的原因是GC。
针对gc引发的问题,使用jstat -gcutil pid 5000
查看gc信息,发现总体YGC没有变化,FGC不断增加,分析为JVM配置不合理导致。
后期我们调整了jvm的参数,处理了这个问题。
网友评论