码迷,mamicode.com
首页 > 编程语言 > 详细

在LIUNX服务器上找出web项目中占用cpu资源最多的线程的排查方法

时间:2015-12-29 19:16:55      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:

在这里对linux下、sun(oracle) JDK的线程资源占用问题的查找步骤做一个小结;linux环境下,当发现java进程占用CPU资源很高,且又要想更进一步查出哪一个java线程占用了CPU资源时,按照以下步骤进行查找:

第一步:登陆到web服务所在的liunx服务器,利用top命令获取java的cpu使用率

技术分享

第二步:

如上图所示,java的进程id为‘3260‘,接下来用top命令单独对这个进程中的所有线程作监视:top -p 3260 -H

技术分享

第三步:

如上图所示,linux下,所有的java内部线程,其实都对应了一个进程id,也就是说,linux上的sun jvm将java程序中的线程映射为了操作系统进程;我们看到,占用CPU资源最高的那个进程id是‘3740‘,这个进程id对应java线程信息中 的‘nid‘(‘n‘ stands for ‘native‘);

第四步:

要想找到到底是哪段具体的代码占用了如此多的资源,先使用jstack打出当前栈信息到一个文件里, 比如mystack.log:jstack 3260 > mystack.log

技术分享

第五步:

将3740转换成十六进制的数字为e9c,在mystack.log文件中找出nid=oxe9c的线程,然后在该线程中排查代码问题

在LIUNX服务器上找出web项目中占用cpu资源最多的线程的排查方法

标签:

原文地址:http://www.cnblogs.com/shangxiaofei/p/5086639.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!