THREAD: A process is divided into multiple  lite weight process. Each lite weight process is called  thread.
Thread dump provide a snap shot of current active threads. It provide stack trace of all java threads in jvm.
When do we take thread dumps:
There could be scenarios like
1.server hang
2.crash
3. Performance delays.
4. In case of stuck threads.
Different ways to take thread dumps:
Method 1 : unix command
 kill -3 pid
Method 2:  java command
cd /home/oracle/Middleware/
[oracle@OEL6 bin]$ . ./setDomainEnv.sh
[oracle@OEL6 bin]$/home/oracle/jdk1.7.0_21/
Method 3: Console 
Click on MS1 -> Monitoring -> Performance -> Dump Thread Stacks
Method 4: wlst
[oracle@OEL6 bin]$ . ./setDomainEnv.sh
[oracle@OEL6 pavan_domain]$ java weblogic.WLST
wls:/offline> connect('weblogic','weblogic',
wls:/pavan_domain/
wls:/pavan_domain/
dr--   AdminServer
dr--   ms1
dr--   ms2
wls:/pavan_domain/
wls:/pavan_domain/
How to match JVM Thread ID with Linux Process id
[oracle@OEL6 pavan_domain]$ ps -ef | grep -i Dweblogic.Name=ms1
oracle    8296  8244  0 02:20 pts/0    00:00:45 /home/oracle/jdk1.7.0_21/bin/
[oracle@OEL6 pavan_domain]$ top -b -H -p 8296
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 8298 oracle    20   0 1284m 224m 1112 S  2.0 22.7   0:03.61 java
 8313 oracle    20   0 1284m 224m 1112 S  2.0 22.7   0:00.88 java
 8296 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.00 java
 8297 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:04.40 java
 8299 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.01 java
 8300 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.03 java
 8301 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.00 java
 8302 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:03.01 java
 8303 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:03.25 java
 8304 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.00 java
 8305 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:03.93 java
 8306 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.00 java
 8309 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.66 java
 8310 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:10.81 java
 8311 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.00 java
 8312 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:02.77 java
 8314 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:08.24 java
 8315 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.12 java
 8316 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.32 java
 8343 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.00 java
 8345 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.02 java
 8349 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:01.90 java
 8381 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.94 java
 8383 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.04 java
 8386 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.00 java
 8387 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.04 java
 8388 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.00 java
 8389 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.05 java
 8622 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.00 java
 8623 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.00 java
Stuck Thread from thread dump:
"[STUCK] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007fe980d03000 nid=0x20c4 in Object.wait() [0x00007fe98d86a000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x00000000e71abac8> (a weblogic.work.ExecuteThread)
        at java.lang.Object.wait(Object.
        at weblogic.work.ExecuteThread.
        - locked <0x00000000e71abac8> (a weblogic.work.ExecuteThread)
        at weblogic.work.ExecuteThread.
convert nid 0x20c4 to decimal number 8388 and compare against top -b -H -p 8296 out put
 8388 oracle    20   0 1284m 224m 1112 S  0.0 22.7   0:00.00 java
No comments:
Post a Comment