分析java程序中cpu占用过高的线程
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 服务器接收请求响应特别慢,用top一看,服务端的一个java服务占用cpu1800%多(24核心)。 该服务里面跑了很多线程,于是想找到是谁引起的 首先dump出该进程的所有线程及状态 使用命令 jstack PID 命令打印出CPU占用过高进程的线程栈. jstack -l 20228 > xxx.log 将堆栈信息找出来放到日志信息中 2. 使用top命令找到耗cpu的线程 使用top -H -p PID 命令查看对应进程是哪个线程占用CPU过高. 是不是很震撼,基本上所有的cpu都快满负荷运行了,这些肯定不是正常的java进程 3. 结合堆栈信息查看 进制转换网站: http://tool.oschina.net/hexconvert/ 用来将进程号转换为16进制 20230 --> 4f06 原来是触发了GC,所以请求都无法及时相应了,接下来要做的就是找找是什么触发了GC 参考: http://www.cnblogs.com/skyaccross/archive/2012/12/22/2829000.html 来源: oschina 链接: https://my.oschina.net/u/2499632/blog/688379