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.
Show
all
Scope
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.
Clarifying
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.
Memory
— Performance checklist
These items involve real memory on the server (RAM), virtual memory
on the server, and JVM memory.
- 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?
- 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).
- 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?
- Is the Pega-RULES agent running regularly? Is the
SystemCleaner thread of the Pega-RULES
agent enabled?
- 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?
- 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? SR-1396
- For activities that use the Obj-List method, is the
MaxRecords parameter set as low as possible,
consistent with application requirements? SR-939
- 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)?
- For activities that use the Obj-List method, are the properties
in the SelectionProperty parameter exposed as
database columns?
- 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?
- 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.
- 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.)
- 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.
Processor
— Performance checklist
These factors can affect processing workload.
- (Tomcat). Are the Connector settings (such as
maxProcessors
, minProcessors
, and
AcceptCounts
) in the server.xml
file
appropriate for the scale of usage? See Pega Developer Network article PRKB-10522 How to
configure the Tomcat server.xml file, which describes
additional settings that may affect performance under Tomcat.
F-19
- 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.
- (WebLogic). Is the value for parameter
servlet-reload-check-secs
(in the
weblogic.xml
file) appropriate? SR-245 SR-269
See Pega Developer Network article PRKB-18356 Troubleshooting:
"java.lang.UnsatisfiedLinkError.NativeLibrary" in
WebLogic.
- 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?
- 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?
-
Are settings in the prlogging.xml
file all
useful and necessary, or are they set too low, resulting in
numerous useless log messages?
- 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.
- 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.
SR-3487
- 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.
- 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. CLINIC 9/1/06
PegaRULES database
and disk storage — Performance checklist
These database and storage factors can affect performance:
- Does the PegaRULES database size meet the minimum presented in
the Installation Guide of 1 Gigabyte?
- 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.)
- Is there ample free disk space on the device that contains
Tomcat (or the chosen application server) log files?
- 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.
- 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?
SR-4475 Is the number of connections in use too high, so
that processing bottlenecks occur within the database
operation?
- 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.
- 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.)
- 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.)
- 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?
- For summary view and list view reports, are the Maximum
Value values (on the Content
tab) set as low as possible?
- 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?
- If the application includes a custom worklist, are all
properties that appear in the worklist exposed as columns in the
corresponding database table?
- 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.
- 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. FITZI 9/21/06 webinar
- When the Dynamic Select control is used, is caching of the
results enabled where feasible?
- Is the
batchUpdates
feature enabled to improve
performance of insert, update, and delete operations, especially in
bulk processing? See Commit method for details.
PROJ-545
- 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. CLINIC 8/4/06
Workstations — Performance
checklist
These performance items refer to user workstations.
- Does each user workstation meet the minimum processor and
memory meet requirements (800 MHz processor, 256 megabytes of RAM
memory). Where is this stated?
- 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?
- 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.)
Bandwidth — Performance checklist
Network bandwidth for HTTP traffic can affect performance. Check
these items:
- Is Internet Explorer caching enabled (and the cache size
adequate) in each user workstation?
- Is HTTP compression enabled?
- 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. VAGUE HOW and WHERE TO SET?
- 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?
- 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.
See also these Pega Developer Network knowledge base
articles:
- PRKB-23116 How to detect and remedy the performance impact
of Obj-List methods and list view reports
- PRKB-21028 Best JVM setting depend on vendor, version, and
other factors
- PRKB-23154 Tuning the IBM JVM 1.4.2 for performance
- PRKB-24141 Tuning the Sun JVM 1.4.2 and 5.0 for
performance
Troubleshooting