java程序服务器CPU占用过高问题排查步骤及问题解决
1、cpu过高是那个程序造成的?使用top命令
2、更具PID来查看具体是那个进程下对应的线程造成,及通过进程来确定cpu过高的线程tid。
命令:Ps -mp pid -o THREAD,tid,time
3、因为线程的id都是16进制的需要将10进制转换成16进制,
方法:1、直接使用计算器
方法:2、使用命令
得到结果:得到这三个数的16进制为别为3ec4,3ec5,3ec7
4、jstack查看进程信息然后利用grep来过滤对应的线程id信息。
通过jstack -pid |grep tid 查询/或者直接使用 jstack -pid |grep tid -A60(显示前60行)
从这里能看出,这3个线程目前还处于运行状态的
再通过jstack查看详细点的信息
剩下2个图就省略了