- PR -

JAVA スレッドダンプの取得方法

投稿者投稿内容
YOKOCHIN
会議室デビュー日: 2007/09/26
投稿数: 7
投稿日時: 2007-09-26 11:30
こんにちわ。

[環境]
Vine Linux 3.2
jdk1.5.0_11
Apache 2.2.3
Tomcat 5.5

システムに障害がおき、
http://yusuke.homeip.net/diary/2006/09/21/1158846052527.html
を参考にJAVAのスレッドダンプを取得しようとしております。
ですが、ダンプが??な内容(javaと入力し実行した時のコマンド説明のようなもの)
が出力されて困っております。
ご教授願いします。

[操作方法]
# java > console.log
# pstree -p | grep java
|-java(26672)---java(26673)-+-java(26674)
| |-java(26675)
| |-java(26676)
| |-java(26677)
| |-java(26678)
| |-java(26679)
| |-java(26680)
| |-java(26682)
| |-java(26683)
| |-java(26684)
| |-java(26685)
| |-java(26686)
| |-java(26687)
| |-java(26688)
| |-java(26689)
| |-java(26690)
| |-java(26691)
| |-java(26692)
| |-java(26693)
| |-java(26694)
| |-java(26695)
| |-java(26696)
| |-java(26697)
| |-java(26698)
| |-java(26699)
| |-java(26700)
| |-java(26701)
| |-java(26702)
| |-java(26703)
| |-java(26704)
| |-java(26705)
| |-java(26706)
| |-java(26707)
| |-java(26708)
| |-java(26709)
| |-java(26710)
| |-java(26711)
| |-java(26712)
| `-java(26713)
# kill -3 26672

[console.log]
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)

where options include:
-d32 use a 32-bit data model if available

-d64 use a 64-bit data model if available
-client to select the "client" VM
-server to select the "server" VM
-hotspot is a synonym for the "client" VM [deprecated]
The default VM is client.

-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
A : separated list of directories, JAR archives,
and ZIP archives to search for class files.
-D<name>=<value>
set a system property
-verbose[:class|gc|jni]
enable verbose output
-version print product version and exit
-version:<value>
require the specified version to run
-showversion print product version and continue
-jre-restrict-search | -jre-no-restrict-search
include/exclude user private JREs in the version search
-? -help print this help message
-X print help on non-standard options
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
enable assertions
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
disable assertions
-esa | -enablesystemassertions
enable system assertions
-dsa | -disablesystemassertions
disable system assertions
-agentlib:<libname>[=<options>]
load native agent library <libname>, e.g. -agentlib:hprof
see also, -agentlib:jdwp=help and -agentlib:hprof=help
-agentpath:<pathname>[=<options>]
load native agent library by full pathname
-javaagent:<jarpath>[=<options>]
load Java programming language agent, see java.lang.instrument
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-09-26 14:36
# java > console.log
としたら java コマンドの説明しか記録されませんよね?

実際に起動してある Tomcat の java プロセスの pid を指定して kill コマンドを実行しましょう。
カーニー
ぬし
会議室デビュー日: 2003/09/04
投稿数: 358
お住まい・勤務地: 東京
投稿日時: 2007-09-26 15:09
見るファイルがちゃいまっせ。
ダンプを取りたいJavaプログラムって、Tomcatですよね?

引用:

YOKOCHINさんの書き込み (2007-09-26 11:30) より:
# java > console.log


これは不要。

引用:

# pstree -p | grep java
|-java(26672)---java(26673)-+-java(26674)
| |-java(26675)
... ...
| `-java(26713)
# kill -3 26672


これはOK。

ダンプが出力されるファイルは、$CATALINA_HOME/logs/catalina.outです。
YOKOCHIN
会議室デビュー日: 2007/09/26
投稿数: 7
投稿日時: 2007-09-26 16:24
返信ありがとうございます。

インギさん
># java > console.log
>としたら java コマンドの説明しか記録されませんよね?。
java(プロセス)をkillしたらconsole.logにスレッドダンプが出力されると勘違いをしていました。
まだまだ勉強不足ですね。。。


カーニーさん
>ダンプを取りたいJavaプログラムって、Tomcatですよね?
はい。TOMCATです。

>ダンプが出力されるファイルは、$CATALINA_HOME/logs/catalina.outです。
当初、別のホームページを参照しcatalina.outを確認していたのですが、
killに対してのダンプは何も出力されていなかったのです。
再度、プロセスを確認しkillしましたがやはり何もでないです。

一つ気になっているのがpstree -p | grep javaで表示される親・子PIDの中に
障害となっているスレッドのPIDが無い事です。←apache statusのPID確認
ちなみにapache statusで見たPIDをkillしてもcatalina.outには何も出力されません。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-09-26 18:22
>障害となっているスレッドのPIDが無い事です。←apache statusのPID確認
apache status の PID って何でしたっけ?
Tomcat 内の障害であれば apache 自体は関係ないのでは?
YOKOCHIN
会議室デビュー日: 2007/09/26
投稿数: 7
投稿日時: 2007-09-26 22:55
インギさん

>apache status の PID って何でしたっけ?
こんな感じです。
  ↓↓↓
Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request
0-1 1728 0/1005/1005 W 0.55 0 0 0.0 2.65 2.65 IPアドレス サーバ名 GET /server-status?refresh=1 HTTP/1.1
1-1 1729 0/1000/1000 _ 0.62 3 0 0.0 2.05 2.05 IPアドレス サーバ名 GET /favicon.ico HTTP/1.1

>Tomcat 内の障害であれば apache 自体は関係ないのでは?
たしかにTomcatの障害を調べるのにapacheを調べても意味がないですね。
勉強になります。
YOKOCHIN
会議室デビュー日: 2007/09/26
投稿数: 7
投稿日時: 2007-09-27 10:54
# pstree -p | grep java
|-java(26672)---java(26673)-+-java(26674)
| |-java(26675)
  (省略)
| `-java(26713)
# kill -3 26672
# CATALINA_HOME/bin/shutdown.sh

でスレッドダンプを出力できました。
ありがとうございました。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-09-28 13:17
当初の方法で取得できていたということでしょうかね?

シャットダウンする必要はないと思います。

スキルアップ/キャリアアップ(JOB@IT)