- PR -

WebLogicでスレッドダンプの出力方法

投票結果総投票数:5
WebLogic 5 100.00%
  • 投票は恣意的に行われます。統計的な調査と異なり、投票データの正確性や標本の代表性は保証されません。
  • 投票結果の正当性や公平性について、@ITは一切保証も関与もいたしません。
投稿者投稿内容
かず
会議室デビュー日: 2005/09/05
投稿数: 6
投稿日時: 2005-09-05 10:55
WebLogicの障害調査のためにスレッドダンプを取得しようと思っております。
ただWindowsのサービスとして動作しているため、スレッドダンプを取得できません。
(サービスでない場合は、取得できます。)
何かご存知の方がいましたら、教えていただきたいと思います。

尚、私は以下の事を試しましたが、取得できませんでした。

1.WebLogicのサービス登録時(installService.cmd) に、
"-Dweblogic.Stdout=D:\StdOut.txt -Dweblogic.Stdouterr=D:\StdOutErr.txt"
 を指定して、標準出力をログへ出力するように設定


2.WebLogic起動後に以下のコマンドを実行する
 2-1.java weblogic.Admin -url localhost:7001
-username XXX -password XXX THREAD_DUMP
--->"サーバの標準出力 (デフォルトでは、サーバが実行されているシェル)
      にスレッド ダンプが出力されました。"と画面へ出力されるが
      D:\StdOut.txt には何も出力されない

2-2.beasvc -dump -svcname:"beasvc mydomain_myserver"
--->"Interrogating service beasvc mydomain_myserver"と画面へ
      出力されるが、D:\StdOut.txt には何も出力されない

参考URL)
http://edocs.beasys.co.jp/e-docs/wls/docs81/adminguide/winservice.html

環境)
OS:Windows 2000 Pro
WebLogic:WebLogic 8.1SP1
JDK:1.4.1
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-09-05 11:29
-Dweblogic.Stdout/err オプションでは Java アプリケーションレベルで出力先を指定するものです。
恐らく System.setOut/setErr を使っているのでスレッドダンプなどアプリケーションより低いレベルで出力されるものは記録されません。
Windows サービスとして登録していない場合もこのオプションで指定したファイルには同じくスレッドダンプは記録されないのではないでしょうか?

Windows サービスに登録している場合、プロセスレベルで記録されるメッセージを落とすには -log オプションを指定します。
http://edocs.beasys.co.jp/e-docs/wls/docs81/adminguide/winservice.html#RedirectingStandardOutput
これでコマンドライン起動時に[ > ログファイル名 2>&1] としたのと同等に、スレッドダンプを含む全ての標準出力、標準エラー出力が記録されます。

[ メッセージ編集済み 編集者: インギ 編集日時 2005-09-05 11:39 ]
かず
会議室デビュー日: 2005/09/05
投稿数: 6
投稿日時: 2005-09-05 11:44
返答ありがとうございます。
>-Dweblogic.Stdout/err オプションでは Java アプリケーションレベルで出力先
>を指定するものです。
>恐らく System.setOut/setErr を使っているのでアプリケーションよりスレッド
>ダンプなど低いレベルで出力されるものは記録されません。
しりませんでした。ありがとうございます。

>Windows サービスとして登録していない場合も同じくスレッドダンプは記録され
>ないのではないでしょうか?
Windows サービスとして登録していない場合は、スレッドダンプは記録されます。


>Windows サービスに登録している場合、プロセスレベルで記録されるメッセージ
>を落とすには -log オプションを指定します
これですが、-logオプションを指定した場合、サービス起動時にエラーが
発生し、WebLogic自体が起動されないのです。起動ログを取得しましたが、
なぜエラーになったのかエラーは一切記録されないのです。
そこで、-Dweblogic.Stdout/err を使った方法を利用しておりました。
言葉足らずで申し訳ございませんでした。

インギさんは、-logオプションでの起動は、可能なんですね。
-logオプションで起動できないのが問題という事がわかってきました。
ありがとうございます。

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-09-05 11:51
>Windows サービスとして登録していない場合は、スレッドダンプは記録されます。
あら、そうなんですか?それはファイルに書き出されるのではなくてDOSプロンプトに表示されるという意味でしょうか?

>これですが、-logオプションを指定した場合、サービス起動時にエラーが
>発生し、WebLogic自体が起動されないのです。起動ログを取得しましたが、
なるほど。イベントログに何かエラーメッセージは記録されていませんか?
かず
会議室デビュー日: 2005/09/05
投稿数: 6
投稿日時: 2005-09-05 12:05
>>Windows サービスとして登録していない場合は、スレッドダンプは記録されます。
>あら、そうなんですか?それはファイルに書き出されるのではなくてDOSプロンプ
>トに表示されるという意味でしょうか?
はい、そのとおりです。


>>これですが、-logオプションを指定した場合、サービス起動時にエラーが
>>発生し、WebLogic自体が起動されないのです。起動ログを取得しましたが、
>なるほど。イベントログに何かエラーメッセージは記録されていませんか?
イベントログには、以下のようなメッセージが出力されておりますが、
あまり重要なメッセージは出力されておりませんでした。
イベントログ内容)
"beasvc mydomain_myserver サービスは不正に終了しました。これは 2
回発生しています。次の修正動作が 0 ミリ秒以内に行われます: 何も
しない"
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-09-05 12:13
うーん、そのイベントログでは確かになんだかわかりませんね。
サポート窓口に問い合わせてみてはいかがでしょう。
あと、最新のサービスパックに付属している beasvc.exe を適用するのも手です。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-09-05 14:02
-debug を使用して、コマンドラインから Windowsサービスの設定を利用して起動した場合はどうでしょう?
http://edocs.beasys.co.jp/e-docs/wls/docs81/adminguide/winservice.html#1188201
設定に不具合などあればなにかエラーメッセージがでるかもしれません。
かず
会議室デビュー日: 2005/09/05
投稿数: 6
投稿日時: 2005-09-05 14:21
ありがとうございます。
試してみたいと思います。

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