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]>[任意のファイル名]

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

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

このセクションの記事

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