简单排查java应用CPU飙高的线程问题
时间:2021-12-02 作者:匿名
1. 获取要查看的进程的ID
ps aux | grep xxx
2. 查看此进程下的线程信息
- top -H -p <pid>
- top -p <pid> 按shift+h
- top -Hp <pid>
3. 查看栈信息
jstack <pid> > stack
- sudo -u tomcat $JAVA_HOME/bin/jstack <pid> > 域名
- sudo vim–>sh–>获取root权限–>su – tomcat–> $JAVA_HOME/bin/jstack
4. 简单分析
- 线程ID为十进制–>十六进制:printf “%x\n” xxx
- 观察占用cpu高的线程ID
- 线程的state
5. other
- 线程状态为“waiting for monitor entry”
- 线程状态为“waiting on condition”
- 如果大量线程在“waiting for monitor entry”
- 如果大量线程在“waiting on condition”