h-oikawa
3/31/2017 - 7:49 AM

From http://time-complexity.blogspot.jp/2013/12/java-process-thread-dump.html From http://d.hatena.ne.jp/Kazuhira/20120623/1340459172

JDKのjstackコマンドを利用してダンプを取る

JDKのディレクトリのjpsコマンドを利用してJavaのプロセスを確認します。

JDKのディレクトリに移動します。

$ cd /usr/local/jdk/bin/
$ ./jps -lv
29840 sun.tools.jps.Jps -Dapplication.home=/usr/local/jdk -Xms8m
17546 org.apache.catalina.startup.Bootstrap -Djava.util.logging.config.file=/home/test/tomcat/conf/logging.properties -Xms2048m -Xmx2048m -XX:MaxPermSize=256m -Dfile.encoding=utf-8 -Dverbose:jni -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/home/test/tomcat/endorsed -Dcatalina.base=/home/test/tomcat -Dcatalina.home=/home/test/tomcat -Djava.io.tmpdir=/home/test/tomcat/temp

JDKのjstackコマンドを利用して、該当のプロセスのダンプを出力します。

$ ./jstack 17546 > /home/test/java_dump.log
$ vi /home/test/java_dump.log

負荷がかかっているスレッドを確認する

Linuxのtopコマンドに「H」オプションつけることでThreadごとのリソース使用率の確認が出来ます。

$ top -H
top - 15:25:55 up 6 days, 21:35,  1 user,  load average: 0.29, 0.24, 0.29
Tasks: 407 total,   1 running, 406 sleeping,   0 stopped,   0 zombie
Cpu(s):  9.4%us,  0.6%sy,  0.0%ni, 89.3%id,  0.4%wa,  0.0%hi,  0.4%si,  0.0%st
Mem:   3145728k total,   557468k used,  2588260k free,        0k buffers
Swap: 11719376k total,      712k used, 11718664k free,  1800000k cached
 
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
16361 test    16   0 1652m 998m  24m S   59 24.7   1:35.09 java
15431 test    16   0 1652m 998m  24m S    8 24.7  12:19.77 java
15432 test    15   0 1652m 998m  24m S    1 24.7  12:14.28 java