Sun Identity Manager 8.1 リリースノート

Procedure手順 4: プロファイラオプションの設定

このチュートリアル用には、次のプロファイラオプションを指定します。

  1. 「Mode」タブで「Java and IDM Objects」を選択して、フォーム、Java、規則、ワークフロー、および XPRESS オブジェクトのプロファイルを作成することを指定します。

  2. 「Java Filters」タブを選択します。

    次の手順を使用して、カスタム Java クラス (ここでは org.example.ProfilerTutorialExample) を除くすべての Identity Manager Java クラスを無効にします。

    1. 「New」をクリックすると、新しい空白のフィールドが「Filter」列の下部に表示されます。

    2. 新しいフィールドに com.waveset.* と入力し、「Exclude」ボックスを選択します。

    3. 「New」を再度クリックします。

    4. 新しいフィールドに com.sun.idm.* と入力し、「Exclude」ボックスを選択します。

  3. 「了解」をクリックしてプロファイラを実行します。


    注 –

    プロジェクトではじめてプロファイラを実行する場合や、プロジェクトのクリーンアップ操作を最近実行した場合は、プロファイラの処理の完了に数分かかります。


    処理が完了すると、ログインを求めるプロンプトが表示されます。

  4. パスワード configurator を入力し、「Remember Password」ボックスを選択してから、「了解」をクリックして続行します。

  5. Identity Manager ウィンドウが表示されたらログインします。


    注 –

    通常は、再度 configurator としてログインするのではなく、別のユーザーで Identity Manager にログインするようにしてください。Identity Manager セッションプールで使用できるのは 1 ユーザーにつき 1 つのエントリだけですが、すでに Configurator としてプロファイラにログインしています。複数のエントリを使用すると、セッションプールの表示が壊れ、パフォーマンスの問題をより詳細に調査するためのプロファイリング結果が歪曲される可能性があります。

    ただし、この単純な例では、セッションプールは重要でないので、configurator/configurator としてログインしてかまいません。


  6. Identity Manager で、「サーバータスク」>「タスクの実行」を選択し、ProfilerTutorialWorkflow1 をクリックします。

    チュートリアルが応答するまでに少し時間がかかることがあります。

  7. この時点でスナップショットを作成することもできますが、ここでは結果をリセットし、プロファイラを実行し、プロファイラを再度実行してから、スナップショットを作成します。


    注 –

    スナップショットを作成する前に、すべてのキャッシュの準備が完了したこと、すべての JSP がコンパイルされていることなどを確実にするために、プロファイラを数回実行することが最良の方法です。

    プロファイラを数回実行することで、実際のパフォーマンスの問題に焦点を当てることができます。この方法が推奨されないのは、キャッシュ自体の生成に問題がある場合だけです。


    1. Identity Manager IDE で 「IDM Profiler」ビューに戻ります。「Profiling Results」セクション (または「Controls」セクション) の「Reset Collected Results」アイコン をクリックして、この時点までに収集された結果をすべてリセットします。

    2. Identity Manager で、「サーバータスク」>「タスクの実行」を再度選択し、ProfilerTutorialWorkflow1 をクリックします。

    3. 処理ダイアグラムが表示されたら、Identity Manager IDE に戻り、「Profiling Results」セクションの「Take Snapshot」をクリックします。

  8. Identity Manager IDE でユーザーのスナップショットがダウンロードされ、結果がウィンドウの右側に表示されます。

    この領域が「Call Tree」ビューです。呼び出しツリーの最上部に /idm/task/taskLaunch.jsp が表示され、「Time」列に時間が表示されます。その時間は、要求全体に 6 秒強かかったことを示しています。

  9. /idm/task/taskLaunch.jsp ノードを展開すると、ProfilerTutorialWorkflow1 に 6 秒かかったことがわかります。

  10. ProfilerTutorialWorkflow1 ノードを展開します。activity2 に 4 秒、activity1 に 2 秒かかっています。

  11. activity2 を展開します。

    action1 に 2 秒、action2 に 2 秒かかっています。

  12. action1 を展開すると、<invoke> にも 2 秒かかったことがわかります。

  13. <invoke> をダブルクリックすると、ProfilerTutorialWorkflow1.xml が開き、次の行が強調表示されます。


    <invoke name=’example’ class=’org.example.ProfilerTutorialExample’/>

    ProfilerTutorialExample メソッドの呼び出しに 2 秒かかったことがわかります。


    注 –

    実際には、プロジェクト内のソースではなく、スナップショットに取り込まれた XML ソースを参照しています。スナップショットには必要なものがすべて含まれています。詳細は、「プロファイラがソースを見つけて管理するしくみ」を参照してください。


  14. 「CPU:<date><time>」タブを選択して、スナップショットに戻ります。

  15. <invoke> ノードを展開すると、プロファイラが ProfilerTutorialExample.example() Java メソッドで 2 秒消費したことがわかります。

  16. メソッド名をダブルクリックすると、ProfilerTutorialExample.java ソースが開き、次の行が強調表示されます。


    Thread.sleep(2000);

    ここに問題があります。このメソッドには 2 秒のスレッドスリープが含まれています。

  17. Call Tree に戻ると、2 秒のパスはすべてこのメソッドにつながっていることがわかります。3 つのパスがあり、合計 6 秒になっています。

  18. 「Call Tree」領域の下部にある「Hotspots」タブを選択して、「Hotspots」ビューを開きます。ProfilerTutorialExample.example() の合計セルフタイムは 6 秒になっています。

    「Hotspots」の詳細は、「「スナップショットビュー」の操作」を参照してください。

  19. ProfilerTutorialExample.example() を右クリックし、ポップアップメニューから「Show Back Traces」を選択します。

    領域の下部に、新しい「Back Traces」タブが表示されます。

  20. 「Back Traces」タブで ProfilerTutorialExample.example() ノードを展開すると、このメソッドが 3 箇所から呼び出されたことと、各箇所からの呼び出しに 2 秒かかったことがわかります。

    「Back Traces」の詳細は、「「スナップショットビュー」の操作」を参照してください。

  21. 「Save the snapshot in the project」アイコンをクリックして、スナップショットを保存して閉じます。

    「IDM Profiler」タブの「Saved Snapshot」セクションを確認すると、このスナップショットが表示されるはずです。場合によっては、スクロールダウンする必要があります。

  22. 保存したスナップショットを選択し、「Open」をクリックして再度開きます。


    注 –

    「Save As」ボタンを使用するとスナップショットを外部に保存でき、「Load」ボタンを使用するとプロジェクト外部からスナップショットを読み込むことができます。


  23. スナップショットをふたたび閉じます。