This content has been archived and is no longer being updated. Links may not function; however, this content may be relevant to outdated versions of the product.
LinkedIn
Copied!

Table of Contents

How to detect and remedy the performance impact of Obj-List methods and list view reports

Summary

During the execution of list view and Obj-List reports, the available JVM memory of the server may become very low.  As a result, the system becomes unresponsive, and time-out errors may be seen on the client side. Analysis of verbose garbage collection (GC) logs shows memory usage spike and frequent garbage collection activity.

The PegaRULES log may show one or both of the following errors:

  • Unable to synchronize on Requestor within 120 seconds
  • OutOfMemoryError

Quick Links

Background

Problem Investigation

Troubleshooting Strategy

Additional Resources

Need Further Help?



 

Suggested Approach

Background

Use of sub-optimally configured Rule-Obj-List or Rule-Obj-ListView reports can result in excessive JVM memory utilization and frequent garbage collection activity, which can in turn degrade system performance. Such memory utilization can become an issue when the properties defined in list reports are NOT exposed as columns in the corresponding database table.

An unintended result can be that every object instance in the queried database table is loaded into memory for evaluation when the query executes. This can generate an excessively large memory footprint if the table contains many rows.

Top of Page

Problem Investigation

Use the following tools to discover any Rule-Obj-List or Rule-Obj-ListView reports that are sub-optimally configured:

  • Performance tool (PAL)
  • DBTrace
  • Database Activity Threshold

Top of Page

PAL

  1. Use the PAL performance tool to take PAL readings for the Rule-Obj-List or Rule-Obj-ListView reports.
  1. Monitor the following four Database Access counts on the PAL Detail window:
  • Obj-List requests to the database that required all of the Storage Stream
  • Obj-List requests to the database that required some of the Storage Stream
  • Rows returned from Obj-List requests that required all of the Storage Stream
  • Rows returned from Obj-List requests that required some of the Storage Stream
  1. If any of the above readings are non-zero, the data is being extracted from the storage stream / BLOB column.

For example:

Top of Page

DBTrace

  1. Use the DBTrace performance tool to trace the database interaction for the Rule-Obj-List or Rule-Obj-ListView reports.
  2. Search for any of three text strings in the DBTrace data:
  • Performing list with blob
  • select pzPVStream from
  • select * from
  1. If you find a match, the query is returning the data from the BLOB. Review the preceding DBTrace entries to find the Rule-Obj-List or Rule-Obj-ListView rule being used.

For example:  

Note

Performing list with blob; blob necessary due to following 3 properties: [pyLastSignon pyPosition pyAccessGroup ]

SQL

select pzPVStream from pr_operators where pxObjClass = ? order by pzInsKey

Top of Page

Database Activity Threshold

  1. If you are running V4.2 SP5 or later, configure the Database Activity Threshold to report on the volume of data that can be loaded from the Storage Stream in the database in a single interaction.
  1. Monitor the PegaRULES-ALERT and PegaRULES log files for warnings and errors generated as a result of interactions exceeding the data threshold. The stack trace in the log identifies the Rule-Obj-List or Rule-Obj-ListView rule being used.

Top of Page

Troubleshooting Strategy

The important thing to understand about the performance implications of list View and Obj-List reports is that any time the report must get data from the BLOB rather than from a database column, that has an impact on performance.

Whenever possible, eliminate such BLOB access in heavily or frequently executed reports, by exposing the properties as columns, revising the report columns, or other means. Minimizing such BLOB access in lightly or infrequently executed reports is also recommended.

Top of Page

Lists (Rule-Obj-List)

  • Ensure that the properties used in Obj-List reports are exposed as columns in their respective database tables.
  • Review the properties listed in the SelectionProperty section of Obj-List method parameters.
  • Review the properties defined in the List specified in the Obj-List method parameter.

For example: the PR_OPERATORS table.

The getOperatorList activity uses the Obj-List method to return all operators by work group:

In doing so, it uses a default list rule, which uses three unexposed properties on the PR_OPERATORS table:

  • pyPosition
  • pyAccessGroup
  • pyLastSignon

Top of Page

List Views (Rule-Obj-ListView)

1.  Ensure that the properties used in list view reports are exposed as columns in their respective database tables.

2.  Review the properties listed under the following sections on the List View form:

    • Display Fields tab
      • Show These Fields
    • Content tab
      • Criteria
      • Get These Fields

For example: PR_OPERATORS table.

The following list view report uses three unexposed properties on the PR_OPERATORS table:

  • pyPosition
  • pyAccessGroup
  • pyLastSignon

This can correlated to the DBTrace message:

Performing list with blob; blob necessary due to following 3 properties: [pyLastSignon pyPosition pyAccessGroup ]

Top of Page

Additional Resources

These two documents are available from the System Toolsindex page:

  • Using Performance Tools in Process Commander Version 4.2
  • Using Performance Tools in Process Commander Version 5.1

Top of Page

Need Further Help?

If you have followed this Support Play, but still require additional help, contact Global Customer Support by logging a Support Request

Top of Page

Have a question? Get answers now.

Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.