应用CPU占用高,如何定位问题?
找到CPU占用高的线程:假设进程id是115
top -H -p 115
显示如下:
可以看到PID 2539 这个占用的CPU最多。2539到底是进程id,还是线程id呢?什么都不是。不过我们可以通过这个找到对应的线程。
把2539转16进制,是9eb。16进制前缀是0x。是零,不是欧。
用jstack命令找到对应的线程:
jstack 115 | grep '0x9eb' -A 50
从里面找到业务代码,然后着重看这块代码就好了。