本稿では、Linux上で動く既存のJavaアプリケーションをプロファイリングすることを想定しています。このような場合、NetBeans Profilerのリモートプロファイリング機能を利用することができます。
リモートプロファイリング機能を利用するためには、「Remote Pack」というモジュールをインストールする必要があります。これは、プロファイルの精度を上げるために、計測に使われた時間を除くために必要な調整データを収集するための仕組みです。この調整データは、プロファイル対象となる環境ごとに収集する必要があります。
まず以下のダウンロードサイトから、プロファイリング対象となるアプリケーションが動作しているOSに合ったRemote Packを選択します。
「第1回:プロファイラとは」でインストールしたアプリケーションは「Linux(32bit)」で動作させていたので、ここではLinux x86の32ビット版Remote Packである「profiler-server-551-linux-15.zip」を選択し、ダウンロードします。
ダウンロードしたファイルを、サンプルアプリケーションが動作しているLinuxサーバ上の作業ディレクトリに展開し、シェルを実行します。
# unzip profiler-server-551-linux-15.zip -d netbeans-profiler
# cd netbeans-profiler/bin
# ./calibrate.sh
上記のコマンドを実行すると、作業ユーザのホームディレクトリに「.nbprofiler」というディレクトリが作成されます。
次に、アプリケーションサーバのJBoss ASに対して設定を行います。JBoss ASの起動シェルをコピーし、Javaの起動オプションにRemote Packのライブラリへのパスを設定するよう修正します。
# cd /opt/jboss/jboss-4.2.1GA/bin
# cp run.sh run_nbprofiler.sh
# vi run_nbprofiler.sh
JAVA_OPTS=-agentpath:<作業ディレクトリ> /netbeans-profiler/lib/deployed/jdk15/linux/libprofilerinterface.so=<作業ディレクトリ>/netbeans-profiler/lib,5140 $JAVA_OPTS
起動シェルを作成したら、そのシェルを使ってJBoss ASを起動します。
# ./run_nbprofiler.sh -b 0.0.0.0 &
正常に設定が終了していれば、下記のようにプロファイラ接続待ちのメッセージが出力されます。
Profiler Agent: Waiting for connection on port 5140 (Protocol version: 2)
|