jstack: プロセス内のスレッド状態を取得する方法

ASTERIA Warpのフロー実行中に処理が停止しないような現象が発生した場合、実行状況を確認するためにjstack情報の取得をお願いすることがあります。その際、以下の方法で情報を入手してください。

■jstackによる情報取得方法

1.JDKの導入
Oracle社のサイト等からJDKをダウンロードし、現象の発生するサーバー上にインストールします。

2.FlowSerivceのPIDを特定
jpsコマンドを実行し、FlowServiceのPIDを特定します。
[JDK_INSTALL]/bin/jps.exe -lm
※[JDK_INSTALL]は、JDKのインストールディレクトリの事を示します。
※実行した結果にて、以下のように表示されているプロセスが、FlowServiceのプロセスとなります。
「[PID] com.infoteria.asteria.framework.Main 〜flowservice.ifx」
([PID]の部分に表示される数字が、プロセスIDです)

3.FlowSerivceの状態を取得
jstackコマンドを実行し、FlowServiceの状態をファイルに取得します。
このファイルをご提供ください。
 [JDK_INSTALL]/bin/jstack.exe [PID]>[任意のファイル名]
※[PID]は、jpsコマンドで特定したPIDになります。

※Linux環境の場合はexeの拡張子を外してください。 

なお、Windows環境にてローカルシステムアカウントでASTERIA Warpをサービス起動している場合は、JDKのバージョンやOSなどの状況によっては上記の方法ではPIDを取得できないという事例が報告されています。

Windows環境にてサービス起動している状態下でPID等を取得する方法として以下に一例を記載させて頂きます。Microsoft社のサイトよりツールを導入し、お試しください。(既にJDKは導入済みの前提でのご説明となります)

1.PsExecの導入
下記サイトよりPsToolをダウンロードし、展開したPsExec.exeにPathを通します。
http://technet.microsoft.com/ja-jp/sysinternals/bb897553

2.FlowSerivceのPIDを特定
上記記載のコマンド実行を下記のように変更し、PsExec経由で実行してください。
PsExec.exe -s "[JDK_INSTALL]\bin\jps.exe" -lm

3.FlowSerivceの状態を取得
こちらも2.と同様下記のように変更し、PsExec経由で実行してください。
PsExec.exe -s "[JDK_INSTALL]\bin\jstack.exe" [PID]>[任意のファイル名]

※ユーザーによっては、コマンドプロンプトを管理者モードで起動しないと正常に動作しない場合もあります。

※FlowServiceのPIDを取得する方法については以下のFAQも合わせてご参照ください。
FlowServiceのPIDを取得する方法を教えてください

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
    キーワード:
  • フローサービス
  • 停止
  • フロー実行
  • jstack
他にご質問がございましたら、リクエストを送信してください

このセクションの記事

他のキーワードで検索する