Back ForwardPerformance checklists

Troubleshooting topics

This topic identifies preventive best practices that can help assure good application performance. Following these practices does not guarantee good performance, but eliminates or reduces the impact of factors that can hurt performance. You can assess performance throughout each development cycle, so that adverse changes can be detected early.

zzz Show all 

zzzScope

The checklists emphasizes performance items specific to Process Commander, as these may be less familiar to your company's IT specialists. However, software systems are not used in isolation. Numerous factors external to the Process Commander application and its databases may affect the overall workload and user's perception of performance.

Diagnosing and remedying unsatisfactory performance often requires technical skills and knowledge unrelated to Process Commander. This task is beyond the scope of this help system. Use Process Commander tools and other tools to isolate the problem, and work with the appropriate specialists to address it. Pegasystems Global Support staff offers assistance and expertise.

zzzClarifying performance goals and expectations

A wide range of hardware, software, configuration, and workload factors can affect performance. Attempting to improve performance without a clear definition of "performance" may not be successful.

For interactive users, performance means primarily response time. Other users are concerned with system throughput, or with throughput of the entire business, including users plus systems, or responses to peak workloads. Changes that improve one dimension of performance may improve — or may hurt — other dimensions of performance.

For Process Commander applications, performance is affected by memory, processors, databases, workstations, and network bandwidth. Use the Performance tool and other vendor tools to identify which resources are busiest (most heavily utilized) in your situation.

zzzMemory  — Performance checklist

These items involve real memory on the server (RAM), virtual memory on the server, and JVM memory.

  1. Does the size of the real memory on the server available for Tomcat (or another application server) meet the minimum 1 gigabyte defined in the Installation Guide, after allowances for other programs also in use?
  2. Are the JVM settings for PermSize and MaxPermSize equal to or more than the minimums? These are described in the Installation Guide, for the SETENV.BAT file (or SETENV.SH file).
  3. Are users trained to exit the Process Commander application by clicking a Log Off link, rather than by closing the Internet Explorer window or simply stopping work and leaving Internet Explorer running?
  4. Is the Pega-RULES agent running regularly? Is the SystemCleaner thread of the Pega-RULES agent enabled?
  5. Are activities in the application that create new clipboard pages (with the Page-New method) implemented to later remove those pages (with the Page-Remove method) when the pages are no longer needed?
  6. For summary view and list view reports that don't use report paging, are the Maximum Value values (on the Content tab) set as low as possible?
  7. For activities that use the Obj-List method, is the MaxRecords parameter set as low as possible, consistent with application requirements?
  8. For Rule-Obj-List rules, are all the properties that are retrieved truly needed? Are all of these properties exposed as columns in the database table, rather than remaining in the Storage Stream (BLOB column)?
  9. For activities that use the Obj-List method, are the properties in the SelectionProperty parameter exposed as database columns?
  10. In list view rules, are the properties identified in the Get These Fields array all necessary to support the report display and functions? Do they correspond to exposed columns to the greatest degree possible?
  11. If JVM out-of-memory conditions occur only after extended uptime or high volumes, have activities that contain custom Java steps been tested for memory leaks? The verbose garbage collection facility of the JVM may be helpful in diagnosing memory leaks; details of use vary by JVM vendor and version.
  12. For list view reports presented to an application user, is the paging feature enabled on the Organize tab? (With most but not all databases, this reduces the number of rows retrieved.)
  13. On a multinode system, is the System Management Application installed on a separate node and application server from the nodes that support users? This affects the frequency of garbage collection.

zzzProcessor  — Performance checklist

These factors can affect processing workload.

  1. (Tomcat). Are the Connector settings (such as maxProcessors, minProcessors, and AcceptCounts) in the server.xml file appropriate for the scale of usage? See PDNPega Developer Network article PRKB-10522 How to configure the Tomcat server.xml file, which describes additional settings that may affect performance under Tomcat.
  2. Is a single specific activity or user interaction a major source of long response times? Use the interactionTimeThreshold setting in the prconfig.xml file to isolate server interactions that are much longer than others. See How to monitor interactive response time.
  3. (WebLogic). Is the value for parameter servlet-reload-check-secs (in the weblogic.xml file) appropriate? See Pega Developer Network article PDNPRKB-18356 Troubleshooting: "java.lang.UnsatisfiedLinkError.NativeLibrary" in WebLogic.
  4. For list view rules, has sorting of rows by the database software (defined on the Content tab) been used to the greatest extent possible, and sorting within the clipboard (defined on the Organize tab) minimized when possible?
  5. In a production setting, are debugging lines written to the system log (through olog() calls, Log-Message method calls, and appender settings) commented out or turned off the maximum practical extent?
  6. Are settings in the prlogging.xml file all useful and necessary, or are they set too low, resulting in numerous useless log messages?

  7. In a production setting, is the number of distinct RuleSet lists in use minimized? Tactic to reduce this (and so reduce rules assembly processing) including turning off check-out for operators who do not need it, and consolidating access groups and application rules.
  8. Are wake-up intervals for agents (set in the Schedule tab of the Agent Schedule form) set too low? Each wake-up requires processing resources, but is not productive if the agent often wakes up to discover that it has nothing to do. Choose a value low enough to meet peak business throughput needs but high enough to avoid useless cycling.
  9. If the application uses many agents that are often active, the size of the requestor pool for BATCH agents is important. You can increase, or decrease, this value in the prconfig.xml file to affect the relative system resources for background versus foreground processing. See More about Agent Schedule data instances.
  10. If a server node has two or more CPUs, setting the JVM to perform background or parallel garbage collection may improve response performance. The specific settings differ by JVM version and vendor.

zzzPegaRULES database and disk storage — Performance checklist

These database and storage factors can affect performance:

  1. Does the PegaRULES database size meet the minimum presented in the Installation Guide of 1 Gigabyte?
  2. Is there ample free disk space on the device that contains generated Java code and compiled Java code? (The device and directories are specified in two System Settings data instances.)
  3. Is there ample free disk space on the device that contains Tomcat (or the chosen application server) log files?
  4. Does the disk that supports Tomcat or your other application server need defragmentation? Defragmenting before Process Commander installation is recommended, but will be helpful when done later periodically.
  5. Have pooled connections to the database been configured? Is the number of pooled connections high enough to support the database traffic, counting agents and listeners as well as online users? Is the number of connections in use too high, so that processing bottlenecks occur within the database operation?
  6. For heavily performed database searches, does the application call the standard activity Rule-Obj-ListView.ShowView rather than the Obj-List method? This typically offers superior performance.
  7. For activities that use the Obj-List method, is the MaxRecords parameter set as low as possible, consistent with application requirements? (This affects both database and memory performance.)
  8. For activities that use the Obj-List method, are only the properties truly needed retrieved? Are these properties exposed as columns in the database table, rather than part of the Storage Stream (BLOB column)? (This affects both database and memory performance.)
  9. If your application uses the RDB-List method to access the PegaRULES database, are the guidelines above for Obj-List regarding maximum row counts, exposed columns and truly needed properties followed?
  10. For summary view and list view reports, are the Maximum Value values (on the Content tab) set as low as possible?
  11. If a specific user interaction — for example, choosing a certain flow action — causes all or most rows of an entire table to be scanned, can performance be improved through a database index?
  12. If the application includes a custom worklist, are all properties that appear in the worklist exposed as columns in the corresponding database table?
  13. In a production setting, is the pr_other table empty, or at worst are only static, low-volume classes mapped to the pr_other table? Because this table is a last resort for table mapping with very few properties exposed, do not use this table to store instances of classes that have high turnover, or many rows.
  14. In a production setting, are the pr_data and pr_history tables empty, or at worst do they contain only a modest number of low-turnover, infrequently accessed rows? Because these tables have only a few properties exposed, do not use these tables to hold saved instances of classes that have high turnover or many rows.
  15. When the Dynamic Select control is used, is caching of the results enabled where feasible?
  16. Is the batchUpdates feature enabled to improve performance of insert, update, and delete operations, especially in bulk processing? See Commit method for details.
  17. For PegaRULES databases supported by Oracle 10, is database caching enabled for those tables with smaller average BLOB sizes? By default, such caching is usually disabled, but enabling caching for assignment tables, work tables, and history tables may improve response.

zzzWorkstations— Performance checklist

These performance items refer to user workstations.

  1. Does each user workstation meet the minimum processor and memory meet requirements (800 MHz processor, 256 megabytes of RAM memory).
  2. Is Internet Explorer caching enabled? Is the cache size adequate? Does the disk that holds cache files have adequate free space, and have adequate performance?
  3. If the workstation accesses two or more Process Commander systems (which may have different software versions), are the latest versions of all Process Commander ActiveX controls installed? (Some application users may not need these controls; others may need only a certain ones depending on the nature of their Process Commander use.)

zzzBandwidth— Performance checklist

Network bandwidth for HTTP traffic can affect performance. Check these items:

  1. Is Internet Explorer caching enabled (and the cache size adequate) in each user workstation?
  2. Is HTTP compression enabled?
  3. In a production setting, have the HTTP expiration periods for images, CSS files, and JavaScript files been overridden? The expiration period dictates how often the server is checked for updated content, an expensive operation. The default value is once per day for most types of content. Low values are appropriate in a development setting, but higher values are typical in production settings.
  4. If work object forms contain large, data-rich sections that are only needed a fraction of the time, are the sections on the harness rule initially collapsed and marked for deferred load, so the section HTML code is only sent to the workstation when explicitly requested?
  5. When a Dynamic Select controls is used, is a limit configured for how many values are presented? Can the limit be lowered?

Resources

The Performance tool can help isolate performance issues for a single workflow. Use it during the development cycle — not just near the end — to monitor performance throughout the development phase.

The DB Trace facility is useful when examining database activity and performance.

The Alert log can identify SQL statements that require unusually long times to complete, long-running services and connectors, and HTTP messages with a large payload.

PDNSee also these Pega Developer Network knowledge base articles:

Definitions Alert log, Dynamic Select control, Pega log, prlogging.xml file
Related topics About the Performance tool
How to monitor Storage Stream operations
How to monitor interactive response time
How to detect lengthy PegaRULES database operations
How to detect lengthy service operations
How to set up Internet Explorer 6
How to set up Internet Explorer 7
Understanding caching in Process Commander

zzz Troubleshooting