Oracle Waveset 8.1.1 System Administrator's Guide

Tutorial: Troubleshooting Performance Problems

Waveset provides a tutorial (profiler-tutorial.zip) to help you learn how to use the Profiler to troubleshoot forms, Java rules, workflows, and XPRESS.

Use the following steps to complete the tutorial.

ProcedureStep 1: Create an Waveset Project

  1. Select File -> New Project.

  2. When the New Project wizard displays, specify the following, and then click Next:

    1. In the Categories list, select Web to indicate what type of project you are creating.

    2. In the Projects list, select Waveset Project.


      Note –

      You must create a regular Waveset project for a fully featured development environment. Do not select the Waveset Project (Remote) option.


  3. Complete the following fields on the Name and Location panel, and then click Next:

    • Project Name: Enter Idm80 as the project name.

    • Project Location: Use the default location or specify a different location.

    • Project Folder: Use the default folder or specify a different folder.

  4. When the Waveset WAR File Location panel displays, enter the location of the Waveset 8.1.1 war file. Typically, unzipping this file creates an idm.war file in the same directory.

  5. Click Next to continue to the Repository Setup panel.

    You should not have to change the default settings on this panel, just click Finish. When you see the BUILD SUCCESSFUL message in the Waveset IDE Output window, you can extract the Profiler tutorial files. See Step 2: Unzip the Profiler Tutorial for instructions.

ProcedureStep 2: Unzip the Profiler Tutorial

  1. Unzip profiler-tutorial.zip in the project root. The extracted files include:

    <project root>/custom/WEB-INF/config/ProfilerTutorial1.xml
    <project root>/custom/WEB-INF/config/ProfilerTutorial2.xml
    <project root>/src/org/example/ProfilerTutorialExample.java
    <project root>/PROFILER_TUTORIAL_README.txt
  2. Start the Profiler. Proceed to Step 3: Start the Profiler.

ProcedureStep 3: Start the Profiler

  1. Use the instructions provided in Before You Begin to increase the memory for your server and Netbeans JVM.

  2. Use any of the methods described in Starting the Profiler to start the Profiler.

  3. When the Profiler Options dialog displays, you can specify profiling options.

  4. Continue to Step 4: Set the Profiler Options


    Note –

    For detailed information about all of the different Profiler options, see Specifying the Profiler Options.


ProcedureStep 4: Set the Profiler Options

For the purposes of this tutorial, specify the following Profiler options:

  1. On the Mode tab, select Java and IDM Objects to profile form, Java, rule, workflow, and XPRESS objects.

  2. Select the Java Filters tab.

    Use the following steps to disable all Waveset Java classes except your custom Java classes (in this case, org.example.ProfilerTutorialExample):

    1. Click New and a new, blank field appears at the bottom of the Filter column.

    2. Enter com.waveset.* into the new field, and then select the Exclude box.

    3. Click New again.

    4. Enter com.sun.idm.* into the new field, and then select the Exclude box.

  3. Click OK to run the Profiler.


    Note –

    The Profiler takes a few minutes to complete the first time you run it on a project or if you have recently performed a Clean Project action.


    When the Profiler finishes processing, you are prompted to Log In.

  4. Enter the password configurator, select the Remember Password box, and then click OK to continue.

  5. When the Waveset window displays, log in.


    Note –

    Typically, you should log in to Waveset as a different user instead of logging in as configurator again. You are already logged into the Profiler as configurator, and the Waveset session pool only allows one entry per user. Using multiple entries can result in the appearance of a broken session pool and might skew your profiling results for finer-grained performance problems.

    However, for this simple example the session pool is of no consequence so you can login as configurator/configurator.


  6. In Waveset, select Server Tasks -> Run Tasks, and then click ProfilerTutorialWorkflow1.

    The tutorial might take a few moments to respond.

  7. Although you could take a snapshot now; you are going to reset your results instead, run the Profiler, run it again, and then take a snapshot.


    Note –

    It is a best practice to run the Profiler a couple of times before taking a snapshot to be sure all the caches are primed, all the JSPs are compiled, and so forth.

    Running the Profiler several times enables you to focus on actual performance problems. The only exception to this practice is if you are having a problem populating the caches themselves.


    1. Return to the IDM Profiler view in the Waveset IDE. Click the Reset Collected Results icon in the Profiling Results section (or in the Controls section) to reset all of the results collected so far.

    2. In Waveset, select Server Tasks -> Run Tasks again, and click ProfilerTutorialWorkflow1.

    3. When the Process Diagram displays, return to the Waveset IDE and click Take Snapshot in the Profiling Results section.

  8. The Waveset IDE downloads your snapshot and displays the results on the right side of the window.

    This area is the Call Tree view. At the top of the Call Tree, you should see a /idm/task/taskLaunch.jsp with a time listed in the Time column. The time should indicate that the entire request took six+ seconds.

  9. Expand the /idm/task/taskLaunch.jsp node, and you can see that ProfilerTutorialWorkflow1 took six seconds.

  10. Expand the ProfilerTutorialWorkflow1 node. Note that activity2 took four seconds and activity1 took two seconds.

  11. Expand activity2.

    Note that action1 took two seconds and action2 took two seconds.

  12. Expand action1 and note that the <invoke> also took two seconds.

  13. Double-click the <invoke> to open ProfilerTutorialWorkflow1.xml and highlight the following line:


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

    You should see that a call to the ProfilerTutorialExample method took two seconds.


    Note –

    You are actually browsing XML source that was captured in the snapshot, rather than source in the project. Snapshots are completely self-contained. (For more information, see How the Profiler Locates and Manages Source.)


  14. Select the CPU:<date><time> tab to return to your snapshot.

  15. Expand the <invoke> node, and note that the Profiler spent two seconds in the Java ProfilerTutorialExample.example() method.

  16. Double-click the method name to open the ProfilerTutorialExample.java source and highlight the following line:


    Thread.sleep(2000);

    There’s the problem! This method contains a two-second thread sleep.

  17. If you return to the Call Tree, you can see that all of the two second paths lead to this method. (You should see three paths; for a total of six seconds.)

  18. Select the Hotspots tab (located at the bottom of the Call Tree area) to open the Hotspots view. Notice that ProfilerTutorialExample.example() has a total self time of six seconds.

    (For more information about Hotspots, see Working with the Snapshot View.)

  19. Right-click ProfilerTutorialExample.example() and select Show Back Traces from the pop-up menu.

    A new Back Traces tab displays at the bottom of the area.

  20. Expand the ProfilerTutorialExample.example() node on the Back Traces tab to see that this method was called from three places, and that the method took two seconds when it was called from each place.

    (For more information about Back Traces, see Working with the Snapshot View.)

  21. Click the Save the snapshot in the project icon to save your snapshot and close it.

    If you check the Saved Snapshots section on the IDM Profiler tab, you should see your snapshot. (You might have to scroll down.)

  22. Select the saved snapshot, and then click Open to re-open it.


    Note –

    You can use the Save As button to save your snapshots externally and use the Load button to load a snapshot from outside your project.


  23. Close the snapshot again.

ProcedureStep 5: Profile a ManualAction Workflow

The next part of this tutorial illustrates how to profile a workflow ManualAction.

  1. In Waveset, select Server Tasks -> Run Tasks, and then click ProfilerTutorialWorkflow2.

    After a few moments, an empty form displays.

  2. Click Save and the process diagram displays.

  3. Select Server Tasks -> Run Tasks again.

  4. Return to the Waveset IDE IDM Profiler view and click the Reset Collected Results icon in the Profiling Results section.

  5. Now click ProfilerTutorialWorkflow2 in Waveset.

  6. When the blank form displays again, click Save.

  7. In the IDM Profiler view, click Take Snapshot.

    After a few seconds, a snapshot should display in the Call Tree area. You should see that /idm/task/workItemEdit.jsp took six+ seconds. (This result corresponds to the manual action in the workflow.)

  8. Expand the /idm/task/workItemEdit.jsp node and note that running all Derivations in the ManualAction form took a total of six seconds.

  9. Expand the Derivation, displayNameForm, variables.dummy, and <block> nodes.

    You should see that the <block> took six seconds and, of that time, the Profiler spent two seconds in each of the three invokes to the ProfilerTutorialExample.example(). method.

  10. You can double-click <block> to view the source.