Webアプリのプロファイリング
WTP & Eclipse Profiler を利用して、Webアプリのプロファイリングをやってみた。
- 動作環境
Webアプリのプロファイリングは、Tomcatプロセス(ターゲットプロセス)、およびそのTomcatプロセスに接続してプロファイル情報を取得するプロセス(リモートプロセス)の2つのプロセスを利用して行う。
Eclipse Profiler のインストール
Eclipse Profiler プラグインのインストール。Eclipse Profiler のサイトからダウンロードしてきて、plugins フォルダに解凍する。
ただし、Ver.0.5.33 は Eclipse 3.1.x で動作しないので、パッチを当てる必要あり。パッチのサイトから profiler_jars.part1〜4.rar をダウンロードして、profiler_trace.jar/profiler_ui.jar を取得。先ほど解凍して得られた ru.nlmk.eclipse.plugins.profiler 内の jar ファイルを上書きする。
こうしておかないと、リモートプロセスの起動時に失敗する。
さらに、ru.nlmk.eclipse.plugins.profiler 内の ProfilerDLL.dll を、JREのインストールフォルダの bin 配下にコピーする。
ターゲットプロセスの設定
さて、いよいよプロファイリングの設定開始。
Eclipse のメニューから「ウィンドウ」→「設定」→「JVMの設定」を開き、以下のようにパラメータを設定する。
- JVMパラメータの追加
- クラスパス
- そのまま(何も設定していない)
- ブートクラスパス
JREの jar ファイルは全ては不要かもしんないけど、rt.jar だけだと、S2を起動したときに以下のようなエラーが発生する。試しに、JREのlib以下の全部の jar をクラスパスに含めたらうまくいったので上のような設定を行っている。面倒くさがりでごめんなさい(-_-;)
Caused by: java.io.UnsupportedEncodingException: SJIS at sun.io.Converters.getConverterClass(Unknown Source) at sun.io.Converters.newConverter(Unknown Source) at sun.io.ByteToCharConverter.getConverter(Unknown Source) at sun.nio.cs.StreamDecoder$ConverterSD.(Unknown Source)
そうしたら、ランチャーを利用してTomcatを起動。Eclipseのデバッグパースペクティブで、Tomcatのスレッドが以下のようになっていたらOK。Profiler Sender Thread が動いているのが確認できる。
ローカル・ホスト上の org.apache.catalina.startup.Bootstrap:3278 スレッド [main] (実行中) スレッド [Profiler Sender Thread] (実行中) スレッド [Thread-1] (実行中) スレッド [ContainerBackgroundProcessor[StandardEngine[Catalina]]] (実行中)
リモートプロセスの設定
次はリモートプロセスの設定。
Eclipse のメニューから「実行」→「構成および実行」と開くと、「Remoto Profiler」という項目があるはず。それを選択して「新規」ボタンを押下すると、新しい構成が作成されるので、以下のように設定する。
その画面で「実行」ボタンを押下すると、Eclipseのデバッグパースペクティブで以下のようなプロセスが起動がる。
Tomcat Profiler [Remote Profiler] 127.0.0.1:6743
プロファイリングの開始
これでプロファイリングを開始できる。
まず、「ウィンドウ」→「パースペクティブを開く」から、「Profiler」を選択して、プロファイル画面を表示させる。その上で、先ほど起動したリモートプロセスをデバッグビューで選択すると・・・プロファイル情報が表示されました!!
IT Proのサイトがリニューアル
名前も IT Pro → ITpro とビミョーに変わっている。
http://itpro.nikkeibp.co.jp/index.html
ITproTechサイトもオープン。ムービー(WMV)で記事の内容が見れたりするらしい。
http://itpro.nikkeibp.co.jp/tech/index.html