在工作中经常遇到tomcat占用cpu居高不下,针对这种情况有以下处理办法进行排查。
jps --> 查看java的进程
top -Hp pid --> 根据jps得到的进程号(pid),查看java进程的所有线程,并且可以看到所有线程占用CPU的情况,-H用于显示某个进程的所有线程。
printf "%x\n" 9733 -->将第2步查到占用较高CPU的线程号转换为16进制,以便于jstack查看
jstack pid | grep 2605 --> 2605为第3步9733转换为16进制后的数字,因为jstack显示的线程号是以16进制表示的!
jstack的作用是显示正在运行的所有java线程情况,jstack pid | grep 2605的意思只显示某个java线程的运行信息。通过这种方法,可以将此线程正在运行的方法显示出来,将此方法交给开发即可
本文出自 “激情燃烧的岁月” 博客,请务必保留此出处http://liuzhengwei521.blog.51cto.com/4855442/1925304
原文地址:http://liuzhengwei521.blog.51cto.com/4855442/1925304