cornercorner
FeaturesPluginsDocs & SupportCommunityPartners

ホーム

ローカルまたはリモート JVM への Profiler の接続

Profiler の接続モードによって、ローカルマシンまたはリモートマシンで、すでに実行しているか、起動しようとしているアプリケーションに Profiler を接続できます。これは、実行時間が長いアプリケーションのプロファイルに適しており、特にアプリケーションサーバー上で実行している Web アプリケーションまたはエンタープライズアプリケーション、およびアプリケーションサーバー自体のコードのプロファイルに役立ちます。

プロファイルを開始する前に

プロファイルに使用する Java プラットフォームでは、最初に調整を実行する必要があります。有効な調整データがないと、プロファイルを開始できません。

接続モード

Profiler をアプリケーションに接続する場合、次の接続の種類から選択できます。

  • 動的接続

    Profiler をすでに実行中のローカルアプリケーションに接続する場合に、この方法を使用します。この方法では、変更する JVM 上でアプリケーションが実行していれば、追加のアプリケーションの設定は必要ありません。特別なコマンド行オプションや環境変数も必要ありません。

    動的接続モードでは、次のことが当てはまります。

    • ターゲットアプリケーションは Profiler から起動しません。
    • このモードは、リモートマシン上で、プロファイルを接続および開始するために使用することはできません。リモート接続については、「直接接続」を参照してください。
    • このモードは、JVM 5/6 では機能しません。すでに実行中のアプリケーションに接続する場合は、アプリケーションを、Modified JDK 1.4.2 for Profiling 上で通常起動する場合と全く同じように起動する必要があります。OS のセキュリティー要件を順守するため、アプリケーション JVM と Profiler は同じユーザーが実行する必要があります。
  • 直接接続

    アプリケーション内の Java コードが実行される前の早い時期に、Profiler を接続する場合 (アプリケーションの起動をプロファイルするためなど) に、この方法を使用します。この方法は、リモートマシン上のアプリケーションや JVM 5/6 を使用するアプリケーションをプロファイルする場合に使用する必要があります。

    直接接続モードでは、次のことが当てはまります。

    • このモードは JVM 5/6 で機能します。
    • このモードは、現在リモートマシン上のアプリケーションのプロファイルを接続および起動するための唯一の方法です。リモートマシン上のアプリケーションをプロファイルする場合は、http://profiler.netbeans.org/download/index_ja.html から、リモートマシンプラットフォーム用の Profiler サーバーバンドルをダウンロードできます。

内部のしくみ

実行中のアプリケーションに Profiler を接続する場合、Profiler で、OS シグナルを JVM に送信するコマンドを呼び出します。応答として、JVM は Profiler VM 側ライブラリを読み込み、アクティブ化します。これにより、ツール内からアプリケーションを起動する場合とまったく同じことを実行中のアプリケーションに対して行うことができます。JVM への早期の (「直接」) 接続を使用する場合は、基本的に、ターゲット JVM のコマンド行に同じライブラリとほかのオプションをいくつか指定します。

接続ウィザード

Profiler を初めてアプリケーションに接続する場合、接続ウィザードを使用して、Profiler をそのアプリケーションに接続するときに使用する設定を指定したり、取得したりすることができます。接続ウィザードを使用して、アプリケーションの種類、場所、および接続モードを指定します。設定を変更する場合は、再度接続ウィザードを実行します。

接続ウィザードの使用方法

接続ウィザードは、メインメニューから「主プロジェクトを使用して Profiler を接続」を選択した場合に使用できます。ウィザードを開く前に、「プロファイルタスクの選択」ウィンドウの一番上にあるコンボボックスで、プロジェクトが選択されていることを確認します。

  1. 「プロファイルタスクの選択」ウィンドウの「接続ウィザード」をクリックします。
  2. ターゲットの種類 (およびターゲットが J2EE Web/アプリケーションサーバーの場合はサーバーの種類) を選択して、「次へ」をクリックします。
  3. アプリケーションまたはサーバーの場所を選択して、次の手順を実行し、「次へ」をクリックします。
    • 場所がリモートの場合、ホスト名およびホストの OS を指定します。
    • 場所がローカルの場合、直接接続または動的接続を選択します。動的接続を選択した場合は、次の手順で作業ディレクトリと接続の起動方法を指定する必要があります。




  4. 接続設定を確認し、次のいずれかの手順を実行します。
    • 統合の種類、ターゲット JVM を指定し、統合手順を表示する場合は「次へ」をクリックします。統合手順には、Profiler とアプリケーションの統合方法についての詳細情報が記載されています。初めてプロファイルをアプリケーションに接続する場合は、統合手順を十分に確認し、理解しておくことを推奨します。
    • 統合の種類を指定しないか、または変更する必要がない場合は、「完了」をクリックしてウィザードを終了します。




接続ウィザードを完了すると、接続設定がプロジェクトに関連付けられます。設定を変更する必要がある場合はいつでも接続ウィザードを実行できます。

実行中の JVM に Profiler を接続する方法 (動的接続)

このモードで接続するには、Modified JDK 1.4.2 for Profiling 上でアプリケーションを起動する必要があります。Modified JDK 1.4.2 for Profiling でアプリケーションを起動し、Profiler を接続する方法を次に示します。

  1. Modified JDK 1.4.2 for Profiling 上でのターゲットアプリケーションを起動します。

    注:Web サーバーまたはアプリケーションサーバーを実行している JVM に接続する場合は、「Web/アプリケーションサーバーの統合手順」を参照してください。

    1. Modified JDK 1.4.2 for Profiling を見つけます。

      Modified JDK 1.4.2 for Profiling は userdir > modules > profiler-ea-vm にあります。

      ディレクトリパスは次のようになります。
      /home/johnsmith/.netbeans/5.0/modules/profiler-ea-vm
      (UNIX(R) の場合)
      または
      c:\Documents and Settings\JohnSmith\.netbeans\5.0\modules\profiler-ea-vm
      (Windows の場合)
      (これらの例で、"johnsmith" はユーザーのログイン名に置き換えてください)

    2. ターゲットアプリケーションを起動します。

      通常と同じように、ただし、コマンド行に Profiler JVM の実行可能ファイルのパスを指定して、アプリケーションを起動します。
      >D:\userdir\modules\profiler-ea-vm\jre\bin\java -jar SwingSet2.jar

  2. 接続ウィザードで接続設定を指定します。

    Profiler を初めてアプリケーションに接続する場合は、「接続ウィザード」をクリックすると、接続の初期設定に役立ちます。これらの設定は、Profiler をアプリケーションに接続する際に使用されます。接続設定を既に指定している場合は、手順 3 に進みます。

    1. メインメニューから「主プロジェクトを使用して Profiler を接続」を選択します。
    2. 「プロファイルタスクの選択」ウィンドウの一番上にあるコンボボックスからプロジェクトを選択します。
    3. 接続ウィザードを開いて、アプリケーションの種類と場所についての詳細を指定します。このウィザードで、次の手順を実行します。
      • 場所に「ローカル」を選択します。
      • 接続方法として「動的」を選択します。
      • アプリケーションの作業用ディレクトリを指定します。

        作業ディレクトリとは、ターゲットアプリケーションが起動されたディレクトリを指し、Profiler カスタマイズされた JVM が存在するディレクトリではありません。上の例では、作業ディレクトリは C:\j2sdk1.4.2_06\demo\jfc\SwingSet2 であり、D:\userdir\modules\...\jre\bin ではありません。

      • 起動方法として、PID または Ctrl-Break キーを選択します。

        コマンド行引数またはプロセス ID (PID) によって実行中の VM を区別できる場合は、「PID」を選択します。接続先の VM にコンソールウィンドウがある場合は、「Ctrl+Break を使用」を選択します。

      作業ディレクトリの書き込み権があることを確認します。Profiler はこのディレクトリに特殊な小さなファイルを一時的に配置し、VM が Profiler の通信ライブラリの起動に必要な情報を格納するため、このディレクトリの書き込み権が必要です。

    4. 「完了]をクリックして、接続ウィザードを終了し、「プロファイルタスクの選択」ウィンドウに戻ります。

    これで、設定がプロジェクトに関連付けられました。プロジェクトのプロファイル設定を変更する場合は、再度接続ウィザードを使用します。

  3. プロファイルタスクを指定します。

    使用可能なタスクの一覧から、プロファイルタスクを選択します。この一覧は、IDE 内でアプリケーションをプロファイルする場合に表示される「プロファイルタスクの選択」ウィンドウの一覧と同じです。

  4. Profiler をターゲットアプリケーションに接続します。

    Profiler を接続するには、「プロファイルタスクの選択」ウィンドウの下部にある「接続」をクリックします。動的接続を使用してアプリケーションをプロファイルする場合に、「接続」をクリックすると、次の動作が行われます。

    • 呼び出し方法として「PID」を選択した場合、「接続」をクリックすると、接続処理が完了します。
    • 呼び出し方法として「Ctrl+Break を使用」を選択した場合、「接続」をクリックすると、進行状況を示すダイアログが開きます。ターゲット VM のコンソールウィンドウに移動し、キーボードで、Ctrl-Break キー (Windows の場合) または Ctrl-\ キー (Solaris または Linux の場合) を押します。これによって、Profiler Agent を起動し、接続を開始するように JVM にシグナルが送られます。

    Ctrl-Break キーを押すと、JVM は現在アクティブな Java スレッドとそれらのスタックの一覧を出力し、Profiler Agent を起動できるかどうかをチェックします。指定した作業ディレクトリ名が正しい場合、VM はこのライブラリを起動し、「JFluid:target app manager starting on port ...」と出力して、Profiler の進行状況のダイアログが閉じます。作業ディレクトリ名が正しくない場合は、何も実行されず、アプリケーションが実行され続けるだけです。

  5. Profiler をターゲットアプリケーションから切り離します。

    Profiler をターゲットアプリケーションから切り離すにはメインメニューから「プロファイル」>「切り離す」を選択します。これによって、ターゲット JVM で Profiler コードを非アクティブ化し、接続を終了するコマンドが送られます。コンソールウィンドウに、メッセージ「connection with agent closed」が表示されます (ターゲットアプリケーションにコンソールウィンドウがある場合)。

起動時に JVM に Profiler を接続する方法 (直接接続)

プロファイルするアプリケーションが JVM 5/6 で実行しているか、またはリモートサーバー上にある場合は、この接続モードを使用する必要があります。リモートマシン上のアプリケーションをプロファイルする場合は、http://profiler.netbeans.org/download/index_ja.html から、リモートマシンプラットフォーム用の Profiler サーバーバンドルをダウンロードできます。

Web サーバーまたはアプリケーションサーバーを実行している JVM に接続する場合は、まず「Web/アプリケーションサーバーの統合手順」を参照してください。

実行中のアプリケーションに接続することが、一般に Profiler をターゲットアプリケーションに接続するもっとも便利な方法ですが、時によって、目的にそぐわない場合もあります。この例として、アプリケーションの起動時のきわめて早期に実行される特定のコードをプロファイルする必要があり、しかしアプリケーションを Profiler から直接起動するのが難しい (通常、アプリケーションは大きくて複雑な起動スクリプトを使用して起動されるため) 場合があります。もう 1 つの例として、リモートプロファイルがあります。こうした状況では、直接接続モードを使用して、「起動時に接続」します。これは、Java の従来のプロファイルの多くで使用されていた接続方法です。

  1. ターゲットアプリケーション JVM の起動オプションを変更します。

    ターゲット JVM を起動する前に、ターゲット JVM 内で Profiler のネイティブライブラリ (profilerinterface) を開始するためのパラメータをいくつか Java 起動ツールに追加する必要があります。

    パラメータは、Modified JDK 1.4.2 for Profiling を実行しているか、JVM 5/6 を実行しているかによって、やや異なります。

    Modified JDK 1.4.2 for Profiling の場合、次の手順を実行します。

    1. ネイティブライブラリパスに次のエントリを追加します。

      このエントリは、ネイティブライブラリを格納する、プラットフォーム固有の Profiler モジュールインストールサブディレクトリです。
      ユーザー名が johnsmith の場合、完全なコマンド行は次のようになります。

      • Solaris/SPARC の場合 (これを LD_LIBRARY_PATH 環境変数に追加する必要がある):
        setenv LD_LIBRARY_PATH /home/johnsmith/.netbeans/5.0/lib/deployed/jdk142/solaris-sparc

      • Windows の場合 (これを PATH 環境変数に追加する必要がある):
        set PATH="c:\Documents and Settings\johnsmith\.netbeans\5.0\lib\deployed\jdk142\windows";%PATH%

    2. 次のパラメータを Java 起動ツールのコマンド行に追加します。

      「直接接続」プロファイルモードで、ターゲットのカスタマイズした 1.4.2 JVM を起動するには、次のパラメータをコマンド行に追加する必要があります。
      -Xrunprofilerinterface:~/.netbeans/5.0/lib,5140

      ユーザー名が johnsmith の場合、完全なコマンド行は次のようになります。

      • Solaris/SPARC プラットフォームの場合 (csh または tcsh がシェルであるとする):
        /home/johnsmith/.netbeans/5.0/modules/profiler-ea-vm/jre/bin/java -Xrunprofilerinterface:/home/johnsmith/.netbeans/5.0/lib,5140
        MainClass


      • Windows の場合:
        "c:\Documents and Settings\johnsmith\.netbeans\5.0\modules\profiler-ea-vm\jre\bin\java"
        -Xrunprofilerinterface:"\"c:\Documents and Settings\johnsmith\.netbeans\5.0\lib\"",5140 MainClass


    JVM 5/6 の場合、次の手順を実行します。

    1. 次のパラメータを Java 起動ツールのコマンド行に追加します。

      「直接接続」プロファイルモードで、ターゲットの JVM 5/6 を起動するには、次のパラメータをコマンド行に追加する必要があります。
      -agentpath:~/.netbeans/5.0/lib/deployed/jdk15/solaris-sparc/libprofilerinterface.so=~/.netbeans/5.0/lib,5140

      ユーザー名が johnsmith の場合、完全なコマンド行は次のようになります。

      • Solaris/SPARC プラットフォームの場合 (csh または tcsh がシェルであるとする):
        java
        -agentpath:/home/johnsmith/.netbeans/5.0/lib/deployed/jdk15/solaris-sparc/libprofilerinterface.so=
        /home/johnsmith/.netbeans/5.0/lib,5140
        MainClass


      • Windows の場合:
        java
        -agentpath:"c:\Documents and Settings\johnsmith\.netbeans\5.0\lib\deployed\jdk15\windows\profilerinterface.dll"=
        "\"c:\Documents and Settings\johnsmith\.netbeans\5.0\lib\"",5140 MainClass


    注:Windows で、パスに空白文字が含まれる場合、-Xrunprofilerinterface または -agentpath の引数を二重引用符で囲む必要がある場合があります。

  2. ターゲット JVM を起動します。

    上のオプションで JVM を起動すると、下記の操作を実行するまで、Java アプリケーションが起動しません。

  3. 接続ウィザードで接続設定を指定します。

    Profiler を初めてアプリケーションに接続する場合は、「接続ウィザード」をクリックすると、接続の初期設定に役立ちます。これらの設定は、Profiler をアプリケーションに接続する際に使用されます。接続設定を既に指定している場合は、手順 4 に進みます。

    1. メインメニューから「主プロジェクトを使用して Profiler を接続」を選択します。
    2. 「プロファイルタスクの選択」ウィンドウの一番上にあるコンボボックスからプロジェクトを選択します。
    3. 接続ウィザードを開いて、アプリケーションの種類と場所についての詳細を指定します。このウィザードで、次の手順を実行します。
      • アプリケーションの場所を選択し、次の手順を実行します。
        • 場所がリモートの場合、ホスト名およびホストの OS を指定します。
        • 場所がローカルの場合、直接接続を選択します。
      • 設定を確認して、「次へ」をクリックします。
      • 統合の種類を選択し、「次へ」をクリックします。
      • ターゲット JVM 選択し、「次へ」をクリックします。
      • Profiler を接続するための統合手順を読み、従います。
    4. 「完了」をクリックして接続ウィザードを終了します。

    これで、設定がプロジェクトに関連付けられました。プロジェクトのプロファイル設定を変更する場合は、再度接続ウィザードを使用します。

  4. 実行するプロファイルタスクを指定します。

    使用可能なタスクの一覧から、プロファイルタスクを選択します。この一覧は、IDE 内でアプリケーションをプロファイルする場合に表示される「プロファイルタスクの選択」ウィンドウの一覧と同じです。

  5. Profiler を待機中の JVM に接続します。

    「接続」ボタンをクリックします。これにより、Java アプリケーションが起動し、上で選択したプロファイルタスクの計測が適用されます。

プロファイルタスクの変更

接続を確立し、Profiler をターゲットアプリケーションに接続したら、Profiler 内からアプリケーションを起動した場合と同じように、アプリケーションをプロファイルできます。アプリケーションを停止または再起動することなく、ターゲットアプリケーション上で実行しているプロファイルタスクを変更できます。

Profiler を切り離さずにプロファイルタスクを変更する

  • メインメニューから「プロファイル」>「プロファイルを変更」(Alt-Shift-F2) を選択するか、
    または「Profiler」ウィンドウで「プロファイルを変更」(Modify Profiling) をクリックします。
  • 新しいプロファイルタスクを選択し、プロファイルパラメータを設定します。
  • 「了解」をクリックします。

Profiler は、ターゲットアプリケーションを起動または停止することなく、ターゲットアプリケーションに対する新しい計測を実行します。

 

 

Companion
Projects:
MySQL Database Server   GlassFish Community: an Open Source Application Server   Open Solaris  Open JDK: an Open SourceJDK   Mobile & Embedded Community     Sponsored by 
Sponsored by Sun Microsystems