通过jstack查看java线程在忙什么
--1、通过top命令看到java进程pid
[root@m-tms-web1 logs]# top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4431 tms 15 0 10.5g 7.2g 15m S 6.0 61.5 756:15.88 java
--2、把进程pid拆成线程pid
[root@m-tms-web1 logs]# top -Hp 4431
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4460 tms 15 0 10.5g 7.2g 15m S 2.0 61.5 8:39.19 java
4467 tms 16 0 10.5g 7.2g 15m S 2.0 61.5 7:05.12 java
4431 tms 15 0 10.5g 7.2g 15m S 0.0 61.5 0:00.00 java
4432 tms 15 0 10.5g 7.2g 15m S 0.0 61.5 0:00.78 java
4433 tms 16 0 10.5g 7.2g 15m S 0.0 61.5 82:43.21 java
4434 tms 16 0 10.5g 7.2g 15m S 0.0 61.5 82:48.72 java
4435 tms 16 0 10.5g 7.2g 15m S 0.0 61.5 82:48.70 java
4436 tms 16 0 10.5g 7.2g 15m S 0.0 61.5 82:40.70 java
4437 tms 16 0 10.5g 7.2g 15m S 0.0 61.5 82:43.91 java
4438 tms 16 0 10.5g 7.2g 15m S 0.0 61.5 82:40.35 java
--3、通过jstack命令看每个线程id的堆栈信息
[root@m-tms-web1 logs]#jstack -l 4460 > out.txt
[root@m-tms-web1 logs]#jstack -F 4460 > out.txt
-l:看线程的额外信息,包括locked
-F:当进程无返回挂起时,用-F强制返回线程信息
--4、看top查到的4431进程运行了多少时间
[root@m-tms-web1 logs]# ps -p 4431 -o etime
ELAPSED
1-00:36:46