linux查看某个进程CPU消耗较高的具体线程或程序的方法
目前我们的监控,可以发现消耗较高CPU的进程(阀值为3个CPU),通过监控我们可以找到消耗较高CPU的进程号;
通过进程号pid,我们在linux上可以通过top –H –p <pid>命令,显示该进程中每个线程的CPU资源消耗情况。
然后通过threadump命令,可以打印出某个应用JVM中某时刻所有线程的调用情况,通过线程号我们就可以对应找到线程调用的程序了。
另:
使用jrcmd命令也可以进行threadump和进程执行线程情况的查看,但该命令为jrockit 5.0 新带的命令,在wls81用户下,我们没有执行权限,但可以联系中间件帮忙执行。
1. 进入到jrockit/bin目录下
2. 打./jrcmd 回车,会看到当前所有在执行中的java进程的PID号
3. 打./jrcmd [PID] help 回车,会看到指定java进程支持的操作
4. 打./jrcmd [PID] print_threads > xxxFile,可以把当前java进程中的所有线程堆栈轨迹打印到指定文件中
示例:
[serviceop@CNSZ031330 wls]$ top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+
COMMAND
228961 wls81 15 0 714m 637m 1804 S 755.7 0.2 383:24.53 java
[serviceop@CNSZ031330 wls]$ top -H -p 228961
top - 13:37:01 up 156 days, 16:11, 8 users, load average: 14.24, 13.82, 12.88
Tasks: 140 total, 23 running, 117 sleeping, 0 stopped, 0 zombie
Cpu(s): 25.6%us, 1.6%sy, 0.0%ni, 72.6%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st
Mem: 264120292k total, 217896772k used, 46223520k free, 4547804k buffers
Swap: 3145720k total, 464k used, 3145256k free, 153619224k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+
COMMAND
229077
wls81 15 0 714m 637m 1804 R 32.6 0.2 7:11.79
ExecuteThread:
229093
wls81 15 0 714m 637m 1804 R 32.6 0.2 23:41.47
ExecuteThread:
229073
wls81 15 0 714m 637m 1804 R 32.2 0.2 2:24.30
ExecuteThread:
229076
wls81 15 0 714m 637m 1804 R 32.2 0.2 2:22.75
ExecuteThread:
229078
wls81 15 0 714m 637m 1804 R 32.2 0.2 7:21.38
ExecuteThread:
229082
wls81 15 0 714m 637m 1804 R 32.2 0.2 10:14.74
ExecuteThread:
229084
wls81 15 0 714m 637m 1804 R 32.2 0.2 8:43.72
ExecuteThread:
229085
wls81 15 0 714m 637m 1804 R 32.2 0.2 12:45.62
ExecuteThread:
229087
wls81 15 0 714m 637m 1804 R 32.2 0.2 19:11.79
ExecuteThread:
229089
wls81 15 0 714m 637m 1804 R 32.2 0.2 23:22.67
ExecuteThread:
229075
wls81 15 0 714m 637m 1804 R 31.9 0.2 5:06.52 ExecuteThread:
229088
wls81 15 0 714m 637m 1804 R 31.9 0.2 13:19.55
ExecuteThread:
229090
wls81 15 0 714m 637m 1804 R 31.9 0.2 23:53.55
ExecuteThread:
229092
wls81 15 0 714m 637m 1804 R 31.9 0.2 24:20.10
ExecuteThread:
229094
wls81 15 0 714m 637m 1804 R 31.9 0.2 33:25.41
ExecuteThread:
229095
wls81 15 0 714m 637m 1804 R 31.9 0.2 33:41.20
ExecuteThread:
229096
wls81 15 0 714m 637m 1804 R 31.9 0.2 36:22.72
ExecuteThread:
229081
wls81 15 0 714m 637m 1804 R 31.6 0.2 7:28.80
ExecuteThread:
229083
wls81 15 0 714m 637m 1804 R 31.6 0.2 11:05.48
ExecuteThread:
229086
wls81 15 0 714m 637m 1804 R 31.6 0.2 11:40.36
ExecuteThread:
229091
wls81 15 0 714m 637m 1804 R 31.6 0.2 17:53.92
ExecuteThread:
229097
wls81 15 0 714m 637m 1804 R 31.6 0.2 32:41.28
ExecuteThread:
229079 wls81 15 0 714m 637m 1804 R 31.2 0.2 7:33.44 ExecuteThread:
229080
wls81 15 0 714m 637m 1804 S 1.3 0.2 0:14.13
ExecuteThread:
228963
wls81 15 0 714m 637m 1804 S 0.7 0.2 0:13.44 (GC Main
Thread
229070
wls81 15 0 714m 637m 1804 S 0.7 0.2 0:05.97
ExecuteThread:
229664 wls81 15 0 714m 637m 1804 S 0.7 0.2 0:08.69 pool-1-thread-7
Threadump信息片段:
229083:
"ExecuteThread: '35' for queue: 'weblogic.kernel.Default'" id=44 idx=0xd4 tid=229083 prio=5 alive, daemon
at java/util/HashMap.get(HashMap.java:319)
at com/paic/abbs/biz/service/common/impl/HardCodeServiceImpl.getString(HardCodeServiceImpl.java:115)
at com/paic/abbs/biz/service/util/impl/UtilServicesImpl.isExpected(UtilServicesImpl.java:45)
at com/paic/abbs/biz/service/common/impl/AbbsInternetServiceImpl.policyIssuing(AbbsInternetServiceImpl.java:3156)
at com/paic/abbs/biz/service/common/impl/AbbsInternetServiceImpl.procRequest(AbbsInternetServiceImpl.java:218)
at com/paic/abbs/biz/service/common/impl/AbbsInternetServiceImpl.handleRequest(AbbsInternetServiceImpl.java:122)
at
com/paic/abbs/biz/service/common/impl/AbbsInternetService_gwxgqo_EOImpl.handleRequest(AbbsInternetService_gwxgqo_EOImpl.java:262)
at sun/reflect/GeneratedMethodAccessor287.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;(Unknown Source)
at sun/reflect/DelegatingMethodAccessorImpl.invoke(DelegatingMethodA
linux查看某个进程CPU消耗较高的具体线程或程序的方法的更多相关文章
- Linux下java进程CPU占用率高分析方法
Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...
- (转)Linux下java进程CPU占用率高-分析方法
Linux下java进程CPU占用率高-分析方法 原文:http://itindex.net/detail/47420-linux-java-%E8%BF%9B%E7%A8%8B?utm_source ...
- Linux下java进程CPU占用率高分析方法(一)
Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...
- Linux下java进程CPU占用率高-分析方法
今天登陆同事的一台gateway 开始以为hive环境登陆不了了,仔细一看看了下是因为机器很卡,我每次等几秒没登陆就ctrl+c了,看了下是有个java进程cpu:340.4% mem:14.6% ...
- Linux下java进程CPU占用率高分析方法(二)
1. 通过 top 命令查看当前系统CPU使用情况,定位CPU使用率超过100%的进程ID:2. 通过 ps aux | grep PID 命令进一步确定具体的线程信息:3. 通过 ps -mp pi ...
- Linux下分析某个进程CPU占用率高的原因
Linux下分析某个进程CPU占用率高的原因 通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用 1.top 查到占用cpu高的进程pid 2.查看该pid的线程 ...
- linux ps命令,查看某进程cpu和内存占用率情况, linux ps命令,查看进程cpu和内存占用率排序。 不指定
背景:有时需要单看某个进程的CPU及占用情况,有时需要看整体进程的一个占用情况.一. linux ps命令,查看某进程cpu和内存占用率情况[root@test vhost]# ps auxUSER ...
- Linux下查看内核、CPU、内存及各组件版本的命令和方法
Linux下查看内核.CPU.内存及各组件版本的命令和方法 Linux查看内核版本: uname -a more /etc/*release ...
- linux下进程cpu占用过高问题定位方法
背景 记得前段时间,同事说他们测试环境的服务器cpu使用率一直处于100%,本地又没有什么接口调用,为什么会这样?cpu使用率居高不下,自然是有某些线程一直占用着cpu资源,那又如何查看占用cpu较高 ...
随机推荐
- 【Demo 0004】Android 布局
本章学习要点: 1. 了解Android 常见的四种布局结构; 2. 掌握四种布局及混合布局的使用方法: 3. 掌握布局中定义键值的意义以及参数使用方法 ...
- “新浪UC”的后江湖时代------易名新浪SHOW重出江湖
说到新浪UC,相信很多老网民应该并不陌生,当年QQ放号收费让新浪UC火爆了好一阵子,而随着QQ的崛起,UC也就渐渐退出了即时通信市场,不过,这并不意味着新浪UC退出了历史舞台,因为目前炙手可热 ...
- iebook 发布到网站 独家秘诀
iebook 普通版只能产生exe文件,无法生成web公布的文件需要,因此,我们需要专业版. iebook2011版本并没有破解版,下面是一个iebook2010破解版: http://downloa ...
- POJ1273_Drainage Ditches(网络流)
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 54887 Accepted: 2091 ...
- arch Failed to load module "intel"
arch启动x的时候出现问题困扰我一天了,终于解决掉了. 错误如下: [ 61.086] (II) LoadModule: "intel" [ 61.087] (WW) Warni ...
- [Usaco2008 Dec]Patting Heads
It's Bessie's birthday and time for party games! Bessie has instructed the N (1 <= N <= 100,00 ...
- thinkPHP 模板中的语法知识 详细介绍(十二)
原文:thinkPHP 模板中的语法知识 详细介绍(十二) 本章节:介绍模板中的语法,详细的语法介绍 一.导入CSS和JS文件 ==>记住常量的是大写 1.css link .js sc ...
- [Android阅读代码]圆形旋转菜单CircleMenu
项目名称:圆形旋转菜单CircleMenu 原版项目代码下载 感谢原作者开源
- Shell编程中Shift的用法(转)
位置参数可以用shift命令左移.比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1.$2.$3丢弃,$0不移动.不带参数的shift命令相当于shift 1. 非常 ...
- jvm调优经验分享
当Java程序申请内存,超出VM可分配内纯的时候,VM首先可能会GC,假设GC完还是不够,或者申请的直接超够VM可能有的,就会抛出内 存溢出异常.从VM规范中我们能够得到,一下几种异常. java.l ...