Skip to content

Instantly share code, notes, and snippets.

@yuga
Last active December 19, 2015 01:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yuga/5874010 to your computer and use it in GitHub Desktop.
Save yuga/5874010 to your computer and use it in GitHub Desktop.
Eclipse Test & Performance Tools Platform Projectのプロファイラの使い方メモ。

Eclipseで使うJava用プロファイラ

Eclipse Test & Performance Tools Platform Project
http://www.eclipse.org/tptp/index.php

以前にYourkit Java Profilerという製品を購入して使ったことがあったけれど、もうだいぶ昔のバージョンになるし、新しいバージョンに更新するにはお金がかかるし、その古いバージョンがリモートのプロセスにアタッチして使うってことができるかどうか調べたことがなかった。AWS上のJavaプロセスにアタッチして、そのプロファイルをとりたかったので、リモートと簡単に接続できるのが必須だったのです。

とりあえずEclipseのサブプロジェクトっぽいEclipse TPTPというのをトライアル。リモートマシンにAgentをインストールしてやる必要があるのだけど、Linux用のパッケージをインストールしたら、中に含まれているソフトウェア構成用のファイルがなぜWindows形式でパスを記述してあって動かないという罠にかかる。Windowsメインで開発してるんですね...

インストール方法

クライアント

  1. ダウンロードページから、All TPTP plugins をダウンロードする。
    http://www.eclipse.org/tptp/home/downloads/
  2. 解凍して、eclipseディレクトリに上書きする

リモートエージェント

  1. ダウンロードページから Agent Controller をダウンロードする。
      http://www.eclipse.org/tptp/home/downloads/

  2. 解凍して、適当なディレクトリに展開する

  3. Windows以外の環境の場合、回答したagentsディレクトリ配下にある agent.xml ファイルのパス情報が   Windows用になっているものがあるので、binディレクトリにある readme.txt を参照しながら修正する。
       - agents/org.eclipse.tptp.JavaTimeCollector/agent.xml
         <= javaコマンドへのパスが気になるが、直さなくてもいいかも
       - agents/org.eclipse.tptp.TimeCollector/agent.xml
         <= いまのバージョンは直ってるかも

  4. bin ディレクトリに移動して、SetConfig.sh を実行して、問い合わせにこたえる。   Network mode以外、基本はデフォルトのままでよい。この場合通信は平文になると思う。

  5. 環境変数 JAVA_PROFILER_HOME にtptpの配置ディレクトリを設定する。   環境変数 LD_LIBRARY_PATH に、bin ディレクトリと lib ディレクトリが含まれるようにする。

  6. プロファイルを取りたいJavaプログラムの実行オプションに以下を追加する。

  -agentlib:JPIBootLoader=JPIAgent:server=enabled;<その他のオプション>   <その他のオプション>はドキュメント参照    例: CPUの処理時間のメソッド単位の詳細を取得したい場合      CGProf:execdetails=true

7. TCPの10002-10006ポートを空ける。


### 使い方
リモートで走らせているプログラムのプロファイルを取得する場合。

1. プロファイル対象のプログラムを起動する
2. リモートエージェントの bin/ACStart.sh を実行し、エージェントを起動する。
3. Eclipseで[Run] > [Profile Configurations] でダイアログを開き、  
  - メニューの [Attach to Agent] で新規作成する。  
  - [Host]タブでHostを追加(10002ポート)し、[Agentタブ]でプロファイル対象のプロセスを選択する。  
  - [Profile]ボタンをクリックして開始する。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment