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

ASTERIAのフロー実行中に処理が停止しないような現象が発生した場合、
実行状況を確認するため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になります。

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

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

 

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
他にご質問がございましたら、リクエストを送信してください

このセクションの記事

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