好多公司只允许生产服务器部署应用,不允许部署一些监控或查找问题的小插件,不利于运维去定位问题。不过大多数java公司服务器上都会启动jdk里面自带的一些命令,下面就利用jstack排查哪个java进程高耗cpu资源。
1、通过ps -ef|grep java 找到Java应用的进程号
2、jstack -l pid >./pid.log 将该进程当前的线程栈信息打印到pid.log里
3、通过 top -H -p pid 通过top查看是哪个进程耗cpu资源,记录线程号
4、将线程号转换成16进制,然后到pid.log里查找该线程在干什么,结合自己的应用系统查看具体问题