1、使用命令top查看cpu进程,发现tomcat占用cpu使用率过高
![8e89f6dcc3302cde71532ca7cfca5a9a.png](https://i-blog.csdnimg.cn/blog_migrate/1432ad138550dcf83597ce0d430f21f6.jpeg)
可以看到服务器负载很高,tomcat CPU使用已达到接近300%,内存20%。
2、把进程的栈dump到文件里,以便后面的分析
jstack 22764 > cpu0827.log
3、看看这个进程里面哪些线程在占用cpu
top -p 22764 -H
![06b3ba05436c97c988922eee33cce4a4.png](https://i-blog.csdnimg.cn/blog_migrate/ab28b0275e88f39b506fd5431c092f61.jpeg)
4、查看问题线程堆栈
printf "%x" 22978
59c2
5.在cpu日志里找PID=59c2的线程
![bc19467f290299271586789c5bb5740f.png](https://i-blog.csdnimg.cn/blog_migrate/487b1dce6525d9d886673cc7a1df4324.jpeg)
6.分析原因
看日志,很明显是org.hibernate.internal.util.collections.IdentityMap.concurrentEntries (...)这里"卡住"了。