引言
最近项目部门反应有个系统特别卡顿,很多页面都打不开了,开发人员告诉我说最近没有进行代码升级,我登录到对应的服务器上执行了top命令,发现cpu飙升到100%,对于这种问题我们应该快速的定位到问题,否则会影响线上系统的正常作业。
对于造成这种问题的可能原因,迅速的在头脑中闪过四种情况:
1、某个接口响应时间超长,并且可能被频繁调用
2、产生了过大的对象,造成频繁FGC
3、代码出现死循环
4、线程出现死锁
下面是小编的定位问题的步骤:
1)top
2)top -Hp 2848
3)printf "%x" 2925
4)jstack 2848 | grep 0xb6d -C50 --color
第一、执行top命令,结果如下
我们根据top结果发现,有java进程CPU占用超过100%,说明这个进程中的代码出现问题了
第二、执行top -Hp 2848 查看该pid详情
从上面结果,我们基本可以排除产生大对象的情况,因为如果有大对