ladyABC 发表于 2012-08-20 13:19

Linux环境下,如何快速、准确的查看线程池繁忙状态?

RT~~

求各位大侠路过指导:)

ladyABC 发表于 2012-08-20 14:37

没人回,我自己回复了 {:2_167:}

1. 查看进程id
jps
ps -ef | grep java
都可以查看

2. 查看进程里具体哪个线程最屌丝
top -H -p yourpid
例如,查看如下,那么13099最屌丝,并转换为十六进制(0x332b,注意小写)
PID USER      PRNIVIRTRESSHR S %CPU %MEM    TIME+COMMAND                                                                                                                           
13098 admin   16   0 2543m 1.4g21m S0.0 72.8   0:03.35 java                                                                  
13099 admin   16   0 2543m 1.4g21m S0.0 72.8   1:54.93 java                                                                  
13100 admin   16   0 2543m 1.4g21m S0.0 72.8   0:00.06 java                                                                  

3.stack查看线程状态
jstack -l yourpid | less
jstack -l yourpid | grep 0x332b --color=always -A10
其中,各字段的含义,这里有比较ok的介绍:http://www.blogjava.net/jzone/articles/303979.html

4. [备注]thread dump里,有几个ID比较迷惑人,这里注解一下:
1) "tid" is the thread ID the thread have in the JVM (could be a memory address)
2) "nid" is the native thread id (in hex). On some Linux systems this ID maps directly to a process ID (number 13883 (in decimal) in your case).
3) 线程状态的后面,有时候也会多跟一个id,那个是"资源"的id号,在等待对它的获取等。

已经两次了,我自问自答,介个论坛太米有爱了了。。

dyllove98 发表于 2012-08-20 18:07

:)) 呵呵,以前没用过,这样的问题不要在java板块发,你应该去其他人多的板块

ladyABC 发表于 2012-08-20 18:55

回复 3# dyllove98


    啊?亲爱的,求指导,哪个版块银多捏?

_Rayx 发表于 2012-08-20 19:25

你是想查java虚拟机的还是linux系统的?

isaacxu 发表于 2012-08-20 19:31

这个问题还是适合在Java版发的,top -H是使用Java Thread Dumps调试的第一步,先找到影响性能的Pid,然后输入kill -3 <PID>,就可依据log文件初步定位影响性能的代码段。如果启动了Eclipse,输入kill -3 pid后,Eclipse的console会有显示,更具体的放狗搜一下Java Thread Dumps的内容就知道了。

ladyABC 发表于 2012-08-20 20:47

回复 5# _Rayx


    哈,我是想看具体某个进程的:)求深入指导!拜谢!

ladyABC 发表于 2012-08-20 20:50

回复 6# isaacxu


    嗯,比较讨厌的就是连daemon和JVM自身的一些线程都打出来了,好多,好耀眼~~我在YY,有没有一个工具,可以查看全部线程池的繁忙状态,并且也可以查看线程池内线程们繁忙状态的,如果有这样的工具,那碉堡了!

yezj2004 发表于 2012-08-28 21:42

楼主你太好了.........

gangyaocn 发表于 2012-08-30 14:41

多dump几次,比较下看那个thread一直在运行
页: [1]
查看完整版本: Linux环境下,如何快速、准确的查看线程池繁忙状态?