定位Java应用CPU负载过高

方法一    
1. top查看机器各个进程的cpu使用情况,cpu使用率从大到小排序    
2. top -Hp pid --- -H 查看各个线程资源占用的情况  -p 指定进程号
3. 找到cpu最高的pid,用printf ‘%x\n’ pid 转换为16进制
4. 用jstack 进程id | grep -A 16进制线程id 找到线程信息 (grep -A 显示匹配指定内容及之后的n行)
5. 根据#4打印的线程信息,结合业务分析原因

方法二
arthas thread命令,这个命令会显示所有线程的信息,并且把CPU使用率高的线程排在前面。
也可以使用thread -n 3命令打印出CPU占比最高的前三个线程,这差不多是top -Hp & printf & jstack 三令合一的效果了
1. thread -n 3 命令打印出CPU占比最高的前三个线程
2. thread id,查看线程堆栈

你可能感兴趣的:(java,java,linux,开发语言)