在一次生产环境中,服务器负载报警,SSH登录上看到CPU占用很高。
1.执行top命令,看到进程号为9737的进程持续占用CPU
2.怀疑是否是进程配置的内存不够了,引发了fullGC导致CPU占用高,执行jmap -heap 9737,看到老年代使用率百分之零,不可能引发fullGC
3.所以应该是程序中的某个线程占用CPU高导致的,使用jstack 9737 > ps.txt导出进程的线程信息,执行top shift+h找到占用cpu最高的线程,果然就是9737进程下的线程!
4.将线程号9836转换成16进制266C后在ps.txt文件中查找,找到具体代码,分析解决。